首页 理论教育 Linux驱动程序开发实例:访问TTY设备的基本操作

Linux驱动程序开发实例:访问TTY设备的基本操作

时间:2023-10-19 理论教育 版权反馈
【摘要】:访问TTY设备需要包含termios.h头文件。最基本的TTY设备设置包括波特率设置、校验位和停止位设置。termios结构描述TTY设备的操作模式:下面以串口为例讲解TTY设备的基本访问步骤。串口一为/dev/ttyS0,串口二为/dev/ttyS1。1)发送数据char buffer[1024];int Length;int nByte;nByte=write2)读取串口数据使用文件操作read函数读取,如果设置为原始模式传输数据,那么read函数返回的字符数是实际串口收到的字符数。也可以使用操作文件的函数来实现异步读取,如fcntl或select等。char buff[1024];int Len;int readByte=read;关闭串口close;

Linux驱动程序开发实例:访问TTY设备的基本操作

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);

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈