嵌入式设备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));

解决方案 »

  1.   

    printf("The received words are : %s\n", buff);   这行只能打出 0x31 了。要用循环来打 %X
      

  2.   

    strlen 函数以’\0’(等于数值0)判断是否到到字符串尾,你那strlen 计算出来的长度是1,其实你只读了一个字节
      

  3.   

    sorry,write一个字节
      

  4.   

    strlen 函数以’\0’(等于数值0)判断是否到到字符串尾;收发数据时注意使用
      

  5.   


    write(fd, buff, strlen(buff));//方法错误,长度不应该用字符串函数来计算,应该使用读到的数据长度。
    修改为write(fd, buff, nread);
    其他部分的逻辑判断 也应该根据情况来修改。,
      

  6.   

    不要是用strlen 直接使用长度