




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux串口编程分析这个话题,大家可能再熟悉不过了,网上资料很多,因为这是linux下编程比较重要的一个方面,懂这方面的人很多;这里我只是想给初学者简单的介绍下这方面的知识:串口编程其实说白了, 是拿根串口线把电脑和所要控制的机器连接起来,然后在通过编程的方式对下位机进行发送指定的数据或进行控制,或进行传输,然后在接受下位机反馈回来的信息提示是否已经正确。是不是好俗!串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,当然,除了RS232 ,还有RS485和RS422两种规格,用于不同的设备通信;这里主要是介绍RS232串口编程。在串口编程中, 比较重要的是串口的设置,我们要设置的部分包括 波特率,数据位,停止位,奇偶校验位;要注意的是,每台机器的串口默认设置可能是不同的,如果你没设置这些,仅仅按照默认设置进行发送数据,很可能出现n 多异想不到而又查不出来的情况;所以,在真正通讯前,我们必须设置这些:下面就开始介绍这些基本设置的函数,(其实都是些固定框架,程序中稍微改改就行)o1.设置波特率注 意每台机器都有输出和输入接受信息的速度 ,所以用cfsetispeed 和cfsetospeed来分别设置;注意到struct termios 这样一个结构,它包括了串口端所有的设置,下面还要用到。它在termios.h中被定义。还有一个地方比较难以理解,为什么设置了speed_arr 和name_arr两个数组,这是因为在linuxe下,系统为波特率专门准备了一张表用B38400,B19200.代替,而我们实际上传进 去的只能是38400,19200这些值,所以我们拿我们传进去的和name_arr进行比较,如果相等则从系统对照表中取出相应值进行设置,如果不等证 明传的值在系统对照表中没有,则不进行设置。 int speed_arr = B38400, B19200, B9600, B4800, B2400, B1200, B300,/B38400, B19200, B9600, B4800, B2400, B1200, B300, ;int name_arr = 38400,19200,9600,4800,2400,1200,300,38400,19200,9600, 4800, 2400, 1200,300, ;void set_speed(int fd, int speed)int i;int status;struct termios Opt; /定义了这样一个结构tcgetattr(fd, &Opt); /用来得到机器原端口的默认设置for ( i= 0;i 0)set_speed(fd,19200); /打开后设置波特率19200elseprintf(Cant Open Serial Port!n);exit(0);if (set_Parity(fd,8,1,N)= FALSE) /设置8,1,n 注意,这里和上面要和下位机相符才可能通信printf(Set Parity Errorn);exit(1);/ 一般读的时候一般都用read ,写的时候一般都用write,read要注意阻塞后程序停止不动,所以要用select 进行控制,注意tv每次循环都要设置;write 不用考虑阻塞,但要用循环写方式保证一定写完,其实读最好也用循环读方式保证一定能读到所有东西并且能拼接在一起,然后在进行其他操作。最后while (1) 是串口通讯中常用的循环就是一直执行,直到碰到break;这些东西挺烦琐,不过其实也没什么。这里就不详细说了,下面是个最最简单的。while(1) while(nread = read(fd,buff
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖北-湖北计量检定工五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北管道工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北放射技术员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-海南-海南水土保持工二级(技师)历年参考题库含答案解析
- 2025-2030中国精炼铜行业盈利动态及投资规模预测报告
- 2025年事业单位工勤技能-河南-河南食品检验工三级(高级工)历年参考题库典型考点含答案解析
- 2025-2030中国穿王消炎胶囊产业前景战略规划与运行环境分析报告
- 2025年事业单位工勤技能-河南-河南检验员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南堤灌维护工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河北-河北动物检疫员一级(高级技师)历年参考题库含答案解析
- 风水服务合同
- 《住宅室内防水工程技术规范JGJ298-2013》
- 柴油罐及管道防腐施工方案
- JJG 703-2003光电测距仪行业标准
- 淋巴漏的护理诊断及护理措施
- 部编小学语文单元作业设计五年级上册第二单元
- 企业社会责任报告模板
- 25题后期-剪辑-特效岗位常见面试问题含HR问题考察点及参考回答
- 银行的表内、表外、表表外业务
- 石油化工行业历史沿革与发展展望
- 危险化学品(储存、生产、使用)企业安全风险辨识分级管控清单
评论
0/150
提交评论