V2.04 支持新的can帧协议,解决上报数据丢失的问题
This commit is contained in:
@@ -55,4 +55,9 @@
|
|||||||
2024.1.5
|
2024.1.5
|
||||||
异常判定在出错时才打印,检测时通信异常蜂鸣器响一声
|
异常判定在出错时才打印,检测时通信异常蜂鸣器响一声
|
||||||
取消一些通信日志打印
|
取消一些通信日志打印
|
||||||
|
2024.1.8
|
||||||
|
V2.04 支持新的can帧协议,解决上报数据丢失的问题
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2024-01-05 17:19:53"
|
#define BUILD_DATE "2024-01-08 10:35:57"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"build_date": "2024-01-05 17:19:53",
|
"build_date": "2024-01-08 10:35:57",
|
||||||
"hard_version": "MHPZ2_V1.00",
|
"hard_version": "MHPZ2_V1.00",
|
||||||
"private": [
|
"private": [
|
||||||
"info.json",
|
"info.json",
|
||||||
"json.lua",
|
"json.lua",
|
||||||
"prints.lua"
|
"prints.lua"
|
||||||
],
|
],
|
||||||
"soft_version": "V2.03"
|
"soft_version": "V2.04"
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
#define QT_NO_DEBUG_OUTPUT
|
#define QT_NO_DEBUG_OUTPUT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint32_t Reserve1 : 3;
|
uint32_t Reserve1 : 3;
|
||||||
@@ -20,12 +22,26 @@ typedef struct
|
|||||||
uint32_t FunClass : 6;
|
uint32_t FunClass : 6;
|
||||||
uint32_t SegFlag : 2;
|
uint32_t SegFlag : 2;
|
||||||
uint32_t SegNum : 8;
|
uint32_t SegNum : 8;
|
||||||
|
} YeCanID_st_old;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t SegNum : 8;
|
||||||
|
uint32_t Reserve0 : 2;
|
||||||
|
uint32_t ACK : 1;
|
||||||
|
uint32_t FunClass : 6;
|
||||||
|
uint32_t SegFlag : 2;
|
||||||
|
uint32_t destMACID : 5;
|
||||||
|
uint32_t srcMACID : 5;
|
||||||
|
uint32_t Reserve1 : 3;
|
||||||
} YeCanID_st;
|
} YeCanID_st;
|
||||||
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
uint32_t Exide;
|
uint32_t Exide;
|
||||||
YeCanID_st yecanid;
|
YeCanID_st yecanid;
|
||||||
|
YeCanID_st_old yecanid_old;
|
||||||
} YeCanID_un;
|
} YeCanID_un;
|
||||||
|
|
||||||
can_slave::can_slave()
|
can_slave::can_slave()
|
||||||
@@ -173,10 +189,21 @@ void can_host::recv_data_cb()
|
|||||||
if (frame_id.Exide == 0x000000)
|
if (frame_id.Exide == 0x000000)
|
||||||
return;
|
return;
|
||||||
QByteArray payload = frame.payload();
|
QByteArray payload = frame.payload();
|
||||||
uint8_t slave_addr = frame_id.yecanid.srcMACID;
|
uint8_t slave_addr;
|
||||||
uint8_t dst_addr = frame_id.yecanid.destMACID;
|
uint8_t dst_addr;
|
||||||
uint8_t seg_flag = frame_id.yecanid.SegFlag;
|
uint8_t seg_flag;
|
||||||
int seg_num = frame_id.yecanid.SegNum;
|
int seg_num;
|
||||||
|
if(frame_id.yecanid.Reserve0==0){
|
||||||
|
slave_addr = frame_id.yecanid_old.srcMACID;
|
||||||
|
dst_addr = frame_id.yecanid_old.destMACID;
|
||||||
|
seg_flag = frame_id.yecanid_old.SegFlag;
|
||||||
|
seg_num = frame_id.yecanid_old.SegNum;
|
||||||
|
}else{
|
||||||
|
slave_addr = frame_id.yecanid.srcMACID;
|
||||||
|
dst_addr = frame_id.yecanid.destMACID;
|
||||||
|
seg_flag = frame_id.yecanid.SegFlag;
|
||||||
|
seg_num = frame_id.yecanid.SegNum;
|
||||||
|
}
|
||||||
can_slave &slave = get_slave_by_addr(slave_addr);
|
can_slave &slave = get_slave_by_addr(slave_addr);
|
||||||
if (seg_flag == 0x00){
|
if (seg_flag == 0x00){
|
||||||
// 不分段
|
// 不分段
|
||||||
@@ -249,17 +276,18 @@ void can_host::append(uint8_t addr, uint8_t fun_class, QByteArray data)
|
|||||||
{
|
{
|
||||||
YeCanID_un frameId;
|
YeCanID_un frameId;
|
||||||
frameId.Exide = 0;
|
frameId.Exide = 0;
|
||||||
frameId.yecanid.destMACID = addr;
|
frameId.yecanid_old.destMACID = addr;
|
||||||
frameId.yecanid.srcMACID = 0;
|
frameId.yecanid_old.srcMACID = 0;
|
||||||
frameId.yecanid.FunClass = fun_class;
|
frameId.yecanid_old.FunClass = fun_class;
|
||||||
frameId.yecanid.SegFlag = 0;
|
frameId.yecanid_old.SegFlag = 0;
|
||||||
frameId.yecanid.SegNum = 0;
|
frameId.yecanid_old.SegNum = 0;
|
||||||
|
// frameId.yecanid.Reserve0=1;// 使用新协议
|
||||||
|
|
||||||
// 单包发送
|
// 单包发送
|
||||||
if (data.size() <= 8)
|
if (data.size() <= 8)
|
||||||
{
|
{
|
||||||
frameId.yecanid.SegFlag = 0x0;
|
frameId.yecanid_old.SegFlag = 0x0;
|
||||||
frameId.yecanid.SegNum = 0;
|
frameId.yecanid_old.SegNum = 0;
|
||||||
QCanBusFrame frame = QCanBusFrame(frameId.Exide, data.left(8));
|
QCanBusFrame frame = QCanBusFrame(frameId.Exide, data.left(8));
|
||||||
while (can_->writeFrame(frame) != true)
|
while (can_->writeFrame(frame) != true)
|
||||||
{
|
{
|
||||||
@@ -273,17 +301,17 @@ void can_host::append(uint8_t addr, uint8_t fun_class, QByteArray data)
|
|||||||
{
|
{
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
frameId.yecanid.SegFlag = 0x1;
|
frameId.yecanid_old.SegFlag = 0x1;
|
||||||
}
|
}
|
||||||
else if (data.size() > 8)
|
else if (data.size() > 8)
|
||||||
{
|
{
|
||||||
frameId.yecanid.SegFlag = 0x2;
|
frameId.yecanid_old.SegFlag = 0x2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
frameId.yecanid.SegFlag = 0x3;
|
frameId.yecanid_old.SegFlag = 0x3;
|
||||||
}
|
}
|
||||||
frameId.yecanid.SegNum = (uint8_t)i;
|
frameId.yecanid_old.SegNum = (uint8_t)i;
|
||||||
QCanBusFrame frame = QCanBusFrame(frameId.Exide, data.left(8));
|
QCanBusFrame frame = QCanBusFrame(frameId.Exide, data.left(8));
|
||||||
while (can_->writeFrame(frame) != true)
|
while (can_->writeFrame(frame) != true)
|
||||||
{
|
{
|
||||||
|
@@ -1 +1 @@
|
|||||||
V2.03 批检仪检测命令本地错误码为0时使用小板的错误码
|
V2.04 可以解析新的can协议帧
|
Reference in New Issue
Block a user