我正在尝试通过 MATLAB 将数字传感器连接到我的计算机。
我首先向传感器发送数据请求,然后传感器用六字节流回复。
MATLAB 像这样读取传感器:
data1 = fscanf(obj1, '%c', 6);
我确切地知道数据的内容应该是什么,但我不知道如何读取 MATLAB 生成的数据包中的数据。
数据包 (data1
) 只有 6 个字节,但我如何访问每个单独的元素作为整数?
我以前从未接触过 MATLAB 编程,所以我有点迷茫。
附带问题:MATLAB 的数据格式%c
、%s
、%c\n
、和 %s\n
是什么意思?我尝试搜索它,但找不到任何东西。
最佳答案
格式说明符%c
表示FSCANF正在读六个字符。您应该能够使用 DOUBLE 将这些字符转换为整数值功能:
data1 = double(data1);
现在 data1
应该是一个包含整数值的六元素数组。您可以通过 indexing into the array 访问每个:
a = data1(1); %# Gets the first value and puts it in a
如果您想组合 data1
中的成对值,使一个值代表数字的最高 8 位,一个值代表数字的最低 8 位,则应执行以下操作:
a = int16(data1(1)*2^8+data1(2));
上面使用data1(1)
作为高位,data1(2)
作为低位,然后将结果转换为INT16。类型。您也可以停止对 INT16 的调用,只将结果保留为 DOUBLE 类型(它存储的值仍将是一个整数)。
格式说明符 %s
用于读取一串字符,直到遇到空格。我在上面链接的 FSCANF 文档中讨论了格式说明符。
关于matlab - 如何格式化从 MATLAB 中的串口读取的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791811/