Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何格式化从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应该是包含整数值的六元素数组。您可以通过索引数组来访问每个数组

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文档中讨论了格式说明符。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 00:56


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.