- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串口应用编程 主讲教师:文全刚 wen_sir_125@163.com 内容提要 Linux下的串口驱动 Linux下的串口编程 标准I/O开发 一.Linux下的串口驱动 串口数据结构 用到的函数 串口设置 串口结构 最基本的设置串口包括波特率设置,效验位和停止位设置。 串口的设置主要是设置 struct termios 结构体的各成员值 struct termio{???????? unsigned short? c_iflag;??? /* 输入模式标志 */? ????????? unsigned short? c_oflag;?? /* 输出模式标志 */? ????????? unsigned short? c_cflag;??? /* 控制模式标志*/?? ????????? unsigned short? c_lflag;? /* local mode flags*/???????? ????????? unsigned char? c_line;?????????/* line discipline */????? ????????? unsigned char? c_cc[NCC];??? /* control characters */};该结构位于include/asm/termios.h c_cflag:控制模式标志 用户设置波特率、字符大小、数据位、停止位、奇偶校验位和硬件流控等 其具体含义见P185表6.10 c_iflag: 输入模式标志 控制端口接收端的字符输入处理,其具体含义见P185表6.11 c_cc:控制字符 超时参数和控制字符的定义,具体见P186表6.12 2.用到的函数 int tcsetattr(int fd,int opt_DE,*ptr); 用来设置终端控制属性 fd:待操作的文件描述符 Opt_DE:选项值,有如下3个选项: TCSANNOW:不等数据传输完毕就立即改变属性 TCSADRAIN:等所有数据传输结束才改变属性 TCSAFLUSH:清空输入输出缓冲区才改变属性 *ptr:指向termios结构的指针 函数返回:成功返回0,失败返回-1 int tcgetattr(int fd,*ptr); 用来获取终端控制属性,它把串口的默认设置赋给了termios数据结构。 fd:待操作的文件描述符 *ptr:指向termios结构的指针 函数返回:成功返回0,失败返回-1 3.串口设置 获取原先串口的配置 激活本地连接和接收使能 设置波特率 设置字符大小 设置奇偶校验位 设置停止位 设置最少字符和等待时间 处理要写入的引用对象 激活配置 P187-188 //修改控制模式, 保证程序不会占用串口new_opt.c_cflag |= CLOCAL;//修改控制模式,使得能够从串口中读取输入设置new_opt.c_cflag |= CREAD; 设置数据位new_opt.c_cflag = ~CSIZE;new_opt.c_cflag |= CS8; 效验位和停止位的设置: //修改new_opt结构中的串口输入输出波特率参数cfsetispeed (new_opt, baud_rate);cfsetospeed (new_opt, baud_rate); Tcflush(fd,queue_selector) 在串口重新设置后,在此之前的数据要重新处理,处理方法取决于queue_selector: TCIFLUSH:刷新收到的数据但是不读 TCOFLUSH:刷新写入的数据但是不传送 TCIOFLUSH:同时刷新写入的数据但是不读,并且刷新写入的数据但是不传送 二.Linux下的串口编程 串口操作需要的头文件 串口常见操作 串口编程实例分析 1.串口操作需要的头文件 #include???? stdio.h????? /*标准输入输出定义*/#include???? stdlib.h???? /*标准函数库定义*/#include???? unistd.h???? /*Unix 标准函数定义*/#include???? sys/types.h? #include???? sys/stat.h?? #include???? fcntl.h????? /*文件控制定义*/#include???? termios.h??? /*PPSIX 终端控制定义*/#include???? errno.h????? /*错误号定义*/ 2.串口操作常用函数 打开串口 串口设置 读写串口 关闭串口 打开串口 Linux 下串口文件是位于 /dev 下的 串口一 为 /dev/ttyS0 串口二 为 /dev/ttyS1 打
您可能关注的文档
最近下载
- 高标准农田项目施工部项目管理班子的人员岗位职责工.docx VIP
- 电气二次培训基地继电保护试题库填空题 .pdf VIP
- DeepSeek+AI大模型赋能智能制造数字化工厂供应链大数据解决方案.pptx VIP
- JEDEC JESD85-2001Methods fo 国外国际规范.pdf VIP
- 免疫治疗-(精品课件).ppt VIP
- 赛迪:中国大数据区域发展水平评估报告.docx VIP
- 全国灌溉水有效利用系数测算分析技术指导细则(2024修订版)知识培训.pptx VIP
- 生物化学与基础分子生物学实验智慧树知到课后章节答案2023年下中山大学.docx VIP
- 中考词汇1600分类速记表 (1)(1)(1).pdf VIP
- 全季酒店--香氛设备布点原则.pdf VIP
文档评论(0)