注意:使用时需要包含头文件:#include <wiringSerial.h>
初次使用树莓派串口编程,需要配置。
/* 修改 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
部分树莓派可能需要修改initab文件
/*修改 inittab文件 */
>cd /etc/
>sudo vim inittab
注释掉最后一行内容:,在前面加上 # 号
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
配置的最后一步,重启!!
扫描二维码关注公众号,回复:
12593193 查看本文章
sudo reboot 重启
现在开始可以愉快的撸代码了
#include <wiringPiSerial.h>
#include <wiringPi.h>
#include <stdio.h>
int main(){
int fd;
int cmd;
wiringPiSetup(); //树莓派初始化
fd = serialOpen("/dev/ttyAMA0",9600);// 打开串口 返回文件描述符fd ;
// /dev/ttyAMA0 : 串口的地址,在Linux中就是设备所在的目录
// 9600:波特率
// 返回:正常返回文件描述符,否则返回-1失败。
while(1){
while(serialDataAvail(fd) != -1){ //serialDataAvail(fd):获取串口缓存中可用的字节数。
//返回:串口缓存中已经接收的,可读取的字节数,-1代表错误
cmd = serialGetchar(fd); //从串口读取一个字节数据返回给 cmd
if(cmd == '1'){
serialPuts(fd,"你好--1\r\n"); //发送 “你好--1” 到串口接收区
printf(">get-cmd-1 == %c",cmd);
}else if(cmd == '2'){
serialPuts(fd,"世界--2\r\n");
printf(">get-cmd-2 == %c",cmd);
}else if(cmd == '3'){
serialPuts(fd,"!!!--3\r\n");
printf(">get-cmd-3 == %c",cmd);
}else{
printf("get cmd == %c",cmd); //在树莓派的Linux中 打印 get cmd ==
}
}
}
return 0;
}
最后打开串口调试工具
1.打开串口
2.设置波特率为 9600
3.在树莓派的Linux系统中编译运行前面的代码
4.在串口调试工具中发送数据(文本格式)