• 正文
    • 使用open()函数打开串口设备
    • 获取当前配置参数
    • 写配置
    • 清空缓冲区
    • 配置生效
    • 串口接收函数
    • 串口发送函数
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序

2024/10/24
1476
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

使用open()函数打开串口设备

首先使用open()函数打开串口设备/dev/ttymxc6,设备使用了O_RDWR | O_NOCTTY | O_NDELAY标志,分别代表以读写方式打开、不让设备成为控制终端且设置非阻塞模式,也就是当无法打开设备时,不会在原地等待,会马上返回;

上面使用了if语句判断文件描述符fd,如果open()返回的文件描述符<0,则代表设备打开失败,输出“Can't Open Serial Port /dev/ttymxc6”;

如果是其他情况,则说明设备打开成功,把设备的波特率,数据位,停止位,校验位打印出来;

获取当前配置参数

前面介绍过tcgetattr()函数的用法,在这里就是获取上面open()函数返回的文件描述符fd作为tcgetattr()的参数,然后创建一个termios名为oldtio来储存串口旧的参数。

写配置

程序中是对newtio结构体中的c_cflag加上CLOCAL | CREAD,意为使驱动程序启动接收字符装置,同时忽略串口信号线的状态。

另外对c_cflag与上了~CSIZE,即设置数据位。

清空缓冲区

使用tcflush()函数清空缓冲区,避免本次将之前残存的数据发送出去引起混乱。

配置生效

前面已经完成了对 struct termios 结构体各个成员进行配置,但是配置还未生效,需要将配置参数写入到终端设备(串口硬件),使其生效。通过 tcsetattr()函数将配置参数写入到硬件设备。

串口接收函数

使用read()函数读缓冲区的数据,即串口接收:

串口发送函数

使用write()函数发送缓冲区的数据,即串口发送:

飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐