我目前正在使用 Popen 通过命令行向实用程序(尤其canutils
是cansend
函数)发送指令。
整个函数看起来像这样。
def _CANSend(self, register, value, readWrite = 'write'):
"""send a CAN frame"""
queue=self.CANbus.queue
cobID = hex(0x600 + self.nodeID) #assign nodeID
indexByteLow,indexByteHigh,indexByteHigher,indexByteHighest = _bytes(register['index'], register['objectDataType'])
subIndex = hex(register['subindex'])
valueByteLow,valueByteHigh,valueByteHigher,valueByteHighest = _bytes(value, register['objectDataType'])
io = hex(COMMAND_SPECIFIER[readWrite])
frame = ["cansend", self.formattedCANBus, "-i", cobID, io, indexByteLow, indexByteHigh, subIndex, valueByteLow, valueByteHigh, valueByteHigher, valueByteHighest, "0x00"]
Popen(frame,stdout=PIPE)
a=queue.get()
queue.task_done()
return a
我在尝试Popen
快速连续发送帧(帧实际上执行发送帧的命令)时遇到了一些问题,但发现 Popen 行需要大约 35 毫秒的时间来执行......每个另一条线不到2我们。
那么......什么可能是调用cansend
函数的更好方法(再次,它是canutils
实用程序的一部分......_CANSend
是上面调用的python函数)更快?