|  | 
 
 
 楼主|
发表于 2022-3-30 23:17:11
|
显示全部楼层 
| 这个函数为串口屏下发处理函数 我建立了两个数组分别是掉电保存和实时状态
 uint8 save_buf[30];//存位操作
 uint8 operation_buf[30];//存位操作
 
 
 int16_t my_screen_message_parsing(uint8_t *buff,uint8_t len)
 {
 int u=7;
 uint8_t *rx_buf=NULL;
 uint8 date_len;
 uint8 i = 0;
 uint16_t control_addr;
 
 rx_buf=buff;
 if((*(rx_buf)==0x5A)&&(*(rx_buf+1)==0xA5)&&(*(rx_buf+3)==0x83))//串口屏下发数据
 {
 
 date_len=*(rx_buf+6)*2;//信息长度单位是字长不是字节
 //os_printf("date_len is %d \r\n",date_len);
 if (*(rx_buf+4)==0x11)
 {
 local_date_change_flag=1;
 if (*(rx_buf+5)==0x94)//输入的是账号
 {
 
 for ( i = 0; i < 32; i++)
 {
 STA_Config_Struct.ssid=0;
 }
 for ( i = 0; i < date_len; i++)
 {
 STA_Config_Struct.ssid= *(char*)(rx_buf+u);
 u++;
 if (*(rx_buf+u)==0xFF)
 {
 date_len=1;
 }
 //os_printf("get STA_Config_Struct.ssid [%s] ",STA_Config_Struct.ssid);
 }
 
 }
 if (*(rx_buf+5)==0x9E)//输入的是密码
 {
 for ( i = 0; i < 64; i++)
 {
 STA_Config_Struct.password=0;
 }
 for ( i = 0; i < date_len; i++)
 {
 STA_Config_Struct.password= *(char*)(rx_buf+u);
 u++;
 if (*(rx_buf+u)==0xFF)
 {
 date_len=1;
 }
 }
 }
 }
 else if ((*(rx_buf+4)==0x13)&&(*(rx_buf+5)==0xA6))
 {
 
 wifi_get_message_success_flag=1;
 }
 else if ((*(rx_buf+4)==0x10)&&date_len>=2)
 {
 
 control_addr=((*(rx_buf+4)<<8|*(rx_buf+5))-4100)/10;//取出控件地址运算得到本地数组地址
 if (control_addr>=10)//输入的数据需要保存
 {
 if (control_addr==22)
 {
 local_date_change_flag=4;
 }
 else if (control_addr==23)
 {
 local_date_change_flag=5;
 }
 else if (control_addr==24)
 {
 local_date_change_flag=6;
 }
 save_buf[control_addr-10]=(*(rx_buf+8));
 os_printf("get save_buf[%d] is %d \r\n",control_addr-10,save_buf[control_addr-10]);
 need_flash_update_flag=1;
 }
 else//输入的实时数据
 {
 local_date_change_flag=3;
 operation_buf[control_addr]=(*(rx_buf+8));
 if (control_addr>4)
 {
 my_local_time_refresh_flag=1;
 }
 os_printf("get operation_buf[%d] is %d \r\n",control_addr,operation_buf[control_addr]);
 }
 }
 
 
 
 
 }
 }
 
 
 
 
 这个函数是一个刷屏函数,展示如何刷新wifi信息在串口屏上
 int my_screen_wifi_message_sending(int k)//刷新wifi信息
 {
 int len=0;
 memset(aTxBuffer,0,sizeof(aTxBuffer));
 if(k==0)//刷屏账号
 {
 wifi_station_get_config(&STA_Config_Struct);
 len=strlen(STA_Config_Struct.ssid);
 aTxBuffer[0]  = 0x5A;         //帧头
 aTxBuffer[1]  = 0xA5;         //帧头
 aTxBuffer[2]  = len+3;         //数据长度
 aTxBuffer[3]  = 0x82;         //数据类型
 aTxBuffer[4]  = 0x11;         //地址高
 aTxBuffer[5]  = 0x94;   //地址低((*(rx_buf+4)<<8|*(rx_buf+5))-4280)/10
 strcat(aTxBuffer, STA_Config_Struct.ssid);
 uart0_tx_buffer(aTxBuffer,SENDBUFF_SIZE);
 }
 if(k==1)//刷屏账号
 {
 //wifi_station_get_config(&STA_Config_Struct);
 len=strlen(STA_Config_Struct.password);
 aTxBuffer[0]  = 0x5A;         //帧头
 aTxBuffer[1]  = 0xA5;         //帧头
 aTxBuffer[2]  = len+3;         //数据长度
 aTxBuffer[3]  = 0x82;         //数据类型
 aTxBuffer[4]  = 0x11;         //地址高
 aTxBuffer[5]  = 0X9E;   //地址低((*(rx_buf+4)<<8|*(rx_buf+5))-4280)/10
 strcat(aTxBuffer, STA_Config_Struct.password);
 uart0_tx_buffer(aTxBuffer,SENDBUFF_SIZE);
 }
 
 }
 
 
 
 | 
 |