树莓派10:树莓派和电脑之间的串口通信编程

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

串口通信:通常用在多机通信当中
问题一:概念
串行通信:数据按位传输—通信距离相对较远
串口通信距离
15米并行通信:多位同时传输(8位 16位 32位 64位。。。) 传输距离较近
异步通信:接收方和发送方使用不同的时钟频率信号
同步通信:接收方和发送方使用相同的时钟频率信号
单工通信:数据只能够进行单向传输—收音机
半双工:指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。—对讲机
全双工(多机通信):同一时间,既可以作为接收设备,也可以作为发送设备。—手机
问题2:
数据格式(语言):起始位 数据位,奇偶校验位,停止位
波特率(语速):常用波特率:可自行设置:4800 9600 115200

一、查看引脚编号表格

使用如下控制台下命令:

gpio readall

也可以查看下面的图。
== 注意==:查看时,将树莓派的USB接口面对自己,这样看才是正确的。

在这里插入图片描述
二、串口通信

在这里插入图片描述
在这里插入图片描述
三、初次使用串口需要配置

在linux操作系统下,一切皆文件。
查看所有文件:

cd /dev
ls

在这里插入图片描述看是否含义串口文件:
在这里插入图片描述
我们需要修改配置来实现串口通信(以前的串口配置是为了让串口打印操作系统启动时的数据),如下:

在这里插入图片描述
如果找不到inittab文件,那么直接重启即可

通过编程来实现串口通信:

参考代码

扫描二维码关注公众号,回复: 12082072 查看本文章
include<stdio.h>
include<wiringPi.h>
#include<wiringSerial.h>
int main()
{
    
    
	int fd;
 	int cmd
 	wiringPiSetup();
 	fd=serialOpen("/dev/ttyAMA0",9600);
 	while(1)
 	{
    
    
  		while(serialDAtaAvail(fd) != -1) //串口有数据,		去读 
  		{
    
    
  			 cmd=serialGetchar(fd); 
   			if(cmd==2)
   			{
    
    
    			serialPuts(fd,"liujinhui2\r\n")
   			}
   			if(cmd==3)
   			{
    
    
    			serialPuts(fd,"liujinhui3\r\n")
   			}
   			if(cmd==4)
   			{
    
    
    			serialPuts(fd,"liujinhui4\r\n")
   			}
   		serialPuts(fd,"liujinhui\r\n");//向串口写入数据 
  		delayMicroseconds(1000000);//每间隔1s打印一次 
 	}
 	return 0;
}

编译运行:

gcc demo5.c -lwiringPi
./a.out
//通过串口助手:
//接收数据:
liujinhui
liujinhui
。。。
//发送数据:
2---liujinhui2
3---liujinhui3
4---liujinhui4

学习参考:
树莓派wiringPi库详解

猜你喜欢

转载自blog.csdn.net/weixin_40734514/article/details/108688915
今日推荐