TTY设备的访问同文件的访问类似,不同的是TTY设备的操作模式的设置比一般文件烦琐。访问TTY设备需要包含termios.h头文件。最基本的TTY设备设置包括波特率设置、校验位和停止位设置。termios结构描述TTY设备的操作模式:
下面以串口为例讲解TTY设备的基本访问步骤。
(1)打开串口
在Linux下串口文件是位于/dev下的。串口一为/dev/ttyS0,串口二为/dev/ttyS1。打开串口可使用标准的文件打开函数操作:
(2)设置串口
串口设置相关的操作函数如下:
修改波特率的实例代码:
struct termios Opt;
tcgetattr(fd,&Opt);
cfsetispeed(&Opt,B19200);/*设置输入为19200Bps*/
cfsetospeed(&Opt,B19200);/*设置输出为19200Bps*/
tcsetattr(fd,TCANOW,&Opt);
设置校验位和停止位的实例:
struct termios options;
tcgetattr(fd,&Opt);
options.c_cflag&=~CSIZE;
Option.c_cflag|=~CS8;//数据位为8
options.c_cflag&=~CSTOPB;//停止位
Option.c_cflag&=~PARENB;
Option.c_cflag|=~PARODD;//偶校验(www.xing528.com)
tcsetattr(fd,TCANOW,&options);
需要注意的是,如果不是开发终端类型的应用程序,只是使用串口来传输数据,那么应该使用原始模式(Raw Mode)方式来进行通信,设置方式如下:
options.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG);/*输入*/
options.c_oflag&=~OPOST;/*输出*/
(3)读写串口
设置好串口之后,读写串口就很容易了,只需把串口当作文件读写即可。
1)发送数据
char buffer[1024];
int Length;
int nByte;
nByte=write(fd,buffer,Length)
2)读取串口数据
使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。也可以使用操作文件的函数来实现异步读取,如fcntl或select等。
char buff[1024];
int Len;
int readByte=read(fd,buff,Len);
(4)关闭串口
close(fd);
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。