一个Python程序需要每秒从串口接收一个字符串。我计划使用RS-232转USB转换器。该应用程序将在Ubuntu 10.04下运行。我该如何处理?我使用pySerial还是libusb?同时需要进行一些处理,因此同步通信不可行。我使用某种类型的中断还是需要打开单独的线程?或者我使用阻塞读取,相信1秒对我的计算足够了(现在已经足够了)?我知道,RTFM,但从一开始就朝着正确的方向前进会节省我很多时间!感谢您的耐心。
如果您的RS232-USB转换器在Ubuntu中有一个驱动程序,使其看起来像一个COM端口,那么您将想要使用pySerial(界面与任何其他COM端口相同)。如果您的设备没有驱动程序,那么您可能需要使用libusb并找到特定设备的协议。现在大多数主要的RS232-USB转换器都有基于usbserial的驱动程序,这些驱动程序已经在Linux内核中得到维护和支持。只需向您的供应商查询即可。有许多方法可以进行并行处理,但通常我会以两种方式编写我的应用程序:1. 有一个读取线程,什么也不做,只是读取并填充本地线程安全缓冲区,以便数据在需要时为其他线程准备好。2. 有一个读取线程,读取数据,确定它去哪里,并通过消息/事件处理将其传递给需要它的组件。这里的决策将取决于您的目标以及读取外部处理所需的处理量。