树莓派独立于UART

2次浏览(过去30天)
达伦DeBattista
达伦DeBattista 2021年6月11日
编辑: 达伦DeBattista2021年6月11日
你好,
我有一个应用程序,我使用Pi 2通过UART与MCU通信来执行一些测试。我已经构建了一个脚本来测试设置,一切正常。然后,我按照“开始在树莓派硬件上部署MATLAB函数”中的示例修改脚本,以便能够生成在Pi 2上单独使用的代码。
当我从桌面上运行脚本时(使用Pi 2的UART,硬件在循环中),一切正常。从那里,我部署函数和matlab告诉我它的成功,没有错误。问题是串行“读取”函数不能独立工作,它返回的值为“0”。我正在使用以下语法来解决这个问题。
请注意,在最后,我保存在Pi 2上的一个文件中,以便检查数据。为了确保读取值,我设置了一个“if”条件,并根据接收到的数据是否为0保存0或1。
有人能帮忙吗?
谢谢
编辑:不工作的读函数为连续3个读函数。我现在还试图计时这些函数的执行,把'tic'放在第一个函数之前,把'toc'读在第三个函数之后,并把时间打印在Pi 2的文件中。时间在300us左右。考虑到我设置了10秒的超时,这意味着三个读取函数以某种方式被跳过。
创建树莓派对象
Rpi = raspi();
创建串行对象
sObject = serialdev(rpi,“/ dev / serial0”, 38400);
sObject。超时= 10;
STR = [“$ SMV:”“4””,F,”“15”‘*’CR_NL);% create string命令用于测试
写(sObject str,“uint8”);% send命令用于测试
读取回复直到终止字符。自动丢弃数据
C = uint8(1);
C ~= 10
c = read(sObject,1);
结束
%的停顿
暂停(0.1);
%另一个测试命令
STR = [“塞:美元”num2str (2)‘*’, 13, 10];% 13,10表示“\r \n”
写(sObject str,“uint8”);
读取回复直到终止字符。自动丢弃数据
C = uint8(1);
C ~= 10
c = read(sObject,1);
结束
%给出启动命令:MCU现在将连续传输数据
STR = [人口、难民和移民事务局:美元的“4””、““100””、“num2str (1)‘*’, 13, 10];% 13,10表示“\r \n”
写(sObject str,“uint8”);
暂停(0.2);
v = read(sObject, 1,“int16”);
cc = read(sObject, 1,“int16”);
w = read(sObject, 1,“int32”);
暂停(1);
%停止测试
STR = [“$ SMP:”“4”‘*’, 13, 10];
写(sObject str,“uint8”);
文件名=“motor_data.csv”
fileID = fopen(文件名,“w +”);
如果(v = 0)
流(文件标识,' % d 'int16 (0));
其他的
流(文件标识,' % d ', int16 (1));
结束

答案(0)

类别

了解更多树莓派硬件的M万博1manbetxATLAB支持包帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!