添加参数设置和自检命令
This commit is contained in:
@@ -97,4 +97,8 @@
|
||||
赋码无论成功失败都返回3码数据
|
||||
流水号相同的命令直接返回上次的返回结果
|
||||
命令不存在,命令参数错误,设备忙,返回错误码
|
||||
波特率、命令返回格式、小板起始地址可配置
|
||||
波特率、命令返回格式、小板起始地址可配置
|
||||
2023.6.14
|
||||
添加参数设置,自检命令
|
||||
添加波特率,命令返回格式,小板起始地址设置项
|
||||
|
@@ -70,6 +70,9 @@ typedef struct{
|
||||
int local_cmd_port;// 本机命令端口
|
||||
int host_log_port;// 主机log端口
|
||||
int local_id;// 本机识别号
|
||||
int uartbsp;// 串口4的波特率
|
||||
int coder_ret_mode;// 注码指令返回格式
|
||||
int slave_addr_start;// 小板起始地址
|
||||
}sys_param_def;
|
||||
|
||||
|
||||
|
@@ -5,7 +5,6 @@
|
||||
#include "if_uart_dma.h"
|
||||
|
||||
|
||||
|
||||
#ifndef RT_THREAD
|
||||
|
||||
#define rt_interrupt_enter()
|
||||
@@ -316,7 +315,7 @@ def_find_fun(uart_dtb,g_uartdtb)
|
||||
|
||||
|
||||
|
||||
static int init(uart_def *u)
|
||||
static int init(uart_def *u,int bsp)
|
||||
{
|
||||
param_check(u);
|
||||
if(u->private_data) return 0;
|
||||
@@ -334,7 +333,8 @@ static int init(uart_def *u)
|
||||
{
|
||||
u->private_data=self;
|
||||
dtb->uart_clock_fun(dtb->uart_rcc,ENABLE);
|
||||
init2.USART_BaudRate = dtb->baudrate;
|
||||
if(bsp==0) bsp=dtb->baudrate;
|
||||
init2.USART_BaudRate = bsp;
|
||||
USART_Init(dtb->uart, &init2);
|
||||
USART_Cmd(dtb->uart, ENABLE);
|
||||
|
||||
|
@@ -6,7 +6,8 @@
|
||||
|
||||
|
||||
|
||||
#define BUILD_DATE "2023-06-14 15:49:07"
|
||||
#define BUILD_DATE "2023-06-14 22:00:30"
|
||||
#define SOFT_VERSION "0.01"
|
||||
|
||||
|
||||
|
||||
|
@@ -230,7 +230,7 @@ static int sysinfo(list_def *argv)
|
||||
{
|
||||
const sys_param_def *par=sys_param();
|
||||
cmd_print("build time: %s",BUILD_DATE);
|
||||
cmd_print("soft version: 0.01");
|
||||
cmd_print("soft version: %s",SOFT_VERSION);
|
||||
cmd_print("run time: %d",rt_tick_get()/1000);
|
||||
cmd_print("startup: %s",bk_get_currtype());
|
||||
cmd_print("watch dog: %s",bk_wdog_fun()?"on":"off");
|
||||
@@ -248,14 +248,17 @@ commend_export(sysinfo,sysinfo,"print the sortware info")
|
||||
static void print_sys_help(void)
|
||||
{
|
||||
cmd_print("example for how to set system params:");
|
||||
cmd_print("set hostif uart4/utcp");
|
||||
cmd_print("set devicetype checker/coder");
|
||||
cmd_print("set localip 192.168.80.10");
|
||||
cmd_print("set hostip 192.168.80.100");
|
||||
cmd_print("set hostport 7777");
|
||||
cmd_print("set localcmdport 7777");
|
||||
cmd_print("set hostlogport 12345");
|
||||
cmd_print("set localid 1");
|
||||
cmd_print("set hostif uart4/utcp");
|
||||
cmd_print("set devicetype checker/coder");
|
||||
cmd_print("set localip 192.168.80.10");
|
||||
cmd_print("set hostip 192.168.80.100");
|
||||
cmd_print("set hostport 7777");
|
||||
cmd_print("set localcmdport 7777");
|
||||
cmd_print("set hostlogport 12345");
|
||||
cmd_print("set localid 1");
|
||||
cmd_print("set uartbsp 115200");
|
||||
cmd_print("set codermode 1/0");
|
||||
cmd_print("set slave_addr_start 1/0");
|
||||
cmd_print("set save");
|
||||
}
|
||||
|
||||
@@ -349,6 +352,24 @@ static int sys_set(list_def *argv)
|
||||
spar->local_id=str_atoi(str);
|
||||
cmd_print("local id: %d",spar->local_id);
|
||||
}
|
||||
else if(strcmp(list_get_str(argv,1),"uartbsp")==0)
|
||||
{
|
||||
char *str=list_get_str(argv,2);
|
||||
spar->uartbsp=str_atoi(str);
|
||||
cmd_print("uart bsp: %d",spar->uartbsp);
|
||||
}
|
||||
else if(strcmp(list_get_str(argv,1),"codermode")==0)
|
||||
{
|
||||
char *str=list_get_str(argv,2);
|
||||
spar->coder_ret_mode=str_atoi(str);
|
||||
cmd_print("coder ret mode: %d",spar->coder_ret_mode);
|
||||
}
|
||||
else if(strcmp(list_get_str(argv,1),"slave_addr_start")==0)
|
||||
{
|
||||
char *str=list_get_str(argv,2);
|
||||
spar->slave_addr_start=str_atoi(str);
|
||||
cmd_print("slave addr start: %d",spar->slave_addr_start);
|
||||
}
|
||||
else{
|
||||
cmd_print("unknown cmd for sysset.");
|
||||
print_sys_help();
|
||||
|
@@ -126,6 +126,7 @@ def creat_compile_info(dst:str):
|
||||
f.write("#ifndef compiler_info__\n")
|
||||
f.write("#define compiler_info__\n\n\n\n\n\n\n")
|
||||
f.write("#define BUILD_DATE \""+utc_time+"\"\n")
|
||||
f.write("#define SOFT_VERSION \"0.01\"\n")
|
||||
f.write("\n\n\n\n\n\n\n#endif\n")
|
||||
|
||||
|
||||
|
@@ -16,7 +16,7 @@ struct dev_struct{
|
||||
|
||||
typedef struct __uart_def{
|
||||
const char *name;
|
||||
int (*init)(struct __uart_def *u);
|
||||
int (*init)(struct __uart_def *u,int bsp);
|
||||
int (*deinit)(struct __uart_def *u);
|
||||
int (*set_irq)(struct __uart_def *u,void (*irq)(void *t,uint8_t d),void *t);
|
||||
int (*set_end_irq)(struct __uart_def *u,uint8_t *rx_buff,int rx_buff_size,
|
||||
|
@@ -317,7 +317,7 @@ protm_def *protm_creat(uart_def *uart,int *addrs,int num)
|
||||
sprintf(name,"protm_t#%d",count);
|
||||
rt_thread_t rt_t=rt_thread_create(name,protm_run,p,2048,5+count,20);
|
||||
rt_thread_startup(rt_t);
|
||||
p->uart->init(p->uart);
|
||||
p->uart->init(p->uart,0);
|
||||
//p->uart->set_irq(p->uart,recv_irq,p);
|
||||
p->uart->set_end_irq(p->uart,p->buff,RECV_BUFF_SIZE,recv_end_irq,p);
|
||||
|
||||
|
@@ -233,7 +233,11 @@ protu_def *protu_creat(uart_def *uart)
|
||||
sprintf(name,"protu_t#%d",count);
|
||||
rt_thread_t rt_t=rt_thread_create(name,protu_run,p,2048,5,20);
|
||||
rt_thread_startup(rt_t);
|
||||
p->uart->init(p->uart);
|
||||
int bsp=sys_param()->uartbsp;
|
||||
if(bsp==9600)
|
||||
p->uart->init(p->uart,9600);
|
||||
else
|
||||
p->uart->init(p->uart,0);
|
||||
//p->uart->set_irq(p->uart,recv_irq,p);
|
||||
p->uart->set_end_irq(p->uart,p->buff,RECV_BUFF_SIZE,recv_end_irq,p);
|
||||
|
||||
|
@@ -90,7 +90,7 @@ static self_def *mytcp_init(void)
|
||||
|
||||
|
||||
|
||||
static int init(uart_def *u){
|
||||
static int init(uart_def *u,int bsp){
|
||||
self_def *s=mytcp_init();
|
||||
u->private_data=s;
|
||||
app_variable("tcp",s,0);
|
||||
|
@@ -7,7 +7,8 @@
|
||||
#include "tcp.h"
|
||||
#include "prot_uc.h"
|
||||
#include "handle_for_checker.h"
|
||||
|
||||
#include "compiler_info.h"
|
||||
#include "dev_backup.h"
|
||||
|
||||
|
||||
|
||||
@@ -95,30 +96,266 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||
|
||||
|
||||
|
||||
__packed
|
||||
typedef struct{
|
||||
char build_time[20];
|
||||
char softverion[8];
|
||||
int runtime;
|
||||
uint8_t wdog;
|
||||
char devicetype[12];
|
||||
uint8_t localip[4];
|
||||
uint8_t hostip[4];
|
||||
uint16_t hostport;
|
||||
uint8_t localid;
|
||||
uint32_t schemeid;
|
||||
uint32_t slave_online;
|
||||
}local_bootinfo;
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
ucport_def u;
|
||||
void (*doexert)(ucport_def *u);
|
||||
uint8_t ack_num;
|
||||
uint8_t slave_num;
|
||||
uint8_t end_cmd;
|
||||
int ack_size;
|
||||
uint8_t ack[0];
|
||||
}bootinfo_def;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static ucport_def *bootinfo(tran_def *t,uint8_t cmd,array_def *data)
|
||||
// 检测完成
|
||||
static void bootinfo_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str)
|
||||
{
|
||||
return 0;
|
||||
bootinfo_def *w=(bootinfo_def *)u;
|
||||
uint8_t addr=port_get_addr(src);
|
||||
if(addr<=0||addr>w->slave_num){
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t *d=&w->ack[sizeof(local_bootinfo)+sizeof(bootinfo_data)*(addr-1)];
|
||||
if(data){
|
||||
memcpy(d,data,sizeof(bootinfo_data));
|
||||
}
|
||||
w->ack_num++;
|
||||
if(w->ack_num>=w->slave_num)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
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));
|
||||
tran_set_busy(w->u.p,0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void bootinfo_del(ucport_def *u)
|
||||
{
|
||||
free(u);
|
||||
}
|
||||
|
||||
|
||||
// 填充本机自检信息
|
||||
static void bootinfo_fill_local(uint8_t *d)
|
||||
{
|
||||
int tick=rt_tick_get()/1000;
|
||||
uint8_t wdog=bk_wdog_fun()?1:0;
|
||||
tran_def *t=app_variable("tran",0,0);
|
||||
uint32_t temp32=0;
|
||||
uint16_t temp16=0;
|
||||
uint8_t temp8=0;
|
||||
memcpy(d,BUILD_DATE,strlen(BUILD_DATE)+1);d+=20;
|
||||
memcpy(d,SOFT_VERSION,strlen(SOFT_VERSION)+1);d+=8;
|
||||
memcpy(d,&tick,4);d+=4;
|
||||
memcpy(d,&wdog,1);d+=1;
|
||||
memcpy(d,sys_param()->device_type,12);d+=12;
|
||||
memcpy(d,sys_param()->local_ip,4);d+=4;
|
||||
memcpy(d,sys_param()->host_ip,4);d+=4;
|
||||
temp16=sys_param()->host_port;
|
||||
memcpy(d,&temp16,2);d+=2;
|
||||
temp8=sys_param()->local_id;
|
||||
memcpy(d,&temp8,1);d+=1;
|
||||
temp32=check_scheme()->plan_id;
|
||||
memcpy(d,&temp32,4);d+=4;
|
||||
if(t){
|
||||
uint32_t temp32=tran_get_slave_online(t);
|
||||
memcpy(d,&temp32,4);d+=4;
|
||||
}else
|
||||
{
|
||||
memset(d,0,4);d+=4;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static ucport_def *bootinfo_self(tran_def *t, int slave_num,uint8_t cmd,array_def *data)
|
||||
{
|
||||
int return_size=sizeof(local_bootinfo)+sizeof(bootinfo_data)*slave_num;
|
||||
bootinfo_def *u=calloc(1,sizeof(bootinfo_def)+return_size);
|
||||
u->ack_size=return_size;
|
||||
u->slave_num=slave_num;
|
||||
u->u.p=t;
|
||||
u->u.del=bootinfo_del;
|
||||
u->u.doend=bootinfo_end;
|
||||
tran_set_busy(t,1);
|
||||
bootinfo_fill_local(u->ack);
|
||||
for(int i=0;i<slave_num;i++)
|
||||
{
|
||||
port_mcu *mcu=tran_get_portm(u->u.p,i);
|
||||
// 这里打开检测
|
||||
if(mcu){
|
||||
port_start(mcu,bootinfo_creat());
|
||||
}
|
||||
}
|
||||
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,0);
|
||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||
|
||||
return (ucport_def *)u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static ucport_def *bootinfo_coder(tran_def *t,uint8_t cmd,array_def *data)
|
||||
{
|
||||
// 对于赋码仪,从机个数为10
|
||||
bootinfo_def *u=(bootinfo_def *)bootinfo_self(t,10,cmd,data);
|
||||
u->end_cmd=0x84;
|
||||
|
||||
return (ucport_def *)u;
|
||||
}
|
||||
|
||||
|
||||
static ucport_def *bootinfo_checker(tran_def *t,uint8_t cmd,array_def *data)
|
||||
{
|
||||
// 对于批检仪,从机个数为20
|
||||
bootinfo_def *u=(bootinfo_def *)bootinfo_self(t,20,cmd,data);
|
||||
u->end_cmd=0x35;
|
||||
|
||||
return (ucport_def *)u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
transmit_export(ym_checker,0x30,check)
|
||||
transmit_export(ym_checker,0x34,bootinfo)
|
||||
transmit_export(ym_checker,0x34,bootinfo_checker)
|
||||
transmit_export(ym_checker,0x04,bootinfo_coder)
|
||||
|
||||
|
||||
|
||||
__packed
|
||||
typedef struct{
|
||||
char devicetype[12];
|
||||
char hostif[8];
|
||||
uint8_t localip[4];
|
||||
uint8_t hostip[4];
|
||||
uint16_t hostport;
|
||||
uint8_t localid;
|
||||
int uartbsp;
|
||||
uint8_t coder_return_mode;
|
||||
uint8_t slave_addr_start;
|
||||
}paraminfo_def;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
ucport_def u;
|
||||
paraminfo_def par;
|
||||
}param_def;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static void param_del(ucport_def *u)
|
||||
{
|
||||
free(u);
|
||||
}
|
||||
|
||||
|
||||
// 填充配置项
|
||||
static void paraminfo_fill(paraminfo_def *p)
|
||||
{
|
||||
memcpy(p->devicetype,sys_param()->device_type,12);
|
||||
memcpy(p->hostif,sys_param()->host_if,8);
|
||||
memcpy(p->localip,sys_param()->local_ip,4);
|
||||
memcpy(p->hostip,sys_param()->host_ip,4);
|
||||
p->hostport=sys_param()->host_port;
|
||||
p->localid=sys_param()->local_id;
|
||||
p->uartbsp=sys_param()->uartbsp;
|
||||
p->coder_return_mode=sys_param()->coder_ret_mode;
|
||||
p->slave_addr_start=sys_param()->slave_addr_start;
|
||||
}
|
||||
|
||||
|
||||
// 保存配置项
|
||||
static void paraminfo_save(paraminfo_def *p)
|
||||
{
|
||||
sys_param_def *spar=0;
|
||||
spar=calloc(1,sizeof(sys_param_def));
|
||||
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
||||
|
||||
memcpy(spar->device_type,p->devicetype,12);
|
||||
memcpy(spar->host_if,p->hostif,8);
|
||||
memcpy(spar->local_ip,p->localip,4);
|
||||
memcpy(spar->host_ip,p->hostip,4);
|
||||
spar->host_port=p->hostport;
|
||||
spar->local_id=p->localid;
|
||||
spar->uartbsp=p->uartbsp;
|
||||
spar->coder_ret_mode=p->coder_return_mode;
|
||||
spar->slave_addr_start=p->slave_addr_start;
|
||||
flash_save_param(spar);
|
||||
}
|
||||
|
||||
|
||||
static ucport_def *param(tran_def *t, uint8_t cmd,array_def *data)
|
||||
{
|
||||
if(arr_length(data)<1){
|
||||
DBG_WARN("cmd format err.");
|
||||
return 0;
|
||||
}
|
||||
param_def *u=calloc(1,sizeof(param_def));
|
||||
u->u.p=t;
|
||||
u->u.del=param_del;
|
||||
|
||||
uint8_t op=arr_get(data,0);
|
||||
// 1是写,0是读
|
||||
if(op==0)
|
||||
{
|
||||
paraminfo_fill(&u->par);
|
||||
uint8_t *d=(uint8_t *)(&u->par);
|
||||
array_def *a=arr_creat();
|
||||
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(arr_length(data)<1+sizeof(paraminfo_def)){
|
||||
arr_append(a,1);
|
||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||
}else{
|
||||
memcpy(&u->par,arr_data(data)+1,sizeof(paraminfo_def));
|
||||
paraminfo_save(&u->par);
|
||||
arr_append(a,0);
|
||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||
}
|
||||
paraminfo_save(&u->par);
|
||||
|
||||
}
|
||||
|
||||
return (ucport_def *)u;
|
||||
}
|
||||
|
||||
|
||||
transmit_export(ym_checker,0x08,param)
|
||||
|
||||
|
||||
|
||||
|
@@ -16,6 +16,15 @@
|
||||
|
||||
|
||||
|
||||
// 从机地址偏移
|
||||
static inline int slave_addr_off(void)
|
||||
{
|
||||
if(sys_param()->slave_addr_start)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
@@ -44,18 +53,35 @@ static void write_uid_end(ucport_def *u,port_mcu *src,void *data,int ack,char *e
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
uint8_t *d=&w->ack[(addr-1)*39];
|
||||
addr-=1;
|
||||
|
||||
uint8_t *d=&w->ack[(addr)*39];
|
||||
w->ack_num++;
|
||||
d[0]=addr-1;
|
||||
d[0]=addr+slave_addr_off();
|
||||
d[1]=ack;
|
||||
memcpy(&d[2],w->item[addr-1].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr-1].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr-1].password,8);
|
||||
memcpy(&d[2],w->item[addr].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr].password,8);
|
||||
if(w->ack_num>=10)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,w->addrs_num);
|
||||
arr_appends(a,w->ack,390);
|
||||
// arr_appends(a,w->ack,390);
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
uint8_t *d=&w->ack[i*39];
|
||||
if(sys_param()->coder_ret_mode)
|
||||
{
|
||||
// 完整模式
|
||||
arr_appends(a,d,39);
|
||||
}
|
||||
else{
|
||||
// 精简模式
|
||||
arr_appends(a,d,2);
|
||||
d+=2+13+16;
|
||||
arr_appends(a,d,8);
|
||||
}
|
||||
}
|
||||
emit tran_send_signal(w->u.p,0x82,arr_temp(a));
|
||||
tran_set_busy(w->u.p,0);
|
||||
}
|
||||
@@ -72,7 +98,7 @@ static void write_uid_return_ok(void *p)
|
||||
arr_append(a,u->addrs_num);
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
arr_append(a,i);
|
||||
arr_append(a,i+slave_addr_off());
|
||||
arr_append(a,0);
|
||||
arr_append_num(a,37,'0');
|
||||
}
|
||||
@@ -125,7 +151,7 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data)
|
||||
// 默认失败
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
u->ack[i*39+0]=i;
|
||||
u->ack[i*39+0]=i+slave_addr_off();
|
||||
u->ack[i*39+1]=1;
|
||||
}
|
||||
tran_set_busy(t,1);
|
||||
@@ -165,19 +191,15 @@ static void write_uid2_end(ucport_def *u,port_mcu *src,void *data,int ack,char *
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
uint8_t *d=&w->ack[(addr-1)*39];
|
||||
addr-=1;
|
||||
|
||||
uint8_t *d=&w->ack[(addr)*39];
|
||||
w->ack_num++;
|
||||
d[0]=addr-1;
|
||||
d[0]=addr+slave_addr_off();
|
||||
d[1]=ack;
|
||||
if(ack==0)
|
||||
{
|
||||
memcpy(&d[2],w->item[addr-1].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr-1].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr-1].password,8);
|
||||
}else{
|
||||
// 失败的数据全部填充'0'
|
||||
memset(&d[2],'0',37);
|
||||
}
|
||||
memcpy(&d[2],w->item[addr].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr].password,8);
|
||||
if(w->ack_num>=10)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
@@ -233,8 +255,10 @@ static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_s
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
uint8_t *ack_d=&w->ack[(addr-1)*6];
|
||||
ack_d[0]=addr-1;
|
||||
addr-=1;
|
||||
|
||||
uint8_t *ack_d=&w->ack[(addr)*6];
|
||||
ack_d[0]=addr+slave_addr_off();
|
||||
ack_d[1]=ack;
|
||||
// TODO: 还有4字节数据
|
||||
|
||||
@@ -260,7 +284,7 @@ static void check_return_ok(void *p)
|
||||
arr_append(a,u->type);
|
||||
// 固定返回6*10个字节,如果不检测某通道,则该通道填充占位符
|
||||
for(int i=0;i<10;i++){
|
||||
arr_append(a,i);
|
||||
arr_append(a,i+slave_addr_off());
|
||||
arr_append(a,0);// 成功
|
||||
arr_append_num(a,4,0);
|
||||
}
|
||||
@@ -291,7 +315,7 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||
// 默认失败
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
u->ack[i*6+0]=i;
|
||||
u->ack[i*6+0]=i+slave_addr_off();
|
||||
u->ack[i*6+1]=1;
|
||||
}
|
||||
tran_set_busy(t,1);
|
||||
|
Reference in New Issue
Block a user