linux串口编程说明,Linux串口编程说明

串口编程说明

串口操作采用UNIX类似的方式,打开/关闭/发送/接收等基本操作采用类 似文件系统的方式进行,而一些属性的设置和控制则使用termios来进行。 串口对应的设备文件名为”/dev/ttyS0”。 1. 打开串口 fd = open(“/dev/ttyS0”, O_RDWR); 如果只发送数据,可以使用O_WRONLY, 如果只接收数据,可以 设置成O_RDONLY。 2. 关闭串口 close(fd); 3. 接收数据 ret = read(fd, buf, 100); 串口默认的打开方式是非阻塞的,因此本函数只是接收缓冲中的数 据,而并非直接操作IO。如果要加入一些IO的属性,请参见”使用 超时”和”设置串口属性”。 如果缓冲中有接收到的数据,那么本函数将返回实际接收到的数据 长度,当然不会超过指定的100字节。 如果缓冲中没有数据,那么将返回0。 如果接收失败,那么将返回-1,错误代码放在errno中。 4. 发送数据 ret = write(fd, buf, 100); 返回值表示实际发送的数据长度。 5. 设置串口属性 tcgetattr(int fd, struct termios *termios_p); tcsetattr(int fd, int optional_actions, struct termios *termios_p); 串口打开后,使用的串口属性实际上是上一次关闭串口前的设置。 这个设置也就是一个结构struct termios,其中主要有以下的属性: tcflag_t c_iflag // 输入属性 tcflag_t c_oflag // 输出属性 tcflag_t c_cflag // 控制属性 tcflag_t c_lflag // 本地属性 cc_t c_cc[NCCS] // 控制字 c_iflag IGNBRK 忽略接收到的break信号 BRKINT 如果IGNBRK被设置,break信号将被忽

略,否则如果BRKINT被设置,接收到

break信号将导致输入/输出队列被清空,并

且当前控制串口的前台进程将收到一个

SIGINT信号。如果IGNBRK和BRKINT都

没有被设置 ,收到的break信号将被接收为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值