현재 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
I 프레임을 보내려고 나는이 몇 가지 문제로 실행중인
이는 popen 라인의 순서 어딘가에 복용 것을 연속으로 빠르게합니다 (Popen
프레임 실제로 프레임을 전송하는 명령을 실행), 그러나 발견 실행하려면 35 밀리언 ... 한 줄 걸러 줄었습니다.
cansend
함수를 호출하는 더 좋은 방법은 무엇입니까? (canutils
유틸리티의 일부입니다 ... _CANSend
은 위의 파이썬 함수보다 더 빠르게 호출됩니다)?
3.3 이전의 Python 버전에서 ['python-can'] (http://python-can.readthedocs.org/en/latest/)을 사용해 보셨습니까? – jfs