树莓派wiringPi库,串口通信
(一)串口通信 使用时需要包含头文件:
#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
/*修改 inittab文件 */
>cd /etc/
>sudo vim inittab
注释掉最后一行内容:,在前面加上 # 号
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
sudo reboot 重启
(三)代码案例
#include <stdio.h>
#include <wiringPi.h>
#include <unistd.h>
#include <wiringSerial.h>
#include <string.h>
int main()
{
if(wiringPiSetup() == -1){
printf("init pin failed\n");
return 0;
}
int fd;
char buf;
fd = serialOpen("/dev/ttyAMA0",9600);
if(fd == -1){
printf("open serial failed\n");
return 0;
}
while(1){
if(serialDataAvail(fd) != -1){
buf = serialGetchar(fd);
//memset(buf,'\0',128);
//read(fd,buf,128);
printf("data = %c\n",buf);
}
//serialPrintf(fd,"no message to send\r\n");
if(nuf == '1'){
serialPuts(fd,"one\r\n");
}
else if(buf == '2'){
serialPuts(fd,"two\r\n");
}
else{
serialPuts(fd,"cmd not found\r\n");
}
}
serialClose(fd);
return 0;
}