linux 串口函数,linux串口函数如何操作?

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\r", 4);

3。从串口读取数据当以原始数据模式(raw data mode)打开串口时,read 系统调用将不管串口输入缓存里有多少字符可读都返回。若没有数据,则阻塞直至有字符到来,或定时器超时。

串口设置这个选项后,read 调用都是立即返回。没有数据可读时,read 返回 0 fcntl(fd, F_SETFL, FNDELAY);

解除这个功能是

fcntl(fd, F_SETFL, 0); 4。关闭串口

close(fd);

标准的 POSIX 配置串口参数串口收发数据主要是要做好端口配置工作,需要包含,定义终端控制结构以及

POSIX控制函数

termios结构

Table 3 - Termios Structure Members

Member Description

c_cflag Control options

c_lflag Line options

c_iflag Input options

c_oflag Output options

c_cc Control characters

c_ispeed Input baud (new interface)

c_ospeed Output baud (new interface)

struct termios termios_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)奇偶校验parity check

//无奇偶校验

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;

//2stop bits termios_new。

c_cflag &= ~CSTOPB;

//1 stop bits。

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全部溢出后设置

采用 select 系统调用读取串口数据跟其他 socket,设备数据。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值