树莓派开发 串口通信

串口中\r\n才是换行单独\n不好用

一、概述

全双工:女骂男、男骂女
半双工:只能一个骂

两个人之间交流分:语言、语速
对应串口就是:数据格式(数据位、奇偶校验、停止位)、波特率

二、初次使用串口通信

注意:使用时需要包含头文件:#include <wiringSerial.h>

1.初次使用树莓派串口编程,需要配置

 /* 修改 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 重启

2.代码测试

#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;
}

3.最后打开串口调试工具
1.打开串口

2.设置波特率为 9600

3.在树莓派的Linux系统中编译运行前面的代码

4.在串口调试工具中发送数据(文本格式)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值