毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> linux >> 正文

修改了串口通信的代码板子发送的数据PC收不到 第6页

更新时间:2012-11-12:  来源:毕业论文
bsp;      nRet = close(fd);     if(-1 == nRet)     {         printf("Close Port Error!\n");     }     printf("Close Port Successful!\n"); }

1、判断你的串口线是否正确
2、判断你所用的串口设备是否正确
3、判断你的板子和PC之间的串口设置是否一致
还不行的话,建议用示波器进行判断:
当板子发送数据时,用示波器看看串口线上是否有波形。

把你这段代码,放到PC上(Linux OS)编译运行,让两台PC进行串口通讯。
如果没有问题那应该是板子的串口驱动程序有问题。
如果在PC上运行也有问题,再仔细查你的代码(稍微浏览了一下,没有发现明显的问题)。
在实际中的情况往往是非常多特例,比如,在用write发送数据时没有键入回车,信息就将发送不出去的情况,这主要是因为我们在输出输入时是按照 规范模式接受到回车或换行才发送,而非常多情况我们是不必回车和换行的,这时,应当转换到行方式输入,设置options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);不经处理直接发送。

又比如在我们发送字符0x0d的时候,往往接受端得到的字符是0x0a 这是怎么回事,原因是在串口设置中c_iflag和c_oflag中存在从NL-CR 和CR-NL的映射,也就是说,串口能把回车和换行看成一个字符,所以,此时我们应该屏蔽掉这些,用options.c_oflag &=~(INLCR|IGNCR|ICRNL|);和options.c_oflag &=~(ONLCR|OCRNL); 进行设置。

1,首先用超级终端测试该串口是否是通的。我曾今遇到这种情况,串口线绝对是好的。设备绝对是好的。

但是就是不同。最后找了很久才发现,原来我的开发板串口竟然没有交叉!!!RXD  Txd竟然没有交叉!!

2.先不着急发送别的,先测试发送单个字符。

然后对于串口设置,设置好几就ok了。主要的问题恐怕就是设置阻塞那一段属性需要你自己去式。其他没什么

困难的了

我也用过这段代码,也是无法通信,后来网上查了下,在set_Parity的设置options的设置改成如下就可以了
    options.c_cflag |= CLOCAL | CREAD;
    options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
    options.c_oflag &= ~OPOST;
    options.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); int set_Parity(int ai_com,uchar ai_databits,uchar ai_stopbits,uchar ai_parity)
{
    struct termios options;
    if  ( tcgetattr( ai_com,&options)  !=  0)
    {
        return ERROR_LOAD_COMINFO;
    }
    options.c_cflag |= CLOCAL | CREAD;
    options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
    options.c_ofl

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©chuibin.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。