串口通信(基于树莓派编程)

一、基于面试的串口通信协议

1.串口通信一般使用在多机面试中:不管是软件还是硬件都有一种模块化的编程思想。

主要就是两根线:RXDTXD

举例,语音识别模块与树莓派之间进行串口通信

语音模块的T连接树莓派上的R,语音模块上的R连接树莓派上的T

2.串口通信是全双工的。

例:一个男孩跟一个女孩在吵架

全双工:男孩跟女孩可以互怼,不用顾忌

半双工:男孩骂女孩时,女孩闭嘴,女孩骂男孩时,男孩闭嘴。

两个人吵架要注意的两点就是语言跟语速,语言是两个人都听得懂得才行,语速也是两个人都能接受的才行。

那么对于串口通信来讲就是数据格式波特率。数据格式包括数据位、停止位、奇偶校验位。如图:

二、串口相关API

参考文章:树莓派wiringPi库详解

初次在树莓派使用串口通信时需要修改文件(cmdline.txt)内容

>cd /boot/
>sudo vim cmdline.txt

删除红色方框内容。

然后 sudo reboot重启。

使用串口时需包含头文件:#include<wiringSerial.h>

串口通信的相关的API,记住在linux底下一切皆文件,所以串口在linux看来也是一个文件,所以serialOpen函数返回的是一个文件描述符,这个文件描述符就是串口的意思。

三、串口代码例子

#include<wiringSerial.h>
#include<wiringPi.h>
#include<stdio.h>
int main()
{
        int fd;
        int cmd;
        wiringPiSetup();//硬件初始化

        fd = serialOpen("/dev/ttyAMA0",9600);//打开串口

        while(1)
        {
                while(serialDataAvail(fd) != -1){//这个函数不等于-1代表接收到数据
                        cmd = serialGetchar(fd);
                        //printf("cmd is %d\r\n",cmd);
                        if(cmd == '1'){
                                serialPuts(fd,"kaideng\r\n");
                        }
                        if(cmd == '2'){
                                serialPuts(fd,"guandeng\r\n");
                        }
                        if(cmd == '3'){
                                serialPuts(fd,"ok\r\n");
                        }
                }
                //serialPutchar(fd,'c');//发送一个字符
                //serialPuts(fd,"QianRuShKaiFai\r\n");//发送字符串
                //delayMicroseconds(1000000);//延时函数us为单位
        }
        return 0;
}

学习笔记,仅供参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值