谢谢你热情给力的解析,还把代码增加了注释。非常感谢。希望占用您宝贵时间帮我看看下面的代码。给点思路和办法我。谢谢。
遇到的难点:
1) 如何把len这个长度字段插入到数据包的第3个字节。
2)由于有效数据部分是不确定的。可能有时是3个字节,也有可能是四个字节。如何把这些直接传递给Join_Test_Parameter函数来正确的产生一个数据包。
3)也许可用一个数组把想要的参数一次全部打包丢给Join_Test_Parameter这个函数处理吧。可是我不知道怎么实现。
谢谢大家,特别是谢谢这个ydatou友情帮忙
void Join_Test_Parameter(unsigned char len,unsigned char cmd,unsigned short var_add,unsigned short jdata){
unsigned char par_buf[15],cnt=0;
par_buf[cnt++]= (Pack_Head&0xFF00)>>8;
par_buf[cnt++]= Pack_Head&0xFF;
par_buf[cnt++]=len;
par_buf[cnt++]= cmd;
par_buf[cnt++]=(var_add&0xFF00)>>8;
par_buf[cnt++]=var_add&0xFF;
par_buf[cnt++]=(jdata&0xFF00)>>8;
par_buf[cnt++]=jdata&0xFF;
Send_Test_Parameter(par_buf,cnt);
}
void Get_Test_Gear(){
if(REC_COMPLETED){
REC_COMPLETED=0;
if(USART_RX_BUF[1]==0x31){
switch(USART_RX_BUF[2]){
case 0x00: TEST_GEAR=0;
Join_Test_Parameter(0x05,WriteCmd,0x1200,0x61B); //写入电压
Join_Test_Parameter(0x05,WriteCmd,0x1250,0x145); //写入电流
Join_Test_Parameter(0x05,WriteCmd,0x1300,0x1fb); //写入功率
Join_Test_Parameter(0x07,WriteCmd,0x1350,0x34 0x35 0x57 0x00); //写入测试标识
Join_Test_Parameter(0x08,WriteCmd,0x1400,0x50 0x41 0x53 0x53 0x00); //写入测试结果(pass或fail)
Join_Test_Parameter(0x05,WriteCmd,0x1653,0x0400); //改变字体颜色
Join_Test_Parameter(0x05,WriteCmd,0x1500,0x1455); //写入最大值
Join_Test_Parameter(0x05,WriteCmd,0x1200,0x13F1); //写入平均值
Join_Test_Parameter(0x05,WriteCmd,0x1200,0x1389); //写入最小值
break;
case 0x10: TEST_GEAR=1;
........
}
}
}
|