如何格式化从MATLAB串口读取的数据?
问题描述:
我试图通过MATLAB将数字传感器连接到我的电脑。如何格式化从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
应该是包含整数值的六元素的数组。如果你想在data1
这样一个值代表一个数的高8位和一个值表示最低8个比特,下面应该工作对值的组合
a = data1(1); %# Gets the first value and puts it in a
:您可以通过indexing into the array访问每个:
a = int16(data1(1)*2^8+data1(2));
上述用途data1(1)
作为高比特和data1(2)
作为低比特,然后将结果转换为一个INT16类型。您也可以将呼叫保留为INT16,只将结果保留为DOUBLE类型(其存储的值仍然是整数)。
格式说明符%s
用于读取字符串,直到遇到空格为止。格式说明符在我链接到上面的FSCANF的文档中讨论。
答
您可以使用来自MATLAB File Exchange的AJ Johnson的cstruct。这允许您指定与您的字符包对应的C语言数据结构。然后一个函数调用将字符(字节)转换为MATLAB数据类型。如果数据格式发生变化,这是快速和可维护的。
我很想知道'data1'中有什么样的例子。如果在命令窗口中键入'disp(data1)',它会显示什么? – gnovice 2009-11-24 18:36:21