【发布时间】:2018-11-07 13:08:28
【问题描述】:
在我的项目中,我有一个微控制器,我需要查询固定数量的数据。 MCU是和STM32,我的GUI应用是基于Qt框架的。
微控制器中有一个 16 位数据的缓冲区,该缓冲区被一些数据填充。我是这样定义的:
uint16_t buffer[0xFFFF] = { 0 };
在 micro 中一切正常,调试器显示缓冲区在某些操作/计算阶段后包含正确的数据。
但现在我需要使用串行端口将此缓冲区传输到 PC。我的问题是,确保在我的 GUI 应用程序中正确获取此缓冲区的每个数据的正确方法是什么?
这应该尽可能快(波特率为 115200)并且尽可能安全,例如所有 65536 元素都应该以正确的顺序传输到 PC 中(从中绘制波形)。
那么,我应该如何处理呢?例如:
- 我需要同步还是异步连接?
- 我是否应该一个一个地发送每个元素并等待来自 PC 的 ACK 以进行下一次传输?
- 如何在突发模式下实现?
- 我是否需要制作一种数据包,例如6字节
- _START_BYTE_。 _COUNTER_H_ 。 _COUNTER_L_ 。 _DATA_H_。 _DATA_L_ 。 _END_BYTE_
我不是要代码(但我很感激)。我很想知道最好的方法!
【问题讨论】:
-
请注意,说你想要尽可能快和安全是没有意义的。您需要选择一个更重要的,因为解决方案可能会因您的选择而异。
-
您确定要在微控制器上设置 65535 个元素的缓冲区大小吗??
-
@A.R.C.好吧,当它有 1mb ram 时,我认为没问题!
-
对这种类型的接口采用分组方法总是一个好主意。无论如何,您必须以某种方式建立缓冲区启动。我的偏好是开始指示符、长度和某种校验和。如果长度总是已知/固定的,则跳过它。
-
@DEKKER 1mb ram 好的,您使用的是哪种型号?
标签: c serial-port embedded microcontroller