树莓派串口通信配置--初次使用

注意:使用时需要包含头文件:#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

配置的最后一步,重启!!

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.在串口调试工具中发送数据(文本格式)

 

猜你喜欢

转载自blog.csdn.net/weixin_49472648/article/details/109793397