tao_z
2022-05-29 ada7b40da88974c6f4596c7c9d1317eb19095a0e
USBCAN.py
@@ -6,7 +6,7 @@
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
@@ -369,13 +369,13 @@
        # 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,
@@ -412,26 +412,23 @@
            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
@@ -440,3 +437,4 @@
                        msgQueue.put(revRet[i])
                        self.logger.info(
                            "received can message.it't id is:{}".format(str(revRet[i].arbitration_id)))
                time.sleep(0.05)