【发布时间】:2013-05-05 01:23:41
【问题描述】:
我目前正在使用 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 us。
那么...有什么更好的方法可以更快地调用cansend 函数(同样,它是canutils 实用程序的一部分..._CANSend 是上面调用的python 函数)?
【问题讨论】:
-
你在 Python 3.3 之前的版本上试过
python-can吗?
标签: python linux popen can-bus socketcan