《Linux C》04 串口编程总结

  • 转载请注明:http://blog.csdn.net/herghost
  • 如何找到串口设备号
  • 串口之打开操作
  • 串口之初始化
  • 串口之发送
  • 串口之接收

如何找到串口设备号

如果你使用的是开发板搭载linux系统进行的串口编程,你可以通过原理图进行查看
如果你电脑安装的linux系统,那么插上串口,通过dmesg命令进行查看
本文例子使用/dev/ttyS0


串口之打开操作

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
    int fd;
    char *com = "/dev/ttyS0";
    if((fd = open(com,O_RDWR|O_CREAT,0777))<0){
        //fd返回-1打开失败
    }else{
        //打开成功
    }
    return 0;
}

串口之初始化

  • 了解termio结构体
  • 常用初始化函数
    • tcgetattr函数
    • cfgetispeed函数
    • cfgetospeed函数
    • cfsetispeed函数
    • cfsetospeed函数
    • tcflush函数
    • tcsetattr函数
  • 初始化步骤
    • 读取当前参数
    • 修改参数
    • 配置参数

了解termio结构体

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键输入将被忽略
IGNPAR 忽略奇偶校验错误
PARMRK 标识奇偶校验错误
INPCK 允许输入奇偶校验
ISTRIP 去除字符的第8个比特
INLCR 将输入的NL(换行)转换成CR(回车)
IGNCR 忽略输入的回车
ICRNL 将输入的回车转化成换行(如果IGNCR未设置的情况下)
IUCLC 将输入的大写字符转换成小写字符(非POSIX)
IXON 允许输出时对XON/XOFF流进行控制
IXANY 输入任何字符将重启停止的输出
IXOFF 允许输入时对XON/XOFF流进行控制
IMAXBEL 当输入队列满的时候开始响铃

c_oflag参数如下:

键值 说明
OPOST 处理后输出
OLCUC 将输入的小写字符转换成大写字符(非POSIX)
ONLCR 将输入的NL(换行)转换成CR(回车)及NL(换行)
OCRNL 将输入的CR(回车)转换成NL(换行)
ONOCR 第一行不输出回车符
ONLRET 不输出回车符
OFILL 发送填充字符以延迟终端输出
OFDEL 以ASCII码的DEL作为填充字符,如果未设置该参数,填充字符为NUL
NLDLY 换行输出延时,可以取NL0(不延迟)或NL1(延迟0.1s)
CRDLY 回车延迟,取值范围为:CR0、CR1、CR2和 CR3
TABDLY 水平制表符输出延迟,取值范围为:TAB0、TAB1、TAB2和TAB3
BSDLY 空格输出延迟,可以取BS0或BS1
VTDLY 垂直制表符输出延迟,可以取VT0或VT1
FFDLY 换页延迟,可以取FF0或FF1

c_cflag参数如下:

参数 说明
CBAUD 波特率(4+1
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值