Matlab中的Tinkerforge RS485回调

问题描述

我想在matlab中实现Tinkerforge ReadCallback函数,以记录来自具有四个从属的RS485Bricklets的更改。我能够建立IP连接,并且如果我通过Brickviewer向Bricklet输入值,则可以在matlab中接收到它,但是如果没有手动输入,我将无法通过Callback函数自动接收值。

clc
clear all

global data

    
    import com.tinkerforge.IPConnection;
    import com.tinkerforge.BrickletRS485;
    import java.lang.String;

    HOST = 'localhost';
    PORT = 4223;
    UID = 'DKf'; % Change XYZ to the UID of your RS485 Bricklet

    input('Press key to start\n','s');
    
    ipcon = IPConnection(); % Create IP connection
    rs485 = handle(BrickletRS485(UID,ipcon),'CallbackProperties'); % Create device object

    ipcon.connect(HOST,PORT); % Connect to brickd
    % Don't use device before ipcon is connected

     % Set Mode to RS485
    rs485.setMode(BrickletRS485.MODE_RS485);
    
    % Configure RS485Bricklet
    rs485.setRS485Configuration(9600,BrickletRS485.PARITY_EVEN,...
                                BrickletRS485.STOPBITS_1,BrickletRS485.WORDLENGTH_7,...
                                BrickletRS485.DUPLEX_HALF);                        
                     
    % Register read callback to function cb_read
    set(rs485,'ReadCallback',@(h,e)cb_read(e));
    
    % Enable read callback
    rs485.enableReadCallback();
    
   % Write "ASCII" string (Adresse und Befehl)  
   rs485.write(String(':9003015E00020C\r\n').tochararray()); %sWA 144
    
   rs485.write(String(':8E03015E00020E\r\n').tochararray()); %sWB 142
   
   rs485.write(String(':8D03015E00020F\r\n').tochararray()); %sWC 141
    
   rs485.write(String(':8F03015E00020D\r\n').tochararray()); %sWD 143
    
    input('Press key to exit\n','s');
    ipcon.disconnect();
    

% Callback function for read callback
function cb_read(e)
    global data

    tmp_t = Now;
    fprintf('test \n');
    fprintf('Message: "%s"\n',e.message);
    
    B = convertCharsToStrings(e.message);
    C = [tmp_t; B];
    data = [data,C];       
    
end

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)