- 1
- 0
- 约2.34万字
- 约 37页
- 2018-01-05 发布于湖北
- 举报
Linux下驱动程序设计示例 Linux操作系统对串口有着很好的支持,其中的串口驱动程序对用户屏蔽了底层硬件的相关信息,而且为用户提供了一系列的标准调用函数,极大的方便了串口通信的操作。用户编写串口应用程序的时候不需要考虑硬件相关的问题,只需要根据Linux操作系统提供的调用函数来实现自己需要的功能。 在Linux操作系统下,串口是被当做文件来对待的,因此对它进行数据收发等效于对文件进行读写操作。对串口的操作一般分为四个步骤:打开串口、设置串口、读写串口和关闭串口。 (1)打开串口 在ARM平台中Linux操作系统下的串口设备文件为/dev/ttySAC0。 示例程序如下: int fd; fd = open( /dev/ttySAC0, O_RDWR) ; /*以读写方式打开串口*/ if (fd == -1) ; /*如果打开串口错误则输出提示信息*/ { perror(Cant Open Serial Port); } (2)设置串口 与无操作系统的情况下对串口进行初始化设置类似,在Linux下最基本的串口设置工作主要包括波特率、校验位和停止位的设置,其设置方式主要是对struct termios结构体各成员值进行设置。 在不同应用中通常需要设置的波特率及数据格式等参数都不一样,可以将结构体成员赋值的功能编写成函数,通过对该函数入口参数的修改,即可方便的实现不同的设置。 波特率设置函数 void set_speed(int fd, int speed){ int i; int status; struct termios Opt; tcgetattr(fd, Opt); /*得到机器原端口的默认设置*/ for ( i= 0; i sizeof(speed_arr) / sizeof(int); i++) { if (speed == name_arr[i]) { tcflush(fd, TCIOFLUSH); /*清除输入/输出数据*/ cfsetispeed(Opt, speed_arr[i]); //设置输入波特率 cfsetospeed(Opt, speed_arr[i]); //设置输出波特率 status = tcsetattr(fd, TCSANOW, Opt); //将设置写入串口 if (status != 0) { perror(tcsetattr fd1); return; } tcflush(fd,TCIOFLUSH); } } } 数据格式设置函数 int set_Parity(int fd,int databits,int stopbits,int parity) { struct termios options; if ( tcgetattr( fd,options) != 0) { /*得到机器原端口的默认设置*/ perror(SetupSerial 1); return(FALSE); } options.c_cflag = ~CSIZE; switch (databits) //设置数据位个数 { case 7: options.c_cflag |= CS7; //设置数据位为7位 break; case 8: options.c_cflag |= CS8; //设置数据位为8位 break; default: fprintf(stderr,Unsupported data sizen); return (FALSE); } 数据格式设置函数 switch (stopbits) //设置停止位个数 { case 1: options.c_cflag = ~CSTOPB; //设置停止位为1位 break; case 2: options.c_cflag |= CSTOPB; //设置停止位为2位 break; default: fprintf(stderr,Unsupported stop bit
您可能关注的文档
最近下载
- 《我的世界》诉《迷你世界》二审判决书.pdf VIP
- 等比数列说课市名师优质课比赛一等奖市公开课获奖课件.pptx VIP
- 中韩家庭伦理剧对比分析.doc VIP
- 2026-2030中国锌溴电池行业市场发展趋势与前景展望战略分析研究报告.docx
- 2025年等比数列说课课件.pdf VIP
- 短剧演员合同模板(3篇).docx VIP
- 2025年贵州省情省况核心知识点考核复习题库(含答案).docx
- 良品铺子股份有限公司成本控制问题分析.doc VIP
- JB∕T 11164-2021 吊钩抛丸清理机 技术条件.pdf
- 中国专家共识解读:内分泌性高血压继发性高血压院前与急诊诊治指南(2025版)PPT课件.pptx VIP
原创力文档

文档评论(0)