matlab - 如何格式化从 MATLAB 中的串口读取的数据?

标签 matlab serial-port

我正在尝试通过 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/

相关文章:

matlab - 对象方法中的自引用

c# - 作为约束 Delaunay 三角剖分的结果识别出多边形三角剖分

string - 使用 Matlab Coder 的 C++ 兼容函数将整数转换为字符串

c - Linux - 与 C 的多串口通信

java - Windows10 jssc.SerialPortException : openPort(); Exception type - Port busy

c# - 通过串口发送数据

c++ - 如何通过串行发送 float

image - Matlab:从文件夹中读取图像不会按顺序返回文件名

image - Radon Transform 跨图像对角线后的伪影?

boost - 使用 boost asio 读取串口中的所有可用数据