From ada7b40da88974c6f4596c7c9d1317eb19095a0e Mon Sep 17 00:00:00 2001 From: tao_z <tzj0429@163.com> Date: Sun, 29 May 2022 23:26:03 +0800 Subject: [PATCH] 新增bootloader界面以及函数 --- USBCAN.py | 54 ++++++++++++++++++++++++++---------------------------- 1 files changed, 26 insertions(+), 28 deletions(-) diff --git a/USBCAN.py b/USBCAN.py index 680ce3e..89eebe0 100644 --- a/USBCAN.py +++ b/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) -- Gitblit v1.8.0