(一)树莓派串口通信准备步骤
1 利用xshell或者putty等软件进行网络连接树莓派
2 修改 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
3 修改 inittab文件 (如果这一步/etc目录下没有inittab文件,则不进行操作)
命令:
cd /etc/
sudo vim inittab
注释掉最后一行内容:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
4 命令:sudo reboot (重启之后再次连接树莓派开始以下操作)
5 用TTL模块连接电脑与树莓派 (连接三根线)
6 打开串口调试助手进行连接
(二)树莓派串口通信函数 (进行以下程序的运行验证)
#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdio.h>
int main()
{
int fd;
int i;
int j;
int cmd;
wiringPiSetup(); //树莓派设备初始化
fd=serialOpen("/dev/ttyAMA0",9600); //树莓派串口设备是/dev/ttyAMA0,通信波特率为9600
for(i=0;i++;i<5)
{
serialPutchar(fd,'c'); //树莓派给串口输出字符c
delayMicroseconds(1000000); //延迟1000000秒,即1秒
}
serialPuts(fd,"\r\n");
serialPuts(fd,"hello pc I am raspberrypi\r\n");
serialPrintf(fd,"the raspberrypi send end\r\n"); //【树莓派给串口传送数据的程序结束】
while(serialDataAvail(fd)!=-1) //开始手动在串口助手地方处发送0或1共计5次
{
for(j=0;j++;j<5)
{
if(cmd==0)
{
serialPuts(fd,"the raspberry receive world is 0\r\n");
}else if(cmd==1)
{
serialPuts(fd,"the raspberry receive world is 1\r\n");
}
}
break; //【电脑给树莓派传送数据0和1结束】
}
serialFlush(fd);
while(serialDataAvail(fd)==-1)
{
serialPuts(fd,"the serial buffer is empty\r\n");
break; //串口的缓存区清空
}
printf("the grammer is successful execute\n"); //宿主机显示器显示程序结束
return 0;
}