查看: 310|回复: 0

[经验] 飞凌嵌入式ElfBoard ELF1板卡-串口通讯编程示例之串口编写程序

[复制链接]

该用户从未签到

发表于 2024-10-24 17:06:48 | 显示全部楼层 |阅读模式
分享到:
使用open()函数打开串口设备
13-1.png
首先使用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,即设置数据位。
13-2.png
清空缓冲区
13-3.png
使用tcflush()函数清空缓冲区,避免本次将之前残存的数据发送出去引起混乱。
配置生效
前面已经完成了对 struct termios 结构体各个成员进行配置,但是配置还未生效,需要将配置参数写入到终端设备(串口硬件),使其生效。通过 tcsetattr()函数将配置参数写入到硬件设备。
13-4.png
串口接收函数
使用read()函数读缓冲区的数据,即串口接收:
13-5.png
串口发送函数
使用write()函数发送缓冲区的数据,即串口发送:
13-6.png

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-17 23:47 , Processed in 0.118718 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.