嵌入式设备linux C,读串口的代码如下,通过串口调试工具按16进制发送数据,问题是每次读到0x00就停止,比如发送 31 00 32,只能接收31?
do
{
memset(buff, 0, BUFFER_SIZE);
if (nread = read(fd, buff, BUFFER_SIZE) > 0)
{
printf("The received words are : %s\n", buff);
}
sleep(1);
write(fd, buff, strlen(buff));
} while(strncmp(buff, "quit", 4));
do
{
memset(buff, 0, BUFFER_SIZE);
if (nread = read(fd, buff, BUFFER_SIZE) > 0)
{
printf("The received words are : %s\n", buff);
}
sleep(1);
write(fd, buff, strlen(buff));
} while(strncmp(buff, "quit", 4));
write(fd, buff, strlen(buff));//方法错误,长度不应该用字符串函数来计算,应该使用读到的数据长度。
修改为write(fd, buff, nread);
其他部分的逻辑判断 也应该根据情况来修改。,