赞
踩
树莓派4b实现与其它设备之间的串口通信需要做一些配置,可以点进这篇文章进行查看参考文章
wiringPi库串口相关的API参考文章链接wiringPI库串口API
#include <stdio.h> #include <wiringPi.h> #include <wiringSerial.h> #include <stdlib.h> int main() { //初始化外设库 if(wiringPiSetup() == -1){ printf("init wiringPi error\n"); return -1; } int fd;//串口文件描述符 //打开串口 if((fd =serialOpen("/dev/ttyAMA0",9600)) == -1){ printf("open serial fail!\n"); exit(-1); } //发送数据 while(1){ serialPutchar(fd,'x'); delayMicroseconds(1000000);//延时1s } serialClose(fd);//关闭串口 return 0; }
运行结果:
#include <stdio.h> #include <wiringPi.h> #include <wiringSerial.h> #include <stdlib.h> int main() { //初始化外设库 if(wiringPiSetup() == -1){ printf("init wiringPi error\n"); return -1; } int fd;//串口文件描述符 char *ch="xfj hansome\r\n"; //打开串口 if((fd =serialOpen("/dev/ttyAMA0",9600)) == -1){ printf("open serial fail!\n"); exit(-1); } //发送数据 while(1){ serialPuts(fd,ch);//发送一个字符串 serialPrintf(fd,"wlecome my srial,%d\r\n",fd);//这个函数可以像printf一样实现格式的控制发送 delayMicroseconds(1000000);//延时1s } serialClose(fd);//关闭串口 return 0; }
#include <stdio.h> #include <wiringPi.h> #include <wiringSerial.h> #include <stdlib.h> int main() { //初始化外设库 if(wiringPiSetup() == -1){ printf("init wiringPi error\n"); return -1; } int fd;//串口文件描述符 int data;//用于接收 //打开串口 if((fd =serialOpen("/dev/ttyAMA0",9600)) == -1){ printf("open serial fail!\n"); exit(-1); } //发送数据 while(1){ if(serialDataAvail(fd) != -1){ data = serialGetchar(fd); printf("rev:%c\n",data); } } serialClose(fd);//关闭串口 return 0; }
运行结果:
#include <stdio.h> #include <wiringPi.h> #include <wiringSerial.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main() { //初始化外设库 if(wiringPiSetup() == -1){ printf("init wiringPi error\n"); return -1; } int fd;//串口文件描述符 char *ch= "xfj hansome\r\n"; char buffer[128]={0}; //打开串口 if((fd =serialOpen("/dev/ttyAMA0",9600)) == -1){ printf("open serial fail!\n"); exit(-1); } while(1){ if(serialDataAvail(fd) != -1){ read(fd,buffer,sizeof(buffer)); printf("rec:%s\n",buffer); memset(buffer,0,sizeof(buffer)); } } serialClose(fd);//关闭串口 return 0; }
运行结果:
如果想要一边接收和发送的话,可以多开多线程,让不同的线程分别处理发送和接收,或者就是接收到某些消息判断满足预先设定的条件后,再进行发送
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。