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