我目前使用POPEN發送指令給一個實用程序(canutils
......特別是cansend
功能)通過命令行。用於CAN總線訪問的Popen更快的替代方案?
整個函數看起來是這樣的。
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 us。
那麼...什麼可能是更好的方式來調用cansend
函數(這又是canutils
實用程序的一部分... _CANSend
是上面調用的python函數)更快?
你嘗試過在Python版本['蟒蛇-can'(http://python-can.readthedocs.org/en/latest/)3.3之前? – jfs 2014-04-05 20:27:27