问题描述
我想在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 (将#修改为@)