diff --git a/checher_slave.uvoptx b/checher_slave.uvoptx
index 9ece02a..c01ce06 100644
--- a/checher_slave.uvoptx
+++ b/checher_slave.uvoptx
@@ -639,16 +639,16 @@
1
- 0
- 0x20007958
+ 1
+ 0x20003b00
0
2
- 0
- 0x0803B000
+ 1
+ 0x200079a0
0
diff --git a/source/ReadMe.txt b/source/ReadMe.txt
index a897874..da73e89 100644
--- a/source/ReadMe.txt
+++ b/source/ReadMe.txt
@@ -308,3 +308,7 @@
V2.10 添加写入固定延时任务
EW发送数据前固定50ms延时
can总线发送采用等待的方式
+2023.12.25
+ 解决EW写流水号数组越界的bug
+ 解决0x20指令只会解析第一个槽参数的bug
+ ew写延时添加crc8
diff --git a/source/elec_det/interface/EWChecker.c b/source/elec_det/interface/EWChecker.c
index 4e55331..c160dab 100644
--- a/source/elec_det/interface/EWChecker.c
+++ b/source/elec_det/interface/EWChecker.c
@@ -1021,8 +1021,9 @@ void EW_Test_ReadSN(void)
uint8_t uc_rtv=0;
uint8_t addr=9;
uint8_t len=4;
+ // 缓存开大一点防止数据越界
typedef union{
- uint8_t arr[4];
+ uint8_t arr[6];
uint32_t data;
}temp_def;
temp_def temp={0};
@@ -1057,13 +1058,15 @@ void EW_Test_WriteSN(void)
uint8_t uc_rtv=0;
uint8_t addr=9;
uint8_t len=4;
+ // 缓存开大一点防止数据越界
typedef union{
- uint8_t arr[4];
+ uint8_t arr[6];
uint32_t data;
}temp_def;
temp_def temp={0};
uint32_t sn;
delay_ms(50);
+ sn=checker_runcfg.params[0]|(checker_runcfg.params[1]<<16);
uc_rtv|=EW_ReadMTP(checker_runcfg.netid,addr,temp.arr,len);
if(uc_rtv){
uc_rtv=1;
@@ -1095,9 +1098,10 @@ void EW_Test_WriteDelay(void)
{
uint8_t uc_rtv=0;
uint8_t addr[2]={0x18/4,0xa8/4};
- uint8_t len=2;
+ uint8_t len=3;
+ // 缓存开大一点防止数据越界
typedef union{
- uint8_t arr[2];
+ uint8_t arr[6];
uint16_t data;
}temp_def;
temp_def temp={0};
@@ -1113,6 +1117,7 @@ void EW_Test_WriteDelay(void)
// }
delay_ms(50);
temp.data=delay;
+ temp.arr[2]=CheckCRC_8(temp.arr,2);
uc_rtv |= EW_WriteMTP(checker_runcfg.netid,addr[i],temp.arr,len);
if(uc_rtv){
uc_rtv=2+i;
diff --git a/source/elec_det/interface/JQChecker.c b/source/elec_det/interface/JQChecker.c
index 49eb147..d6673fd 100644
--- a/source/elec_det/interface/JQChecker.c
+++ b/source/elec_det/interface/JQChecker.c
@@ -1233,8 +1233,9 @@ void JQ_Test_WriteSN(void)
uint8_t uc_ack;
uint8_t uc_otpAddr = 20;
uint8_t uc_writeCount = 4;
+ // 缓存开大一点防止数据越界
typedef union{
- uint8_t arr[4];
+ uint8_t arr[6];
uint32_t data;
}temp_def;
temp_def temp={0};
@@ -1295,8 +1296,9 @@ void JQ_Test_ReadSN(void)
uint8_t uc_ack;
uint8_t uc_otpAddr = 20;
uint8_t uc_writeCount = 4;
+ // 缓存开大一点防止数据越界
typedef union{
- uint8_t arr[4];
+ uint8_t arr[6];
uint32_t data;
}temp_def;
temp_def temp={0};
@@ -1347,8 +1349,9 @@ void JQ_Test_WriteDelay(void)
uint8_t uc_ack;
uint8_t uc_otpAddr = 15;
uint8_t uc_writeCount = 2;
+ // 缓存开大一点防止数据越界
typedef union{
- uint8_t arr[2];
+ uint8_t arr[4];
uint16_t data;
}temp_def;
temp_def temp={0};
diff --git a/source/main/compiler_info.h b/source/main/compiler_info.h
index d867b0d..1d8c336 100644
--- a/source/main/compiler_info.h
+++ b/source/main/compiler_info.h
@@ -6,7 +6,7 @@
-#define BUILD_DATE "2023-12-22 18:12:46"
+#define BUILD_DATE "2023-12-25 17:21:14"
#define SOFT_VERSION "2.10"
diff --git a/source/task/tran_for_broadcast.c b/source/task/tran_for_broadcast.c
index 1ecbbeb..ecda370 100644
--- a/source/task/tran_for_broadcast.c
+++ b/source/task/tran_for_broadcast.c
@@ -113,14 +113,14 @@ static void slave_adds(self_def *s)
task_slot_delete();
slot=task_slot_init();
while(offslot_index=arr_get(s->data,0);
- t->task_id=arr_get(s->data,1);
- t->par_count=arr_get(s->data,2);
- t->ret_count=arr_get(s->data,3);
- t->errcode=arr_get(s->data,4);
+ t->slot_index=arr_get(s->data,off);
+ t->task_id=arr_get(s->data,off+1);
+ t->par_count=arr_get(s->data,off+2);
+ t->ret_count=arr_get(s->data,off+3);
+ t->errcode=arr_get(s->data,off+4);
t->exe_flag=0;
- t->task_index=arr_get(s->data,5);
- memcpy(t->params,arr_data(s->data)+6,t->par_count*2);
+ t->task_index=arr_get(s->data,off+5);
+ memcpy(t->params,arr_data(s->data)+off+6,t->par_count*2);
task_slot_add_item(slot,t);
off+=6+t->par_count*2;
}
@@ -233,6 +233,8 @@ static ucport_def *run_task(tran_def *t, uint8_t cmd,array_def *data)
return (ucport_def *)u;
}
transmit_export(ym_slave,0x20,run_task)
+// 0x21 是上位机协议的命令字
+transmit_export(ym_checker,0x21,run_task)