我有一个应用程序需要从COM端口快速读取数据。数据以8字节封装的10kHz(1.25MBaud)到达。因此,数据捕获(从COM端口缓冲区获取数据)和处理必须尽可能快。我认为我的代码已经过优化,但有时候我仍然会丢失一些数据包,因为串行缓冲区会溢出。因此,我想到将pyserial包(或至少我使用的部分)移植到Cython。
是否可以将pyserial包移植到Cython?更重要的是:如果代码是用Cython编写的话会有提速吗?还有其他可能更简单的方法来改善性能吗?
答案 0 :(得分:1)
令人怀疑的移植可以解决您遇到的问题。使用UART的问题是为操作数据提供的操作系统提供的缓冲区相对较小。
作为替代方案,您可以尝试使用其中一个以太网/串行转换器,以允许通过以太网端口进行串行I / O.这种方法的优点是使用网络驱动程序更大的缓冲区。
如果您的应用程序无法以其到达的速率轻松获取数据,那么任何缓冲区都无济于事。在这种情况下,如果您无法接受丢包,则应尝试降低数据速率。