不可避免的
你需要把接收来的char类型数组逐一转化为整形int,或者十六进制的数,等
char-->int-->0xxx......
int i_char_to_int,i_for_LED,lenth;
unsigned char rec[100]={'E','0','1','F'};//--云平台发来的:原始字符
int char_to_int_rec[100]; //--将字符转化为int数:[1]'0'->0('0'-'0') ; [2]'F'->15('F'-'A'+10);
int rec_for_LED[100]; //--将两两整形变成1个整形:xy->x*16+y!!!我的程序是十六进制控制的显示内容
lenth=strlen(rec);
printf("%d\r\n",lenth);
step1、char-->int
for(i_char_to_int=0;i_char_to_int<lenth;i_char_to_int++)
{
if((rec[i_char_to_int]-'0')<=9){
char_to_int_rec[i_char_to_int]=rec[i_char_to_int]-'0';
}
else{
char_to_int_rec[i_char_to_int]=rec[i_char_to_int]-'A'+10;
}
printf("%d\r\n",char_to_int_rec[i_char_to_int]);
}
for(i_for_LED=0;i_for_LED<(lenth/2);i_for_LED++){rec_for_LED[i_for_LED]=(char_to_int_rec[i_for_LED*2])*16 + (char_to_int_rec[i_for_LED*2+1]);printf("%d\r\n",rec_for_LED[i_for_LED]);}step1、int-->0xxx
LED_my_check(rec_for_LED);step1、放入显示中
void LED_my_check(int ZIMO[]) { GPIO_WriteBit(GPIOB,GPIO_Pin_11,ZIMO[0] & 0x01); GPIO_WriteBit(GPIOB,GPIO_Pin_10,ZIMO[0] & 0x02); GPIO_WriteBit(GPIOB,GPIO_Pin_1, ZIMO[0] & 0x04); GPIO_WriteBit(GPIOB,GPIO_Pin_0, ZIMO[0] & 0x08); GPIO_WriteBit(GPIOA,GPIO_Pin_7,ZIMO[0] & 0x10); GPIO_WriteBit(GPIOA,GPIO_Pin_6,ZIMO[0] & 0x20); GPIO_WriteBit(GPIOA,GPIO_Pin_5,ZIMO[0] & 0x40); GPIO_WriteBit(GPIOA,GPIO_Pin_4,ZIMO[0] & 0x80); GPIO_WriteBit(GPIOB,GPIO_Pin_3,ZIMO[1] & 0x01); GPIO_WriteBit(GPIOB,GPIO_Pin_4,ZIMO[1] & 0x02); GPIO_WriteBit(GPIOA,GPIO_Pin_1,ZIMO[1] & 0x04); GPIO_WriteBit(GPIOA,GPIO_Pin_0,ZIMO[1] & 0x08); GPIO_WriteBit(GPIOC,GPIO_Pin_15,ZIMO[1] & 0x10); GPIO_WriteBit(GPIOC,GPIO_Pin_14,ZIMO[1] & 0x20); GPIO_WriteBit(GPIOC,GPIO_Pin_13,ZIMO[1] & 0x40); GPIO_WriteBit(GPIOC,GPIO_Pin_12,ZIMO[1] & 0x80); } */