第五章 Linux串口和网络编程.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 Linux串口和网络编程.ppt

教学内容 第一章 嵌入式系统概述 第二章 学习板硬件及开发环境的建立 第三章 构建嵌入式Linux系统 第四章 嵌入式Linux设备驱动 第五章 嵌入式Linux串口和网络编程 第六章 嵌入式Linux图形编程 第五章 Linux串口和网络编程 5.1 嵌入式Linux应用程序开发方法 5.2 嵌入式Linux串口编程 5.3 嵌入式Linux网络编程 5.2 linux串口应用开发 串口概述 串口设置 串口使用详解 5.2.1 串口概述 用户常见的数据通信的基本方式有两种: 并行通信; 串行通信; 串行通信是计算机常用的接口,如:RS-232-C接口。该标准规定采用一个DB25芯引脚连接器或DB9芯引脚连接器。 芯片内部常具有UART控制器,其可工作于Interrupt(中断模式)或DMA(直接内存访问)模式。 UART的操作主要包括以下几个部分: 数据发送; 数据接收; 产生中断; 产生波特率; Loopback模式; 红外模式; 自动流控模式; 串口参数的配置主要包括:波特率、数据位、停止位、流控协议。 linux中的串口设备文件存放于/dev目录下,其中串口一,串口二对应设备名依次为“/dev/ttyS0”、“/dev/ttyS1”。 在linux下操作串口与操作文件相同。 5.2.2 串口设置 在使用串口之前必须设置相关配置,包括:波特率、数据位、校验位、停止位等。串口设置由下面结构体实现: 该结构中c_cflag最为重要,可设置波特率、数据位、校验位、停止位。在设置波特率时需在数字前加上‘B’,如B9600。B19200。使用其需通过“与”“或”操作方式。 输入模式c_iflag成员控制接收端的字符输入处理。 串口控制函数 Tcgetattr 取属性(termios结构) Tcsetattr 设置属性(termios结构) cfgetispeed 得到输入速度 Cfgetospeed 得到输出速度 Cfsetispeed 设置输入速度 Cfsetospeed 设置输出速度 Tcdrain 等待所有输出都被传输 tcflow 挂起传输或接收 tcflush 刷清未决输入和/或输出 Tcsendbreak 送BREAK字符 tcgetpgrp 得到前台进程组ID tcsetpgrp 设置前台进程组ID 串口配置流程 保存原先串口配置使用tcgetattr(fd,oldtio)函数 struct termios newtio,oldtio; tcgetattr( fd,oldtio ); 激活选项有CLOCAL和CREAD,用于本地连接和接收使能。 newtio.c_cflag | = CLOCAL | CREAD; 设置波特率,使用函数cfsetispeed、 cfsetospeed cfsetispeed(newtio, B115200); cfsetospeed(newtio, B115200); 设置数据位,需使用掩码设置。 newtio.c_cflag = ~CSIZE; newtio.c_cflag |= CS8; 设置奇偶校验位,使用c_cflag和c_iflag。 设置奇校验: newtio.c_cflag |= PARENB; newtio.c_cflag |= PARODD; newtio.c_iflag |= (INPCK | ISTRIP); 设置偶校验: newtio.c_iflag |= (INPCK | ISTRIP); newtio.c_cflag |= PARENB; newtio.c_cflag = ~PARODD; 6. 设置停止位,通过激活c_cflag中的CSTOPB实现。若停止位为1,则清除CSTOPB,若停止位为2,则激活CSTOPB。 newtio.c_cflag = ~CSTOPB; 7. 设置最少字符和等待时间,对于接收字符和等待时间没有特别要求时,可设为0。 newtio.c_cc[VTIME] = 0; //等待超时n*100ms newtio.c_cc[VMIN] = 0; //最少接收字符数 8. 处理要写入的引用对象 tcflush函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)或输出缓存(用户程序已经写,但尚未发送)。 int tcflush(int filedes, int queue ) queue数应当是下列三个常数之一: ? TCIFLUSH 刷清输入队列。 ? TCOFLUSH 刷清输出队列。

文档评论(0)

cai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档