1
我已经写了一个小的COM重定向和克隆python脚本,将采取物理串行端口的输入,然后将它们输出到两个虚拟串行端口(其中一个是只读的)。等待串口读取的性能?
问题是我一直注意到使用这个脚本利用了大量的CPU,大约50%,并且我发起的唯一的其他应用程序是socat来创建虚拟端口。
有什么我可能会丢失或查看,这可能会导致CPU使用率下降,而不会引入任何超时。
我正在使用基于Debian的Raspian OS的Raspberry Pi。
代码:
import serial, threading, sys
def transferData(serialIn, serialOutA, serialOutB):
data = serialIn.read(1024)
if data:
serialOutA.write(data)
serialOutB.write(data)
def main():
serialIn = serial.Serial(port = sys.argv[1], timeout=0, baudrate = 19200, parity=serial.PARITY_NONE, bytesize=serial.EIGHTBITS, stopbits=serial.STOPBITS_ONE)
serialOutA = serial.Serial(port = sys.argv[2], timeout=0, baudrate = 19200, parity=serial.PARITY_NONE, bytesize=serial.EIGHTBITS, stopbits=serial.STOPBITS_ONE)
serialOutB = serial.Serial(port = sys.argv[3], timeout=0, baudrate = 19200, parity=serial.PARITY_NONE, bytesize=serial.EIGHTBITS, stopbits=serial.STOPBITS_ONE)
while True:
transferData(serialIn, serialOutA, serialOutB)
transferData(serialOutA, serialIn, serialOutB)
if __name__ == '__main__':
main()
为什么重定向串口而不是直接连接它们?你打算解析还是注入数据? – John