- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ESP32学习实例(⼆)串⼝测试学习之数据通信
⽬录
Esp32的串⼝发送,相对来说⽐串⼝接收要简单⼀些,我们第1部分先看⼀下ESP32的串⼝发送是如何实现的。第2部分我们使⽤⼀些代码
⽤来读取esp32串⼝所接收到的数据。
⼀、串⼝介绍
Esp32⼀般有三个串⼝,串⼝0⼀般是⽤于程序的烧写和打印输出调试。所以⼀般情况下,我们使⽤其他剩下的两个串⼝。
⼆、串⼝测试
⾸先我们使⽤下⾯的程序来检测⼀下我们的串⼝是否能够正常的开启,并通过串⼝监视器来打印出相关的内容。
#include HardwareSerial.h
HardwareSerial MySerial_stm32(1);
void setup() {
Serial.begin(115200);
MySerial_stm32.begin(115200, SERIAL_8N1, 14, 15);
}
void loop() {
MySerial_stm32.println(usart test);
delay(1000);
}
在进⾏调试的时候,我们要输出的打印信息,最好设置为英⽂,因为有时候中⽂是不兼容的,他会出现⼀些乱码。
我们来简单了解⼀下这个验证串⼝是否能够开启和发送的程序,⾸先include⾥⾯包含的是⼀个库Esp32串⼝的操作库,使⽤这个库,我们
可以把串⼝投影到其他引⾓进⾏使⽤,接下来是串⼝的开启程序,后⾯的⼀步是设置波特率的操作。
⽽最后loop那个程序是⽤来在⼀秒钟的时间内打印⼀次内容的。我们要通过这个程序来了解到begin这个函数如何使⽤。
三、串⼝数据的发送和读取
然后我们看串⼝数据是如何读取的,⾸先我们的数据发送到串⼝中是需要有⼀个储存的位置,⽽临时的储存位置,我们称为缓存,我们⾸先
使⽤⼀个读取和清理缓存的函数,它的功能是读取⼀个数据后即⽴刻清除这个数据。
要实现数据读取的功能,我们的思路可以是这样的:⾸先读取缓存区的数据,然后将读取到的数据⽴刻删除,然后读取到的数据,在串⼝监视
器中打印,如果储存区没有储存的数据,我们要让串⼝打印出没有数据的信息,如果存在数据,我们要让他输出串⼝接收的数据量是什么。
经过上述的思路整理,我们的最终程序是这样的。
#include HardwareSerial.h
HardwareSerial MySerial_stm32(1);
unsigned short i;
char temp;
//这个函数适⽤于清理串⼝读取缓存区的缓存,其实也就是⽤读⼀个删除⼀个的⽅式清理,我还会打印出有没有进⾏清理,清理了哪些内容
void clear_usart_buffer(){
i = MySerial_stm32.available();
if(i != 0){
Serial.print(清空串⼝接收区的缓存);
Serial.println(MySerial_stm32.available());
while(i--)
MySerial_stm32.read(); //读取串⼝接收回来的数据但是不做处理只给与打印
}
else
Serial.println(串⼝接收区的缓存为空);
}
/
void read_usart(){
i = MySerial_stm32.available(); //返回⽬前串⼝接收区内的已经接受的数据量
if(i != 0){
Serial.print(串⼝接收到的数据量为:);
Serial.println(MySerial_stm32.available());
while(i--){
temp = MySerial_stm32.read(); //读取⼀个数据并且将它从缓存区删除
Serial.print(temp); //读取串⼝接收回来的数据但是不做处理只给与打印
}
Serial.println();
//data_analyse(); //⾄关重要的⼀步,也就是把读取回来的数据进⾏分步截取直接拿到我们想要的数据,我下⼀篇博⽂会讲如何⾃⼰写这个函数
}
else
Serial.println(串⼝接收区没有数据
原创力文档


文档评论(0)