树莓派和电脑之间串口通信编程
目录
一、串口通信协议
1、先了解下全双工和半双工的区别
2、串口通信关注点
二、树莓派和电脑之间串口通信编程
1、初次使用树莓派串口编程,需要配置
2、串口通信相关的API
(1)serialOpen——打开并初始串口
(2)serialPutchar——发送一个字节的数据到串口
(3)serialPuts——发送一个字符串到串口
(4)serialGetchar——读取串口数据
(5)serialDataAvail——判断读取的串口是否有数据
(6)serialClose——关闭fd关联的串口
测试代码1:发送一个字符串到串口
测试代码2:读取串口数据
一、串口通信协议
1、先了解下全双工和半双工的区别
全双工好比两个人可以互相讲话
半双工好比两个人讲话时只能是一个人讲话,一个人听着
串口通信方式是全双工的
2、串口通信关注点
(1)数据格式(好比语言),包括数据位、停止位、奇偶校验位
(2)波特率(好比语速),比如常用的波特率:115200
二、树莓派和电脑之间串口通信编程
首先串口在Linux底下也是文件
1、初次使用树莓派串口编程,需要配置
(1)修改cmdline.text文件
sudo vi /boot/cmdline.txt
(2) 删除【】之间的部分:【console=ttyAMA0,115200】这部分删除
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
(3)重启树莓派
sudo reboot
2、串口通信相关的API
使用时需要包含头文件:#include <wiringSerial.h>
(1)serialOpen——打开并初始串口
int serialOpen (char *device, int baud)device: 串口的地址,默认是"/dev/ttyAMA0"
baud: 波特率,比如9600,或者115200
返回: 正常返回文件描述符,否则返回-1失败。
(2)serialPutchar——发送一个字节的数据到串口
void serialPutchar (int fd, unsigned char c)fd: 文件描述符
c: 要发送的数据
(3)serialPuts——发送一个字符串到串口
void serialPuts (int fd, char *s)fd: 文件描述符
s: 发送的字符串,字符串要以'\0'结尾
(4)serialGetchar——读取串口数据
int serialGetchar (int fd)fd: 文件描述符
返回: 读取到的字符
如果串口缓存中没有可用的数据,则会等待10秒,如果10后还有没,返回-1,
所以,在读取前,做好通过serialDataAvail判断下
(5)serialDataAvail——判断读取的串口是否有数据
int serialDataAvail (int fd)fd: 文件描述符
返回: 判断读取的串口是否有数据,有数据返回读取的字节数,无数据,返回-1
(6)serialClose——关闭fd关联的串口
void serialClose (int fd)fd:文件描述符
测试代码1:发送一个字符串到串口
#include <stdio.h>
#include <wiringSerial.h>
#include <wiringPi.h> int main(){int fd;wiringPiSetup();//初始化 fd = serialOpen("dev/ttyAMAO",9600); //打开并初始化串口while(1){ //serialPutchar(fd,'c'); //发送一个字节数据到串口serialPuts(fd,"china very good \r\n"); //发送一个字符串到串口delayMicroseconds(1000000); //每隔1秒发送一次}serialClose(fd); //关闭串口return 0;
}
测试代码2:读取串口数据
#include <stdio.h>
#include <wiringSerial.h>
#include <wiringPi.h> int main(){int fd;int cmd;wiringPiSetup();//初始化fd = serialOpen("dev/ttyAMAO",9600); //打开并初始化串口while(1){while(serialDataAvail(fd) != -1){ //判断读取的串口是否有数据 cmd = serialGetchar(fd); //读取串口数据printf("get data: cmd=%d\n",cmd);if(cmd == '2'){serialPuts(fd,"my name is Bob 2\r\n");}if(cmd == '3'){serialPuts(fd,"my name is Bob 3\r\n");}if(cmd == '4'){serialPuts(fd,"my name is Bob 4\r\n");}}}serialClose(fd); //关闭串口return 0;
}
树莓派和电脑之间串口通信编程相关推荐
- 串口通信协议(基于面试),与及树莓派与电脑之间串口通信
一.首先来说一下基于面试的串口通信协议 树莓派wiringPi库详解 (1)串口通信是基于多机的通信 主要就是两根线:RXD和TXD 举例,语音识别模块与树莓派之间进行串口通信 语音模块的T连接树莓派 ...
- 21 树莓派和电脑之间串口通讯编程
linux特性:一切皆文件(设备虽然是硬件,但在Linux当中它还是以文件形式存在) 在cd/dev目录下ls 初次使用树莓派串口编程,需要配置. 参考:树莓派wiringPi库详解 - lulipr ...
- 树莓派外设开发基础—串口通信
文章目录 一.串口通信的一些概念 二.树莓派串口通信设置 三.树莓派串口通信API 四.树莓派与PC通信 1.接线 2.程序与测试 拓展 一.串口通信的一些概念 串口通信通常用在多机通信中. 串口通信 ...
- 树莓派与电脑之间的串口通信编程
树莓派与电脑之间的串口通信编程 数据通信的三个方式介绍 单工通信 半双工通信 全双工通信 串口通信 编程步骤 数据通信的三个方式介绍 单工通信 只支持数据在一个方向上传输,又称为单向通信.如无线电广播 ...
- VC串口通信编程-2
VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...
- Visual C++串口通信编程---多线程异步方式
Visual C++串口通信编程---多线程异步方式 1. 串口通信基础 提到串口让人想起并口,它们是计算机中两个比较重要的通信方式. 串口:也叫COM口,把字节的二进制位按位列队进行传输,每个字节占 ...
- MFC 串口通信编程
本篇文章主要介绍了"RS-232/RS-485/RS-422 接口简介与编程",主要涉及到RS-232/RS-485/RS-422 接口简介与编程方面的内容,对于RS-232/RS ...
- 【转载】MFC实现串口通信编程nbsp;-nbsp;yu…
MFC实现串口通信编程 vc++.c#专题 2009-10-08 22:32 在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题.计算机和单片机(如MCS-51)都具 ...
- (串口通信编程) 开源串口调试助手Common (Com Monitor)
原文地址为: (串口通信编程) 开源串口调试助手Common (Com Monitor) 最新的文档见这里:http://blog.twofei.com/566/ 我写的串口调试助手程序以及源代码. ...
最新文章
- cors在服务器还是接口_cors
- 未来哲学的六个问题域
- 线程间通信共享变量和queue
- 图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)
- 在Windows Server 2008 R2下搭建jsp环境(四)-在测试的过程中可能出现的问题
- HDU 4787 GRE Words Revenge
- K-means算法在手写体数字图像数据上的使用示例-代码详解
- GM6 frontend Shell._resolveHashFragment when tile is clicked
- 2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法
- 类创建几种java_Java创建对象的几种方式
- html语言arc属性,为要素图层设置 HTML 弹出窗口属性
- stl_algorithm算法之排序算法
- MFC 鼠标光标资源 及 更换
- php 银行卡二三四要素验证接口
- 如何选择和更换阿里云服务器操作系统?
- 解析2019年新零售社区团购发展方向
- Technica Engineering Enhanced Ethernet Switch, 车载以太网交换机功能介绍(100/1000BASE-T1 Switch, AVB/TSN)
- 如何控制舵机的速度?
- Java并发 - 线程的生命周期
- Day 2: On Your Choices