完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我使用 LoLIn ESP8266 nodemcu 通过#define SERIAL_RX D7 // SoftwareSerial RX 的引脚SoftwareSerial mySerial(SERIAL_RX, -1, true, MAXLINELENGTH);
读出我的数字(电和气)表。// (RX, TX. inverted, buffer)但大多数读数(每秒 1 次,软件串行速度为 115200)总是包含一个或一些错误读数。我在大约 10 到 30 个读数中只有 1 个正确读数(幸运的是有一个 CRC)见下面的例子:0-1:24.1.0(0p3)应该是0-1:24.1.0(003) (用人类语言:电流消耗为 003 安培)一个完整的读数如下所示(我删除或修改了一些行,因为这些是 id 的): 1-0:1.8.1(000155.825*kWh) 1-0:1.8.2(000115.526*kWh) 1-0:2.8.1(000029.778*kWh) 1-0:2.8.2(000013.810*kWh) 0- 0:96.14.0(0001) 1-0:1.7.0(00.562*kW) 1-0:2.7.0(00.000*kW) 1-0:32.7.0(228.0*V) 1-0:31.7。 0(002*A) 0-0:96.3.10(1) 0-0:17.0.0(999.9*kW) 1-0:31.4.0(999*A) 0-0:96.13.0() 0 -1:24.1.0(0p3) 0-1:96.1.1(123456789) 0-1:24.4.0(1) 0-1:24.2.3(123456789)(00161.732*m3) !4249 ===无效找到 CRC!=== 我知道软件串行对于如此高的速度来说并不理想,但据我所知,我在这里没有其他选择,因为 uart 由 USB 芯片使用/连接到 USB 芯片(并且交换到 uart 数据控制线没有不适合我) 你觉得我在这里运行到软件串行容量的极限吗? 还是应该在某个地方找到解决方案? |
|
相关推荐
1个回答
|
|
这可能是由于软件串口的限制导致的。对于 ESP8266,软件串口(也称为软串)通常是在 GPIO 的输入 / 输出周期中模拟出来的。这意味着它们可能会受到干扰,导致数据错误或丢失。为了避免这个问题,您可以尝试一些解决方案:
1. 降低软串的速度。您可以尝试将速度降低为 9600 甚至更低,看看是否有所改善。 2. 使用硬件串口。 ESP8266 有两个硬件串口,它们都可以提供更好的性能和稳定性。您可以使用其中一个串口来连接您的数字表。 3. 在读取串行数据之前,添加一些时延来确保您的读取过程不会受到其他处理的干扰。 4. 在读取数据之前,添加一些数据缓冲区,这可以防止在读取期间丢失数据。 希望这些解决方案可以帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
486 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
443浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 17:11 , Processed in 0.720803 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号