matlab和单片机串口通信矩阵传输 40C

各位大神,小弟在进行matlab与aduino的串口通信,暂时只会打开串口串行输入输出数据的方法,一个一个数字传送,只能接收到一个一维数组,还需要对其进行拆分换行操作,

请问存在能方便快捷地将多维矩阵直接传送过去的方法吗?
目前还没有找到答案

4个回答

小弟在进行matlab与aduino的串口通信,暂时只会打开串口传输命令的方法,
如下
global a;
a = serial('COM3');
set(a,'BaudRate',9600); %设置波特率
set(a,'DataBits',8); %8位数据位
set(a,'StopBits',1); %1位停止位
fopen(a);
fprintf(a,'1');
clear a;
请问有能方便快捷地将几个二维矩阵传送过去的方法吗?
目前还没有找到答案

可以将二维矩阵写入类似结构体中,一维对应结构体成员,每个成员又是一个数组,例如
struct Trans{
int row1[5] = {0x01,0x02,0x03,0x04,0x05};
int row2[5] = {.....................}
int row3[5] = {......................}
};这样讲你的 3*5的数据放入结构体,然后将这个结构体转换成一个 const char*的指针,传数据时,就像发送一个个一维的数组一样传过去。
接收到数据 之后先用一个一维数组arry[15]存下 3*5的数据,然后在 强制转换成 struc Trans * 类型。如 sturct Trans *data = (struct Trans *)arry;
这样就可以索引你的 data.row1[n]任意一个元数了。不过重点是 串行通信 只能一个字节 一个字节传输数据。希望对你有用

可以把波特率调高些,提高传输速率
另外,你可以尝试用网络通信的方式,这个我没有研究过,matlab可以用串口通信,应该也是支持http ftp socket通信的(仅供参考)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问