加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • serial.c
    • serial.h
    • 主函数main.c
    • 程序说明
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口完整代码

10/25 10:28
376
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

注意:学习资料可在ElfBoard官方网站“资料”专区获取。

本节用到的源码路径:ELF 1开发板资料包->03-例程源码->03-1 命令行例程源码->02_elf1_cmd_serialport

serial.c

本节代码提供了串口通信的函数库,主要分三部分:

(一)设置串口参数'func_set_opt'

首先通过func_set_opt设置参数,波特率从600 bit/s-115200 bits/s,默认使用的是9600 bits/s;之后是校验位,五种校验方式分别为奇校验、偶校验、MARK校验、SPACE校验和空校验;另外还有检测是否有停止位;以及硬件连接方式是否带RTS和CTS引脚

(二)发送数据'func_send_frame'

串口发送函数用于向串口发送数据。该函数接收一个文件描述符 fd,指向待发送数据缓冲区的指针 p_send_buff,以及要发送数据的长度 count。函数内部使用 write 函数将数据写入串口,并返回写入的字节数。

(三)串口接收'func_receive_frame'

串口接收函数用于从串口接受数据。该函数接收一个文件描述符 fd,指向接收数据缓冲区的指针 p_receive_buff,以及要接收数据的长度 count。函数内部使用 read 函数将数据从串口读出来,并返回实际读到的字节数。

serial.h

(一)定义串口参数结构体struct_tty_param,它包含以下成员变量:

baudrate:波特率,表示数据传输速率,取值范围为 600 到 4000000;

data_bit:数据位,表示每个数据字节中的位数,可取 5、6、7 或 8;

stop_bit:停止位,表示停止位的数量,可取 1 或 2;

check:校验方式,表示数据校验的方式。可以是 'N' 表示无校验,'O' 表示奇校验,'E' 表示偶校验;

hardware:硬件流控,表示是否启用硬件流控;

(二)声明func_set_opt

用于设置串口参数。它传入一个 fd,以及用于设置串口的参数值,包括速度 speed、数据位 bits、停止位 stop、校验方式 check 和硬件流控 hardware。函数返回执行结果。

(三)声明函数func_send_frame

用于向串口发送数据。它传入一个 fd,一个指向待发送数据缓冲区的指针 p_send_buff,以及要发送的数据长度 count。函数返回执行结果。

(四)声明函数func_receive_frame

用于从串口接收数据。它传入一个 fd,一个指向接收数据缓冲区的指针 p_receive_buff,以及最大接收数据长度 count。函数返回执行结果。

主函数main.c

(一)定义了一些全局变量,包括:

(1)`ver`:存储版本信息的字符数组;

(2)`fd`:串口文件描述符;

(3)`tty_param`:串口参数结构体,用于存储串口的波特率、数据位、停止位、校验方式和硬件流控等参数;

(4)`send_buff`、`receive_buff`:发送和接收数据的缓冲区;

(5)`send_num`、`receive_num`:发送和接收的数据长度;

(6)`dev`:串口设备名称;

(二)`func_my_print`:自定义的打印函数,根据指定的打印格式打印数据。

(三)`print_usage`:打印参数设置的格式说明。

(四)`get_param`:解析命令行参数,并将参数值赋给串口参数结构体 `tty_param`。

(五)`main` 函数:主函数,用于执行串口通信的示例程序。

(1)首先检查命令行参数,如果没有指定串口设备名称或使用了帮助参数,则打印使用说明并退出程序。

(2)通过命令行参数拼接串口设备名称,并打开串口设备。

(3)调用 `get_param` 函数解析命令行参数,并将参数值赋给 `tty_param`。

(4)调用 `func_set_opt` 函数设置串口参数。

(5)打印串口参数信息。

(6)进入循环,不断发送和接收数据,根据不同的模式选择不同的操作。

(7)如果启用了发送模式,则按照设定的时间间隔发送指定的数据。

(8)如果启用了数据回环模式,则将接收到的数据发送回去。

(9)关闭串口。

该程序通过命令行参数来设置串口的参数,并提供了发送和接收数据的功能。在主函数的循环中,可以根据需要选择不同的操作模式,例如定时发送数据、数据回环等。

程序说明

进程名:elf1_cmd_serialport

使用方法:./elf1_cmd_serialport 设备名 [参数选项]… …

相关推荐

电子产业图谱