linux下串口编程简单实例.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:12 大小:173KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

linux下串口编程简单实例.pdf

linux下串口编程简单实例.pdf

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

linux下串口编程简单实例1、linux中的串口设备/dev目录下文件存放于,其中“/dev/ttyS0串”、口一,串口二对应设备名依次为“/dev/ttyS1”。在linux下操作串口与操作文件相同。2、在使用串口之前必须设置相关配置,包括:波特率、数据位、校验位、停止位等。串口设置由下面结构体实现:de>structtermios{tcflag_tc_iflag;/*inputflags*/tcflag_tc_oflag;/*outputflags*/tcflag_tc_cflag;/*controlflags*/tcflag_tc_lflag;/*localflags*/cc_tc_cc[NCCS];/*controlcharacters*/};de>该结构中c_cflag最为重要,可设置波特、数据位、校验位、停止位。在设置波特率‘B’,率时需在数字前加上如B9600、B19200。使用其需“与”“或”操作方式。通过常用的串口控制函数:Tcgetattr取属性(termios结构)Tcsetattr设置属性(termios结构)cfgetispeed得到输入速度Cfgetospeed得到输出速度Cfsetispeed设置输入速度Cfsetospeed设置输出速度tcflush刷清未决输/或输出入和3、串口的配置(1)保存原先串tcgetattr(fd,&oldtio)函数:口配置使用structtermiosnewtio,oldtio;tcgetattr(fd,&oldtio);(2)激活选项有CLOCAL和CREAD,用于本地连接和接收使能。newtio.c_cflag|=CLOCAL|CREAD;(3)设置波特率cfsetispeed、cfsetospeed,使用函数cfsetispeed(&newtio,B115200);cfsetospeed(&newtio,B115200);(4)设置数据位,需使用掩码设置。newtio.c_cflag&=~CSIZE;newtio.c_cflag|=CS8;(5)设置奇偶校验位,使用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;newtio.c_cc[VMIN]=0;(8)处理要写入的引用对象tcflush函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)或输出缓存(用户程序已经写,但尚未发送)。inttcflush(intfiledes,intqueue)queue数应当是下列三个常数之一:?TCIFLUSH刷清输入队列。?TCOFLUSH刷清输出队列。?TCIOFLUSH刷清输入、输出队列。如:tcflush(fd,TCIFLUSH);(9)激活配置。在完成配置后,需激活配置使其生效。使用tsettattr()函数。原型:inttcgetattr(intfiledes,structtermios*termptr);inttcsetattr(intfiledes,intopt,conststructtermios*termptr);tcsetattr的参数opt使我们可以指定在什么时候新的终端属性才起作用。opt可以指定为下列常数中的一个:?TCSANOW更改立即发生。?TCSADRAIN发送了所有输出后更改才发生。若更改输出参数则应使用此选择项。?TCSAFLUSH发送了所有输出后更改才发生。更进一步,在更改发生时未读的所有输入数据都被删除(刷清)使用如:tcsetattr(fd,TCSANOW,&newtio)4、在配置完串口的相关属性后,就可对串口进行打开,读写操作了。其使用方式与文件操作一样,区别在于串口是一个终端设备。(1)打开串口fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);Open函数中除普通参数外,另有两个参数O