- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux下的串口编程
Linux下的串口编程(二)分类:?Linux?S303-21 15:52?5557人阅读?评论(1)?收藏?举报linux编程终端terminalstruct测试Linxu下的串口编程(二)?/************声明:本人只是见到这篇文章对我帮助很大才转载的,但是这个完整的程序里面本来有语法错误的,现在让我改过来了************/---------------------------------------------------------Author?????????????:tiger-johnWebSite????????????:/tigerjbEmail???????????????:jibo.tiger@Update-Time???: 2011年2月14日星期一?Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人联系或留言给我。3Q---------------------------------------------------------??前面已经提到过Linux下皆为文件,这当然也包括我们今天的主角àUART0串口。因此对他的一切操作都和文件的操作一样(涉及到了open,read,write,close等文件的基本操作)。一.Linux下的串口编程又那几部分组成??1.????打开串口2.????串口初始化3.????读串口或写串口4.????关闭串口二.串口的打开既然串口在linux中被看作了文件,那么在对文件进行操作前先要对其进行打开操作。1.在Linxu中,串口设备是通过串口终端设备文件来访问的,即通过访问/dev/ttyS0,/dev/ttyS1,/dev/ttyS2这些设备文件实现对串口的访问。2.调用open()函数来代开串口设备,对于串口的打开操作,必须使用O_NOCTTY参数。l??O_NOCTTY:表示打开的是一个终端设备,程序不会成为该端口的控制终端。如果不使用此标志,任务一个输入(eg:键盘中止信号等)都将影响进程。l??O_NDELAY:表示不关心DCD信号线所处的状态(端口的另一端是否激活或者停止)。3.打开串口模块有那及部分组成1调用open()函数打开串口,获取串口设备文件描述符2获取串口状态,判断是否阻塞3测试打开的文件描述符是否为终端设备??????4程序:/******************************************************************?名称:????????????????????UART0_Open*?功能:????????????????????打开串口并返回串口设备文件描述*?入口参数:????????????fd????:文件描述符?????port :串口号(ttyS0,ttyS1,ttyS2)*?出口参数:????????????正确返回为1,错误返回为0*****************************************************************/int UART0_Open(int fd,char* port){???????fd = open( port, O_RDWR|O_NOCTTY|O_NDELAY);??????if (FALSE == fd)?????????????{????????????????????perror(Cant Open Serial Port);????????????????????return(FASLE);?????????????}??//判断串口的状态是否为阻塞状态??????????????????????????????if(fcntl(fd, F_SETFL, 0) 0)??????{?????????????printf(fcntl failed!/n);???????????return(FALSE);??????}???????else??{???????printf(fcntl=%d/n,fcntl(fd, F_SETFL,0));??}??//测试是否为终端设备??????if(0 == isatty(STDIN_FILENO))??????{?????????????printf(standard input is not a terminal device/n);????????return(FALSE);??????}??else??????{???????????printf(isatty success!/n);??????}?????????printf(fd-open=%
文档评论(0)