- 论坛徽章:
- 0
|
需要解决:
1 将字符串转成16进制发送的问题
2 将收到的16进制转成字符
假定通过串口的write向单片机发送如下16进制数据,write函数需要如何写
0xAA 0x8A 0x00 0x00 0xA1 0x04 0xFF 0xFF 0xFF 0xFF 0xA1 0x4A
单片机收到后,会返回
0xAA 0xA1 0xFF
或
0xAA 0xA2 0xFF
read函数該如何写呢?我需要根据收到的字节做不同的判断,再做不同的处理
最低级的想法是,当作字符串来处理的,但这应该是不行的,
/* write*/
char buffer[]="0xAA 0x8A 0x00 0x00 0xA1 0x04 0xFF 0xFF 0xFF 0xFF 0xA1 0x4A";
int nwrite = write(fd,buffer,strlen(buffer));
printf("nwrite=%d\n",nwrite);
/*read*/
unsigned char buffer[15];
while(1){
while((nread = read(fd,buffer,14))>0){ /*从串口读取16进制字节*/
buffer[nread]=0;
printf("buffer is %s\n", buffer);
}
}
这个读,如果返回的是可打印字符是OK的,但如果不是可打印字符就成乱码了。
CU上看到有说用snprintf(buf, sizeof(buf), "%02X", (unsigned char)*p)
没理解
请教各位有经验的兄弟了 |
|