树莓派串口

串口的初始化常用函数
int tcgetattr(int fd , struct termios * termios_p)
int cfsetispeed(struct termios * termios_p, speed_t speed)
句柄 speed B115200 8位数据位 无奇偶校验 一位停止位 一共5个参数!
int cfsetospeed(struct termios * termios_p, speed_t speed)
int tcflush(int fd, int queue_selector)
 
  1. 由于树莓派3B+ 和 4B版本的硬件没有直接配置uart,需要写配置文件,使能相应的引脚!
  2. vim 查找字符串 /***
  3. 在文件夹 /boot/overlays 中找到 pi3-miniuart-bt
  4.   使得 serial 0 指向 GPIO 串口,serial 1 指向 ttys0
  5.   关闭控制台
  wiringSerial 函数测试树莓派串口收发数据操作没有问题。
  串口单次发送收不完,连续发送没问题。
  不能使用简单的轮询查询方式。串口接收数据时,即使是数据块,也不可能一下就收到。
  串口的驱动层会将每次收到的数据放在底层的缓冲区中,至于程序中读出的数据,它们应该就来自底层缓冲区。底层数据读出后就被清空,因此不会读到重复的数据。串口函数提供了一个询问指令用于检查缓冲区的长度,可以通过比较前后读到的长度是否相同,判定数据是否读完。一但读完可以一次将底层数据全部读出。
 
 
 


原文地址:https://www.cnblogs.com/jichima/p/12969494.html