最近在英伟达开发板上进行串口编程,发现了一个奇怪的问题,自己用C写的串口程序读取的数据会错乱。后来偶然间发现,先用minicom串口助手打开串口,再运行自己写的串口读写程序,读取的数据就正常了。利用stty -a < /dev/hq命令,分别在第一次打开minicom、第一次打开自己写的串口程序利用该命令查看串口信息,对比如下:
框红的为不同之处,因此,在代码中添加如下:
options.c_cflag &= ~HUPCL;
options.c_iflag &= ~INPCK;
options.c_iflag |= IGNBRK;
options.c_iflag &= ~ICRNL;
options.c_iflag &= ~IXON;
options.c_lflag &= ~IEXTEN;
options.c_lflag &= ~ECHOK;
options.c_lflag &= ~ECHOCTL;
options.c_lflag &= ~ECHOKE;
options.c_oflag &= ~ONLCR;