连接超过6台设备的串口是否存在约束?

时间:2011-10-25 14:45:39

标签: 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端口无法正常运行。

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

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

2 个答案:

答案 0 :(得分:2)

IRQ率不是那么高,现代机器应该没有跟上它的麻烦。我怀疑真正的问题是你的应用程序没有足够快地处理收到的字节。特别是当您的代码也在接收数据的同一线程中更新UI时。

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

答案 1 :(得分:1)

  

超过6个设备的串行端口是否存在限制   连接?

是的,有约束。我假设您有差分输出和带差分输入的I / O接收器。请参阅Balanced differential signals。有可能超过接收器电路的最大额定电压。

每个端口速度必须与相应的设备速度匹配。请参阅必须匹配的other criterias

  

IRQ切换速度太高,com端口无法正常运行。

为什么你认为你的IRQ开关速度会出现问题? - 我会说你只有scarce个IRQ资源。