问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux下串口通信丢字节的问题是怎么样解决

发布网友 发布时间:2022-04-25 11:59

我来回答

1个回答

热心网友 时间:2024-02-27 09:41

int con=atoi(portstr);
unsigned char Port_file_name[30];
int fd0,rc;
struct termios ts0;
switch (con)
{ //选项O_NOCTTY 表示不能把本串口当成控制终端,否则用户的键盘输入信息将影响程序的执行
//O_NDELAY表示打开串口的时候,程序并不关心另一端的串口是否在使用中
case 1: fd0=open("/dev/ttyM0",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 2: fd0=open("/dev/ttyM1",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 3: fd0=open("/dev/ttyM2",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 4: fd0=open("/dev/ttyM3",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 5: fd0=open("/dev/ttyM4",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 6: fd0=open("/dev/ttyM5",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 7: fd0=open("/dev/ttyM6",O_RDWR | O_NOCTTY | O_NDELAY); break;
case 8: fd0=open("/dev/ttyM7",O_RDWR | O_NOCTTY | O_NDELAY); break;
default : fd0=open("/dev/ttyM0",O_RDWR | O_NOCTTY | O_NDELAY); break;
}

tcgetattr(fd0,&ts0);
bzero(&ts0,sizeof(struct termios));
switch (gytype)
{
case 1:{ts0.c_cflag |= B300 | CS7 | CLOCAL | CREAD | PARENB ;
ts0.c_cflag &= ~PARODD; // 转换为偶效验
ts0.c_iflag |= INPCK; // Disnable parity checking
break; }
case 2:{ts0.c_cflag |= B1200 | CS8 | CLOCAL | CREAD | PARENB ;
ts0.c_cflag &= ~PARODD; // 转换为偶效验
ts0.c_iflag |= INPCK; // Disnable parity checking
break;
}
case 3:{
ts0.c_cflag |= B9600 | CS8 | CLOCAL | CREAD ;
ts0.c_cflag &= ~PARENB; // Clear parity enable
ts0.c_iflag &= ~INPCK; // Enable parity checking
break;
}
case 4:{ts0.c_cflag |= B9600 | CS8 | CLOCAL | CREAD | PARENB ;
ts0.c_cflag &= ~PARODD; // 转换为偶效验
ts0.c_iflag |= INPCK; // Disnable parity checking
break;
}
}

ts0.c_lflag &= ~ECHO;
ts0.c_lflag &= ~ECHONL;
ts0.c_iflag &= ~IXOFF;
ts0.c_iflag &= ~IXON;
ts0.c_cflag &= ~CSIZE;
switch (gytype)
{
case 1:{ts0.c_cflag |= CS7 ; break;}
case 2:{ts0.c_cflag |= CS8 ; break;}
case 3:{ts0.c_cflag |= CS8 ; break;}
case 4:{ts0.c_cflag |= CS8 ; break;}
}

ts0.c_lflag &= ~ICANON; //如果设置使能规范输入,否则使用原始数据(本文使用)
ts0.c_oflag &= ~ONLCR; //如果设置将NL转换成CR-NL后输出
ts0.c_iflag &= ~INLCR; //如果设置将接收到的NL(换行)转换成CR(回车)。
ts0.c_cc[VMIN] = 0; //最少可读数据
ts0.c_cc[VTIME] = 0; //等待数据时间(10秒的倍数)
ts0.c_cflag &= ~CSTOPB; //如果设置则使用两个停止位 ,如果取消则使用一个停止位
ts0.c_iflag |= IGNBRK; //如果设置则忽略接收到的break信号
ts0.c_lflag &= ~IEXTEN; //如果设置则启用实现自定义的输入处理
ts0.c_lflag |= NOFLSH; //如果设置则禁止产生SIGINT,SIGQUIT和SIGSUSP信号时刷新输入和输出队列
switch (gytype)
{
case 1:{rc = cfsetospeed(&ts0,B300);break; }
case 2:{rc = cfsetospeed(&ts0,B1200);break; }
case 3:{rc = cfsetospeed(&ts0,B9600);break; }
case 4:{rc = cfsetospeed(&ts0,B9600);break; }
}
rc = tcsetattr(fd0,TCSAFLUSH,&ts0);
return fd0;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桂林医学院王牌专业排名一览表 桂林医学院是几本院校 桂林医学院一流本科专业建设点名单 无锡有哪些这方面的公司啊? 南京方东通信系统工程有限公司怎么样 容留他人吸毒一般怎么处罚 容留他人吸毒罪会受到什么样的处罚 容留他人吸毒,不够成犯罪,拘留十五天以下,几天以上 安庆市附近好玩的景点 安庆周边旅游景点大全排名 linux串口通信代码解释,一句一句来 linux系统中串口如何通讯 ps的封面横屏16:9的参数是多少 一家天猫店铺转让大概多少钱入手比较好! 天猫转让有风险吗? 天猫旗舰店可以转让吗?怎么进行转让? 天猫商城怎么过户手续需要哪些 天猫商城过户需要什么手续? 天猫店铺主体变更怎么操作? 天猫店铺转让时需要把公司一并转让吗? pu在工业中的应用有那些 “濮”的简写怎么在电脑上打出来? 滑板的PU垫是什么?在哪? 鞋的材料,怎样识别PVC和PU 怎样分辨TpR材料和pu材料 怎样挑选PU材质的衣服? pu口袋校园选课在哪里看 PU皮衣怎么保养和清洁 如何在聚氨酯和pp材料间进行粘结 pu膜和Pu膜怎么能接在一起 linux下串口通信,第一次可以读数据,然后往串口写数据,再读数据却读不... linux串口通讯简单问题 linux系统怎么串口通信? 怎么提高linux下的串口通信效率 为什么linux串口通信发送成功接收不成功 linux下实现了双向串行通信,目前只能发送字符串,但如何实现:1.汉字的... 怎么在Linux下通过串口通信啊?树莓派! 怎样用C/C++在Linux系统实现串口通讯 Linux c 串口通信 nread=0,求分析 Linux下的串口通信C语言代码和 Windows下的代码一样吗? 嵌入式linux系统怎么实现串口通信 关于linux与Windows串口通信问题? 怎样在LINUX下使用JAVA控制串口通讯 可以用手机APP将邮政储蓄卞的钱转到建设银行吗? 城乡居民养老保险在陕西养老app中要不要绑定社保卞? 得力条码标签打印机dl-888d为什么打印出来空纸多? 得力888d打印条码机怎么设置电脑上的数据,为什么老是有空白的,打不 得力888D打印机怎么制作条形码 得力888d打印机如何连续打印第二次? 16:9比例分辨率有哪些