仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 785|回复: 9
打印 上一主题 下一主题

[其他Linux] 来讲讲:linux串口操纵函数

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 12:01:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。
1.翻开串口:fd=open("/dev/ttyf1",O_RDWR|O_NOCTTY|O_NDELAY);fcntl(fd,F_SETFL,0);O_NOCTTY选项避免程序受键盘把持中断操纵键等影响.O_NDELAY告知UNIX不用另外一端端口是不是启用.(检测DCD旌旗灯号线形态)
2.往串口发送数据n=write(fd,"ATZ",4);
3.从串口读取数据当以原始数据形式(rawdatamode)翻开串口时,read体系挪用将不论串口输出缓存里有几字符可读都前往.若没无数据,则堵塞直至有字符到来,或准时器超时.串口设置这个选项后,read挪用都是当即前往.没无数据可读时,read前往0fcntl(fd,F_SETFL,FNDELAY);
排除这个功效是
fcntl(fd,F_SETFL,0);4.封闭串口
close(fd);
二.尺度的POSIX设置串口参数串口收发数据次要是要做好端口设置事情,必要包括<termios.h>,界说终端把持布局和
POSIX把持函数
termios布局
Table3-TermiosStructureMembers
MemberDescription
c_cflagControloptions
c_lflagLineoptions
c_iflagInputoptions
c_oflagOutputoptions
c_ccControlcharacters
c_ispeedInputbaud(newinterface)
c_ospeedOutputbaud(newinterface)
structtermiostermios_old,termios_new;
1)猎取串口属性
tcgetattr(fdcom,&termios_old);
2)设置输出速度
cfsetispeed(&termios_new,baudrate);cfsetospeed(&termios_new,baudrate);3)把持形式,包管程序不会成为端口的占据者termios_new.c_cflag|=CLOCAL;把持形式,使能端口读取输出的数据termios_new.c_cflag|=CREAD;4)把持形式,屏障字符巨细位,设置串口授输数据所用的位数termios_new.c_cflag&=~CSIZE;termios_new.c_cflag|=CS5;//CS6,CS7,CS8
5)奇偶校验paritycheck
//无奇偶校验
termios_new.c_cflag&=~PARENB;
//偶校验
termios_new.c_cflag|=PARENB;termios_new.c_cflag&=PARODD;
//奇校验
termios_new.c_cflag|=PARENB;termios_new.c_cflag|=PARODD;
6)设置中断位
termios_new.c_cflag|=CSTOPB;//2stopbitstermios_new.c_cflag&=~CSTOPB;//1stopbits.
7)其他属性设置
termios_new.c_oflag&=~OPOST;//输入形式,原始数据输入termios_new.c_cc[VMIN]=1;//把持字符,所要读取字符的最小数目termios_new.c_cc[VTIME]=1;//把持字符,读取第一个字符的守候工夫,以0.1妙为单

8)设置新属性
tcsetattr(fdcom,TCSANOW,&termios_new);
//TCSANOW:所由改动当即失效
//TCSADRAIN:守候一切器材都被发送进来后设置
//TCSAFLUSH:将输出输入buffer全体溢出后设置

123下一页


文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln
飘灵儿 该用户已被删除
沙发
 楼主| 发表于 2015-1-16 13:04:32 | 只看该作者

来讲讲:linux串口操纵函数

如果你学不好的话,你在linux中开发的机会就很少,或者说几乎没有,它的优势就消失了,然后随着时间的流逝,你就会全部忘记她;
接纳select体系挪用读取串口数据跟其他socket,设备数据</P>示例:
假定我们要从一个串口和一个socket读取数据.必要判别每一个文件形貌符的输出数据情形,但10妙内有数据的话,必要关照用户没无数据可读.
/*Initializetheinputset*/
FD_ZERO(input);
FD_SET(fd,input);FD_SET(socket,input);
max_fd=(socket>fd?socket:fd)+1;
/*Initializethetimeoutstructure*/
timeout.tv_sec=10;timeout.tv_usec=0;
/*Dotheselect*/
n=select(max_fd,NULL,NULL,;
/*Seeiftherewasanerror*/
if(n0)
perror("selectfailed");
elseif(n==0)
puts("TIMEOUT");
else
{
/*Wehaveinput*/
if(FD_ISSET(fd,input))
process_fd();
if(FD_ISSET(socket,input))
process_socket();
}
三.unix/linux下,接纳ioctl函数来完成串口设置功效intioctl(intfd,intrequest,...);fd是串口形貌符,request参数是界说在<termios.h>的常量,通常为下表中的一个
Table10-IOCTLRequestsforSerialPorts
RequestDescriptionPOSIXFunction
TCGETS
Getsthecurrentserial
portsettings.
tcgetattr
TCSETS
Setstheserialport
settingsimmediately.tcsetattr(fd,TCSANOW,&options)
TCSETSF
Setstheserialport
settingsafterflushingthe
inputandoutputbuffers.tcsetattr(fd,TCSAFLUSH,&options)
TCSETSW
Setstheserialport
settingsafterallowing
theinputandoutput
bufferstodrain/empty.tcsetattr(fd,TCSADRAIN,&options)
TCSBRK
Sendsabreakforthe
giventime.tcsendbreak,tcdrain
TCXONC
Controlssoftwareflow
control.
tcflow
TCFLSH
Flushestheinputand/or
outputqueue.
tcflush
TIOCMGET
Returnsthestateofthe
"MODEM"bits.
None
</p>
上一页123下一页


为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的。
飘灵儿 该用户已被删除
板凳
 楼主| 发表于 2015-1-16 13:11:06 | 只看该作者

来讲讲:linux串口操纵函数

学习python,无论你是打算拿他当主要开发语言,还是当辅助开发语言,你都应该学习他,因为有些时间我们耗不起。
TIOCMSET
Setsthestateofthe
"MODEM"bits.
None
FIONREAD
Returnsthenumberof
bytesintheinputbuffer.
None
为猎取形态位,挪用ioctl函数,用一个整数来寄存位指针.
Listing5-GettingtheMODEMstatusbits.#include<unistd.h>#include<termios.h>
intfd;
intstatus;
ioctl(fd,TIOCMGET,&status);
Listing6-DroppingDTRwiththeTIOCMSETioctl.#include<unistd.h>#include<termios.h>
intfd;
intstatus;
ioctl(fd,TIOCMGET,&status);
status&=~TIOCM_DTR;
ioctl(fd,TIOCMSET,status);
</p>
上一页123


经常看到有人问用什么版本的linux好,其实只要你认真学习无论什么版本都挺好的。
活着的死人 该用户已被删除
地板
发表于 2015-1-18 16:24:59 | 只看该作者
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
再现理想 该用户已被删除
5#
发表于 2015-1-27 11:57:02 | 只看该作者
我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。
爱飞 该用户已被删除
6#
发表于 2015-2-5 11:54:37 | 只看该作者
另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。
若相依 该用户已被删除
7#
发表于 2015-2-11 20:26:53 | 只看该作者
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-2 19:38:39 | 只看该作者
不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
9#
发表于 2015-3-11 06:18:38 | 只看该作者
应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
变相怪杰 该用户已被删除
10#
发表于 2015-3-17 23:00:24 | 只看该作者
另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-26 00:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表