| | |
| | | import logging |
| | | from can import BusABC, Message |
| | | import time |
| | | from multiprocessing import Queue, Value |
| | | from multiprocessing import Queue, Value, Pipe |
| | | |
| | | USBCAN_DEVICE_TYPE = c_uint |
| | | |
| | |
| | | # extern_flag = 1 if msg.is_extended_id else 0 |
| | | # extern_flag = 0 |
| | | raw_message = VCI_CAN_OBJ() |
| | | raw_message.ID = msg.arbitration_id |
| | | raw_message.TimeStamp = 0 |
| | | raw_message.TimeFlag = 0 |
| | | raw_message.SendType = 1 |
| | | raw_message.RemoteFlag = msg.is_remote_frame |
| | | raw_message.ExternFlag = msg.is_extended_id |
| | | raw_message.DataLen = msg.dlc |
| | | raw_message.ID = (c_uint)(msg.arbitration_id) |
| | | raw_message.TimeStamp = (c_uint)(0) |
| | | raw_message.TimeFlag = (c_ubyte)(0) |
| | | raw_message.SendType = (c_ubyte)(1) |
| | | raw_message.RemoteFlag = (c_ubyte)(msg.is_remote_frame) |
| | | raw_message.ExternFlag = (c_ubyte)(msg.is_extended_id) |
| | | raw_message.DataLen = (c_ubyte)(msg.dlc) |
| | | raw_message.Data = (c_ubyte * 8)(* [c_ubyte(c) for c in msg.data]) |
| | | |
| | | # (msg.arbitration_id, 0, 0, 1, msg.is_remote_frame, |
| | |
| | | needClose {Value} -- disconnect when needed |
| | | msgQueue {Queue} -- received data |
| | | ''' |
| | | loopCnt = 0 |
| | | while connectRet.value == 1: |
| | | # print(connectRet.value, needClose.value, start.value) |
| | | if needClose.value == 1: |
| | | ret = self.CloseDevice() |
| | | if ret == 1: |
| | | needClose.value = 0 |
| | | connectRet.value = 0 |
| | | return |
| | | msgToSendCnt = sendQueue.qsize() |
| | | if msgToSendCnt > 0: |
| | | msg = Message() |
| | | for i in range(msgToSendCnt): |
| | | msg = sendQueue.get() |
| | | self.send(msg, 1) |
| | | time.sleep(0.001) |
| | | loopCnt += 1 |
| | | if loopCnt >= 15: |
| | | loopCnt = 0 |
| | | # restNum = self.GetReceiveNum() if self.GetReceiveNum() <= 10 else 10 |
| | | while True: |
| | | while connectRet.value == 1: |
| | | # print(connectRet.value, needClose.value, start.value) |
| | | if needClose.value == 1: |
| | | ret = self.CloseDevice() |
| | | if ret == 1: |
| | | needClose.value = 0 |
| | | connectRet.value = 0 |
| | | return |
| | | # msgToSendCnt = sendQueue.qsize() |
| | | # if msgToSendCnt > 0: |
| | | # msg = Message() |
| | | # for i in range(msgToSendCnt): |
| | | # msg = sendQueue.get() |
| | | # self.send(msg, 1) |
| | | # time.sleep(0.001) |
| | | # loopCnt += 1 |
| | | revRet, num = self.Receive(len=10) |
| | | if num == 0: |
| | | pass |
| | |
| | | msgQueue.put(revRet[i]) |
| | | self.logger.info( |
| | | "received can message.it't id is:{}".format(str(revRet[i].arbitration_id))) |
| | | time.sleep(0.05) |