使用串口通信从Arduino读取流数据
这个例子展示了如何启用回调从Arduino读取流ASCII终止数据®
由于使用串口
接口。
在Arduino上加载程序
由于你的电脑,插入Arduino。
使用Arduino IDE在Arduino Due上加载以下程序。这个程序写出正弦波的连续点,后面跟着“回车”和“换行”终止符。
将正弦波点写入串口,后面跟着回车符和换行结束符。*/ int = 0;//当你按下reset: void setup(){//以每秒9600位的速度初始化串行通信:serial .begin(9600);} //循环例程永远重复运行:void loop(){//写入正弦波点,后面跟着结束符"回车"和"换行"。并同时罪(我* 50.0/360.0));Serial.write (13);Serial.write (10);I += 1;}
与Arduino建立连接
创建一个串口
实例连接到Arduino Due。
找到Arduino连接的串口。您可以从Arduino IDE识别端口。
serialportlist (“可用”)”
ans =3×1的字符串" com1 " " com3 " " com13 "
连接到Arduino Due通过创建一个串口
对象使用Arduino代码中指定的端口和波特率。
arduinoObj =串口(“COM13”, 9600)
arduinoObj = Serialport with properties Port: "COM13" BaudRate: 9600 NumBytesAvailable: 0 NumBytesWritten: 0显示所有属性
准备串口
对象启动数据流
配置串口
通过清除旧数据并配置其属性。
设置《终结者》
属性来匹配您在Arduino代码中指定的终止符。
configureTerminator (arduinoObj“CR / LF”);
冲串口
对象删除任何旧数据。
冲洗(arduinoObj);
准备用户数据
属性来存储Arduino数据。的数据
字段保存正弦波值和数
字段保存正弦波的x轴值。
arduinoObj。用户数据= struct(“数据”[],“数”, 1)
arduinoObj = Serialport with properties Port: "COM13" BaudRate: 9600 NumBytesAvailable: 10626 NumBytesWritten: 0显示所有属性
创建回调函数readSineWaveData
读取前1000个ASCII终止的正弦波数据点并绘制结果。
函数readSineWaveData (src, ~)从serialport对象中读取ASCII数据。数据= readline(src);将字符串数据转换为数字类型并保存在UserData中serialport对象的属性。src.UserData.Data(end+1) = str2double(data);更新serialport对象的Count值。src.UserData.Count = src.UserData.Count + 1;如果Arduino已收集到1001个数据点,则关闭%回调并绘制数据。如果src. userdata . count > 1001 configureCallback(src,“关闭”);情节(src.UserData.Data(2:结束));结束结束
设置BytesAvailableFcnMode
财产归"《终结者》
“而且BytesAvailableFcn
财产@readSineWaveData
.回调函数readSineWaveData
当可以从Arduino读取新的正弦波数据(带终止符)时触发。
configureCallback (arduinoObj“终结者”, @readSineWaveData);
回调函数打开MATLAB®
带有前1000个正弦波数据点的图形窗口。