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