树莓派和电脑之间的串口通信编程
串口通信:通常用在多机通信当中
问题一:概念
串行通信:数据按位传输—通信距离相对较远
串口通信距离:
15米并行通信:多位同时传输(8位 16位 32位 64位。。。) 传输距离较近
异步通信:接收方和发送方使用不同的时钟频率信号
同步通信:接收方和发送方使用相同的时钟频率信号
单工通信:数据只能够进行单向传输—收音机
半双工:指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。—对讲机
全双工(多机通信):同一时间,既可以作为接收设备,也可以作为发送设备。—手机
问题2:
数据格式(语言):起始位 数据位,奇偶校验位,停止位
波特率(语速):常用波特率:可自行设置:4800 9600 115200
一、查看引脚编号表格:
使用如下控制台下命令:
gpio readall
也可以查看下面的图。
== 注意==:查看时,将树莓派的USB接口面对自己,这样看才是正确的。
二、串口通信
三、初次使用串口需要配置
在linux操作系统下,一切皆文件。
查看所有文件:
cd /dev
ls
看是否含义串口文件:
我们需要修改配置来实现串口通信(以前的串口配置是为了让串口打印操作系统启动时的数据),如下:
如果找不到inittab文件,那么直接重启即可
通过编程来实现串口通信:
参考代码
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