delphi - 串口连接超过6个设备有限制吗?

标签 delphi serial-port hardware

我有一个使用 Rocketport Infinity 16 ports 的项目从6个不同的anemometers接收数据(风速测量设备)(RS422,50Hz,38.4k 波特,每条记录 47 字节)。当我使用 32Hz 和 9600 波特时,一切正常,但是,当我更改为 50Hz 时,某些数据未收到。我尝试使用 USB 代替 Rocketport Infinity,但没有成功。

因此,除了风速计出现故障​​之外,我怀疑数据丢失的原因如下:

  1. 对于 Rocketport Infinity,我打开了所有 16 个端口,但只连接了其中 6 个,我怀疑当我切换到 50Hz 时最大数据吞吐量太高。

  2. IRQ 切换速度太快,导致 com 端口无法正常运行。

还有其他可能的原因吗?如果我错了,请纠正我。

Receiver开发环境:Windows XP Professional 32位版本的Delphi 6,CPort 3.1

最佳答案

IRQ 率并不是那么高,现代机器应该可以轻松跟上它。我怀疑真正的问题是您的应用程序处理接收到的字节的速度不够快。特别是当您的代码还在接收数据的同一线程中更新 UI 时。

很难给出具体的故障排除提示,因为您既没有指定语言也没有指定操作系统。但一定要确保错误处理正确。区分缓冲区溢出(应用程序读取速度不够快)和字符缓冲区溢出(驱动程序读取速度不够快)。在 Windows 上,这是 CE_RXOVER 和 CE_OVERRUN。

关于delphi - 串口连接超过6个设备有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891094/

相关文章:

delphi - 单元初始化顺序与源代码中所示不符

delphi - Delphi 的最佳自动更新组件

java - 如何将java中的十六进制值发送到RS232串口

language-agnostic - 围绕数字 : a hypothetical two's complement question 的硬件表示

javascript - 如何使用 JavaScript 和 Node.js 读取和显示加速度计数据(服务器端)

delphi - Delphi 同步滚动组件

mysql - 从 Delphi 到远程 MySQL 数据库的插入速度极慢

c++ - 如何通过串行端口接收 JPEG 图像

c# - 使用 C# 通过 “USB Virtual Serial Port” 与 USB 设备通信?

optimization - 运行程序的动态优化