|
楼主 |
发表于 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);
}
}
|
|