树莓派连接语音模块

回顾

之前我们进行了语音模块的验货,并且进行了二次开发,我们知道了在哪里可以进行程序的再次烧写,在这基础上,我们也学习了树莓派的串口通信,那么我们就可以学习怎么把语音模块和树莓派进行通信

思路
之前我们语音模块知道,语音模块在收到了我们的一级指令后会向串口上发送收到,接着我们再说一句二级指令,例如开灯,就会向串口上发送提示语句,我们利用中这一点,语音模块和树莓派连接起来之后,语音模块就会向树莓派的串口上发东西,这时候我们就可以来在树莓派上读写到串口的东西。

连线:
(上下对应)
树莓派:T,R,GND,5V
语音模块:R,T,GND,5V
 

#include 
#include 
#include 
#include 
#include 

int main()
{
        int fd;
        char cmd[128]={'\0'};
        int nread;

        wiringPiSetup();     //因为在树莓派,所以必须加上

        fd=serialOpen("/dev/ttyAMA0",9600);  //开启树莓派与外通讯的串口
        while(1){
                nread=read(fd,cmd,sizeof(cmd)); //正常linux上没数据,会堵塞
       //在树莓派上没数据,serialopen影响,10s后会自动读出
                if(strlen(cmd)==0){
                        printf("chaoshi\n");
                        continue;           //不会执行下面的指令,从头开始
                }
                if(strstr(cmd,"open")!=NULL){
                        printf("open light\n");
                }
                if(strstr(cmd,"close")!=NULL){
                        printf("close light\n");
                }

               // printf("get data:%d,contex:%s\n",nread,cmd);
                memset(cmd,'\0',sizeof(cmd)/sizeof(char));
        }
        return 0;

即可执行success!

里面需要注意的地方:

1 read那里读不到会堵塞,在树莓派上会10s后自动读入。

2 原本设置的是128字节,而运行时超过8byte,要分两次打印

你可能感兴趣的:(树莓派,单片机)