关于嵌入式linux下的串口通讯问题---回车、换行、缓冲

2019-07-12 17:21发布

嵌入式Linux串口通讯测试问题:
  经过实验,从Linux(PC)通过串口向嵌入式Linux开发板发送数据时,串口初始化完毕后遇到回车(0x0d)或换行(0x0a)才开始从串口接收数据,回车或换行前的数据接收不到,回车或换行后的数据接收正常.从嵌入式Linux开发板通过串口向Linux(PC)发送数据,接收正常.无丢字符现象.请问这是为什么?两台Linux(PC)经过串口通讯接收正常. ----------------------------- 应该是你初始化不完整造成的.不知道你是直接端口操作还是访问的 ttySX来完成的. ----------------------------- ============================================================================= http://bbs.linuxpk.com/thread-33570-1-1.html 我现在编写了一个linux串口接收程序,接收时必须在发送信息的后面附带一个回车符,要不然它只会存在接受缓存中而不接收,我上网搜了,说是什么行缓冲的问题,但是不知道怎么去解决啊!
------------------------------------ 在linux串口中,默认的模式下只有但backspace按下的时候,才可以把缓冲区的数据提交给进程,linux提供了一个接口可以改变串口的这种默认的行为,详细信息可以查看 man termios ============================================================================   http://www.lslnet.com/linux/dosc1/06/linux-137429.htm(注:这个程序就是我用的一个能够实现接收串口数据的程序,其中把信息分开接收是因为设置的最少接收的字节数的问题,可以设置成大一些的数据)   现在想用串口接收数据,找了一个串口程序,前一段用的每问题。现在发现了一个问题,各位高手帮忙看一下如何解决?
    接受程序是这样的:(之前的初始化就不写了,肯定没问题)
                     char buff[512];
                   while((nread = read(fd,buff,10))>0)//fd是端口文件
                   {
                              printf("Len %d ",nread);
                              buff[nread]='