树莓派和电脑之间的串口通信

一开始我们配置了串口登录树莓派,这样会导致我们后面在用树莓派的时候有些冲突,所以我们需要先修改树莓派串口的一些配置

/* 修改 cmdline.txt文件 */

>cd /boot/

>sudo vim cmdline.txt

删除【】之间的部分

dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

/*修改 inittab文件 */ //如果没有这个文件,直接跳过即可

>cd /etc/

>sudo vim inittab

注释掉最后一行内容:,在前面加上 # 号

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

sudo reboot 重启

树莓派给电脑发送信息

cpp 复制代码
#include <wiringPi.h>
#include <wiringSerial.h>

int main()
{

     int fd;
     if(WiringPiSetup()==-1){
    
        printf("Setup error\n");
        return -1;
     }   

     fd = serialOpen("/dev/ttyAMA0",9600);
     while(1){
       serialPutchar(fd,"c");  //发送字符
       //serialPuts(fd,"hello i am pi");// 发送字符串
       delayMicroseconds(1000000)//微秒级别 
     }
}

电脑通过串口助手给树莓派发消息

cpp 复制代码
#include <wiringPi.h>
#include <wiringSerial.h>

int main()
{

     int fd;
     int cmd;
     if(WiringPiSetup()==-1){
    
        printf("Setup error\n");
        return -1;
     }   

     fd = serialOpen("/dev/ttyAMA0",9600);
     while(1){
           
        while( serialDataAvail(fd) != -1){

            cmd =serialGetchar(fd); // 通过接收到的指令执行不同的操作
               if(cmd == '2'){
                    printf("daxu 2\n");
                }
        }
     }
}

串口通信相关API

首先要包含头文件 #include <wiringSerial.h>

打开串口

复制代码
int serialOpen (char *device, int baud)

device: 串口的地址,一般默认 "/dev/ttyAMA0"

buad: 波特率

返回值: 正常会返回文件描述符,否则返回-1失败

发送一个字节到串口

复制代码
void  serialPutchar (int fd, unsigned char c)

fd:文件描述符

c:要发送的数据

发送一个字符串到串口

复制代码
void  serialPuts (int fd, char *s)

fd:文件描述符

s:发送的字符串,字符串要以'\0'结尾

获取串口缓存中可用的字节数

复制代码
int   serialDataAvail (int fd)

fd:文件描述符

返回:串口缓存中已经接收的,可读取的字节数,-1代表错误

从串口读取一个字节数据返回。

复制代码
int serialGetchar (int fd)

fd:文件描述符

返回:读取到的字符

如果串口缓存中没有可用的数据,则会等待10秒,如果10后还有没,返回-1

所以,在读取前,做好通过serialDataAvail判断下。

相关推荐
LongRunning15 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
河北乐讯通物联网服务商15 小时前
航油管理终端:机场里每架飞机加了什么油、加了多少,是怎么实时算清楚的?
物联网·物联网卡·航油管理终端
数字新视界17 小时前
信创机房动环监控技术在提升数据中心管理效率中的应用与前景分析
物联网·数据中心·数据中心基础设施管理·dcim管理系统·数据中心dcim
Zwawa17 小时前
屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系
c语言·单片机·嵌入式
民乐团扒谱机18 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜18 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021119 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT19 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅19 小时前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖21 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习