Delphi 连接6个以上设备的串行端口是否有限制?
我有一个项目,用于接收来自6个不同(风速测量设备)的数据(RS422,50Hz,38.4k波特,每条记录47字节)。当我使用32Hz和9600波特时,一切正常,但是,当我改为50Hz时,一些数据没有收到。我尝试使用USB而不是火箭港无限,但运气不好 因此,除了风速计故障外,我怀疑数据丢失的原因如下:Delphi 连接6个以上设备的串行端口是否有限制?,delphi,serial-port,hardware,Delphi,Serial Port,Hardware,我有一个项目,用于接收来自6个不同(风速测量设备)的数据(RS422,50Hz,38.4k波特,每条记录47字节)。当我使用32Hz和9600波特时,一切正常,但是,当我改为50Hz时,一些数据没有收到。我尝试使用USB而不是火箭港无限,但运气不好 因此,除了风速计故障外,我怀疑数据丢失的原因如下: 对于Rocketport Infinity,我打开了所有16个端口,但只连接了其中的6个,我怀疑当我切换到50Hz时,最大数据吞吐量太高了 IRQ交换机速度过高,com端口无法正常工作 还有其他可能
为什么你认为你的IRQ开关速度会有问题我想说的是,你只有IRQ资源。IRQ率没有那么高,现代机器应该很容易跟上它。我怀疑真正的问题是你的应用程序处理收到的字节不够快。尤其是当您的代码还更新接收数据的同一线程中的UI时
很难给出具体的故障排除提示,因为您既没有指定语言也没有指定操作系统。但一定要正确处理错误。区分缓冲区溢出(应用程序读取速度不够快)和字符缓冲区溢出(驱动程序读取速度不够快)。在Windows上,这是CE_RXOVER和CE_over。这个问题没有得到太多关注,部分原因是它的英语不好,因此很难理解。我试图把它说得更清楚,但我自己并没有完全理解,所以请检查一下你的意思没有丢失。祝你好运。操作系统,Linux?Windows?事实上,有一个接收器是delphi用CPort 3.1()开发的插件,我会看一下源代码,谢谢你的建议。同意,某个地方的缓冲区可能溢出。Windows我猜既然你说了delphi,那么Windows就是了。谢谢Masi,所有设备都是直接连接的,但没有共享电线,直到它到达火箭港。我会让我的同事用示波器检查线路。