diff --git a/checker_gen1.uvoptx b/checker_gen1.uvoptx index 1d0b0c8..44bb1f8 100644 --- a/checker_gen1.uvoptx +++ b/checker_gen1.uvoptx @@ -329,7 +329,6 @@ 0 DLGUARM - d 0 @@ -368,7 +367,7 @@ 0 99 1 -
134229842
+
134230110
0 0 0 @@ -382,50 +381,18 @@ 1 0 - 226 + 182 1 -
134229732
+
134218452
0 0 0 0 0 1 - .\source\main\main.c - - \\checker_gen1_boot\source/main/main.c\226 -
- - 2 - 0 - 182 - 1 -
0
- 0 - 0 - 0 - 0 - 0 - 0 .\source\core\startup_stm32f40_41xxx.s - -
- - 3 - 0 - 172 - 1 -
0
- 0 - 0 - 0 - 0 - 0 - 0 - .\source\task\prot_mcu.c - - + \\checker_gen1_boot\source/core/startup_stm32f40_41xxx.s\182
diff --git a/checker_gen1.uvprojx b/checker_gen1.uvprojx index 1734718..40f1848 100644 --- a/checker_gen1.uvprojx +++ b/checker_gen1.uvprojx @@ -10,7 +10,7 @@ app 0x4 ARM-ADS - 5060960::V5.06 update 7 (build 960)::.\ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC 0 @@ -185,7 +185,6 @@ 0 2 0 - 0 1 0 8 @@ -352,7 +351,7 @@ 0 0 0 - 4 + 0 @@ -1535,7 +1534,6 @@ 0 2 0 - 0 1 0 8 @@ -1702,7 +1700,7 @@ 0 0 0 - 4 + 0 @@ -2259,7 +2257,7 @@ 2 2 2 - 0 + 2 @@ -3183,7 +3181,7 @@ 2 2 2 - 0 + 2 @@ -3277,7 +3275,7 @@ 2 2 2 - 0 + 2 @@ -3994,7 +3992,7 @@ 2 2 2 - 0 + 2 @@ -4143,7 +4141,7 @@ 2 2 2 - 0 + 2 @@ -4163,6 +4161,75 @@ coder + + + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + PSDGenerate.c diff --git a/source/ReadMe.txt b/source/ReadMe.txt index f85033c..8b2d06f 100644 --- a/source/ReadMe.txt +++ b/source/ReadMe.txt @@ -101,4 +101,13 @@ 2023.6.14 添加参数设置,自检命令 添加波特率,命令返回格式,小板起始地址设置项 +2023.6.15 + log打印可以单独设置主机地址 + bootloader解决打包时间始终被设置为?的bug + 赋码仪相关指令全部添加通道字段 + + + + + \ No newline at end of file diff --git a/source/dev/dev_flash.h b/source/dev/dev_flash.h index 31a1b2a..1cc142c 100644 --- a/source/dev/dev_flash.h +++ b/source/dev/dev_flash.h @@ -70,6 +70,7 @@ typedef struct{ int local_cmd_port;// 本机命令端口 int host_log_port;// 主机log端口 int local_id;// 本机识别号 + uint8_t host_log_ip[4];// 主机logip int uartbsp;// 串口4的波特率 int coder_ret_mode;// 注码指令返回格式 int slave_addr_start;// 小板起始地址 diff --git a/source/main/compiler_info.h b/source/main/compiler_info.h index 0daa751..bb3ed1d 100644 --- a/source/main/compiler_info.h +++ b/source/main/compiler_info.h @@ -6,7 +6,7 @@ -#define BUILD_DATE "2023-06-14 22:00:30" +#define BUILD_DATE "2023-06-15 17:41:54" #define SOFT_VERSION "0.01" diff --git a/source/main/main.c b/source/main/main.c index 8c6521a..d9ba101 100644 --- a/source/main/main.c +++ b/source/main/main.c @@ -210,19 +210,24 @@ commend_export(moter,moter,"control moter up or down|use:moter [frequency] [coun static void print_sys_param(const sys_param_def *par) { cmd_print(" - - - - - - - - - - - - - - "); - cmd_print("pack time: %s",par->pack_time); - cmd_print("host if: %s",par->host_if); - cmd_print("device type: %s",par->device_type); - cmd_print("mac addr: %02x.%02x.%02x.%02x.%02x.%02x", + cmd_print("pack time: %s",par->pack_time); + cmd_print("host if: %s",par->host_if); + cmd_print("device type: %s",par->device_type); + cmd_print("mac addr: %02x.%02x.%02x.%02x.%02x.%02x", par->mac[0],par->mac[1],par->mac[2],par->mac[3],par->mac[4],par->mac[5]); - cmd_print("local ip: %d.%d.%d.%d", + cmd_print("local ip: %d.%d.%d.%d", par->local_ip[0],par->local_ip[1],par->local_ip[2],par->local_ip[3]); - cmd_print("host ip: %d.%d.%d.%d", + cmd_print("host ip: %d.%d.%d.%d", par->host_ip[0],par->host_ip[1],par->host_ip[2],par->host_ip[3]); - cmd_print("host port: %d",par->host_port); - cmd_print("local cmd port: %d",par->local_cmd_port); - cmd_print("host log port: %d",par->host_log_port); - cmd_print("local id: %d",par->local_id); + cmd_print("host port: %d",par->host_port); + cmd_print("local cmd port: %d",par->local_cmd_port); + cmd_print("host log port: %d",par->host_log_port); + cmd_print("local id: %d",par->local_id); + cmd_print("host log ip: %d.%d.%d.%d", + par->host_log_ip[0],par->host_log_ip[1],par->host_log_ip[2],par->host_log_ip[3]); + cmd_print("uart bsp: %d",par->uartbsp); + cmd_print("coder ret mode: %d",par->coder_ret_mode); + cmd_print("slave_addr_start: %d",par->slave_addr_start); } @@ -239,7 +244,7 @@ static int sysinfo(list_def *argv) return 0; } -commend_export(sysinfo,sysinfo,"print the sortware info") +commend_export(sysinfo,sysinfo,"print the software info") @@ -256,6 +261,7 @@ static void print_sys_help(void) cmd_print("set localcmdport 7777"); cmd_print("set hostlogport 12345"); cmd_print("set localid 1"); + cmd_print("set hostlogip 192.168.80.80"); cmd_print("set uartbsp 115200"); cmd_print("set codermode 1/0"); cmd_print("set slave_addr_start 1/0"); @@ -358,6 +364,17 @@ static int sys_set(list_def *argv) spar->uartbsp=str_atoi(str); cmd_print("uart bsp: %d",spar->uartbsp); } + else if(strcmp(list_get_str(argv,1),"hostlogip")==0) + { + char *str=list_get_str(argv,2); + list_def *ip=str_atod_list(str,'.'); + spar->host_log_ip[0]=list_get_int(ip,0); + spar->host_log_ip[1]=list_get_int(ip,1); + spar->host_log_ip[2]=list_get_int(ip,2); + spar->host_log_ip[3]=list_get_int(ip,3); + cmd_print("host log ip: %d.%d.%d.%d", + spar->host_log_ip[0],spar->host_log_ip[1],spar->host_log_ip[2],spar->host_log_ip[3]); + } else if(strcmp(list_get_str(argv,1),"codermode")==0) { char *str=list_get_str(argv,2); @@ -478,9 +495,9 @@ void param_init(rom_head *h) { static sys_param_def pars={0}; memcpy(&pars,sys_param(),sizeof(sys_param_def)); - memcpy(pars.pack_time,h->pack_time,20); - if(pars.local_id==0xffffffff){ - if(h){ + if(h){ + memcpy(pars.pack_time,h->pack_time,20); + if(pars.local_id==0xffffffff){ memcpy(pars.host_if,h->host_if,8); memcpy(pars.device_type,"checker",8); mac_init(pars.mac); @@ -491,20 +508,24 @@ void param_init(rom_head *h) pars.host_log_port=12345; pars.local_id=1; } - else{ - // 填充默认配置 + flash_save_param(&pars); + } + else{ + // 填充默认配置 + if(pars.local_id==0xffffffff){ memcpy(pars.host_if,"uart4",6); memcpy(pars.device_type,"coder",6); mac_init(pars.mac); memcpy(pars.local_ip,(uint8_t []){192,168,80,10},4); memcpy(pars.host_ip,(uint8_t []){192,168,80,80},4); + memcpy(pars.host_log_ip,(uint8_t []){192,168,80,80},4); pars.host_port=9527; pars.local_cmd_port=7777; pars.host_log_port=12345; pars.local_id=1; + flash_save_param(&pars); } } - flash_save_param(&pars); } diff --git a/source/task/handle_for_checker.c b/source/task/handle_for_checker.c index 201646f..684900b 100644 --- a/source/task/handle_for_checker.c +++ b/source/task/handle_for_checker.c @@ -337,7 +337,7 @@ static int usercmd(list_def *argv) } -commend_export(usercmd,usercmd,"send usercmd to slave") +commend_export(usercmd,usercmd,"send usercmd to slave|use:usercmd [addrs] [cmd] [datas]") diff --git a/source/task/log.c b/source/task/log.c index 950f7ad..0d4a2af 100644 --- a/source/task/log.c +++ b/source/task/log.c @@ -40,7 +40,7 @@ static void log_thread(void *arg) LWIP_UNUSED_ARG(arg); ip_addr_t dst; const sys_param_def *par=sys_param(); - IP4_ADDR(&dst,par->host_ip[0],par->host_ip[1],par->host_ip[2],par->host_ip[3]); + IP4_ADDR(&dst,par->host_log_ip[0],par->host_log_ip[1],par->host_log_ip[2],par->host_log_ip[3]); commend_def *cmd; conn = netconn_new(NETCONN_UDP); err=netconn_bind(conn, IP_ADDR_ANY, 7778); diff --git a/source/task/tran_for_checker.c b/source/task/tran_for_checker.c index 7b0dce3..fd3b815 100644 --- a/source/task/tran_for_checker.c +++ b/source/task/tran_for_checker.c @@ -91,6 +91,20 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data) return (ucport_def *)u; } +transmit_export(ym_checker,0x30,check) + + + + +/* + + 自检 和 参数设置 命令是批检仪和赋码仪都有的命令 + 应赋码仪上位机的要求,赋码仪多了一个 "通道" 的数据位 + 目前使用判断的方式,设备为赋码仪方式工作时命令的发送的返回都解析这个 "通道" + +*/ + + @@ -125,7 +139,7 @@ typedef struct{ -// 检测完成 +// 自检完成 static void bootinfo_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str) { bootinfo_def *w=(bootinfo_def *)u; @@ -143,6 +157,11 @@ static void bootinfo_end(ucport_def *u,port_mcu *src,void *data,int ack,char *er if(w->ack_num>=w->slave_num) { array_def *a=arr_creat(); + if(strcmp(sys_param()->device_type,"coder")==0) + { + // 赋码仪添加通道数 + arr_append(a,w->slave_num); + } arr_append(a,0); arr_appends(a,w->ack,w->ack_size); emit tran_send_signal(w->u.p,w->end_cmd,arr_temp(a)); @@ -213,6 +232,11 @@ static ucport_def *bootinfo_self(tran_def *t, int slave_num,uint8_t cmd,array_de } array_def *a=arr_creat(); + if(strcmp(sys_param()->device_type,"coder")==0) + { + // 赋码仪添加通道数 + arr_append(a,10); + } arr_append(a,0); emit tran_reply_signal(u->u.p,arr_temp(a)); @@ -242,7 +266,6 @@ static ucport_def *bootinfo_checker(tran_def *t,uint8_t cmd,array_def *data) -transmit_export(ym_checker,0x30,check) transmit_export(ym_checker,0x34,bootinfo_checker) transmit_export(ym_checker,0x04,bootinfo_coder) @@ -321,23 +344,40 @@ static ucport_def *param(tran_def *t, uint8_t cmd,array_def *data) DBG_WARN("cmd format err."); return 0; } + int off=0; param_def *u=calloc(1,sizeof(param_def)); u->u.p=t; u->u.del=param_del; + if(strcmp(sys_param()->device_type,"coder")==0) + { + // 赋码仪要忽略通道数参数 + off=1; + } + - uint8_t op=arr_get(data,0); + uint8_t op=arr_get(data,off); // 1是写,0是读 if(op==0) { paraminfo_fill(&u->par); uint8_t *d=(uint8_t *)(&u->par); array_def *a=arr_creat(); + if(strcmp(sys_param()->device_type,"coder")==0) + { + // 赋码仪添加通道数 + arr_append(a,10); + } arr_append(a,0); arr_appends(a,d,sizeof(paraminfo_def)); emit tran_reply_signal(u->u.p,arr_temp(a)); }else if(op==1) { array_def *a=arr_creat(); + if(strcmp(sys_param()->device_type,"coder")==0) + { + // 赋码仪添加通道数 + arr_append(a,10); + } if(arr_length(data)<1+sizeof(paraminfo_def)){ arr_append(a,1); emit tran_reply_signal(u->u.p,arr_temp(a)); diff --git a/source/task/tran_for_coder2.c b/source/task/tran_for_coder2.c index 5a77ab2..1ab35d2 100644 --- a/source/task/tran_for_coder2.c +++ b/source/task/tran_for_coder2.c @@ -377,13 +377,17 @@ static void live_recv(live_keeper_def *t) static void live_send(void *p) { const sys_param_def *par=sys_param(); + tran_def *t=app_variable("tran",0,0); + uint16_t slave_online=0; + if(t) + slave_online=tran_get_slave_online(t); array_def *d=arr_creat(); arr_append(d,0); arr_append(d,0xff); arr_append(d,0x03); arr_append(d,par->local_id&0xff); - arr_append(d,0xff);// 在线的小板 - arr_append(d,0x03); + arr_append(d,slave_online&0xff);// 在线的小板 + arr_append(d,(slave_online>>8)&0xff); emit coder2_live_send_signal(p,0x8a,arr_temp(d)); } @@ -397,7 +401,7 @@ static void init_for_tcp(void *t) live->timer=rt_timer_create("live_t",live_send,live, rt_tick_from_millisecond(1000), RT_TIMER_FLAG_PERIODIC|RT_TIMER_FLAG_SOFT_TIMER); - protu_codec_set(protu,protu_find_codec("ym_coder")); + protu_codec_set(protu,protu_find_codec("ym_checker")); connect(tcp,tcp_connect_signal,0,live,live_connect); connect(tcp,tcp_recv_signal,0,live,live_recv); connect(live,coder2_live_send_signal,0,protu,protu_send_call);