我正在尝试通过MATLAB将数字传感器连接到我的电脑。
我首先向传感器发送数据请求,然后传感器回复六字节流。
MATLAB读取传感器:
data1 = fscanf(obj1, '%c', 6);
我确切知道数据的内容应该是什么,但我不知道如何读取MATLAB生成的数据包中的数据。
数据包(data1
)只是6个字节,但如何以整数形式访问每个元素?
我之前从未接触过MATLAB编程,所以我有点迷失。
附带问题: MATLAB的数据格式%c
,%s
,%c\n
和%s\n
是什么意思?我试着寻找它,但我找不到任何东西。
答案 0 :(得分:4)
格式说明符%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文档中讨论。
答案 1 :(得分:0)
你可以使用来自MATLAB File Exchange的AJ Johnson的cstruct。这允许您指定与您的字符包对应的C语言数据结构。然后,一个函数调用将字符(字节)转换为MATLAB数据类型。如果数据格式发生变化,这是快速且可维护的。