转转丶

  • 2024-01-26
  • 回复了主题帖: microPython ESP32 串口收发问题向大佬求助

    dcexpert 发表于 2024-1-26 18:42 在while循环加个延时试试,不停判断 if uart.any(): 容易造成数据没接收完。 谢谢,问题找到了,不是串口的问题,是 RFID,do_read函数里 if stat != rdr.OK:         time.sleep_ms(10)         if stat != rdr.OK:            str1 = [ ] 导致的,他会有一定的几率判定到这里,所以串口输出是str1 = [ ],如果删除这个,就算没有读到RFID,也会输出str1 = [0x9B,.... 0x0C],现在卡在这一步,这里不知道怎么优化了。

  • 发表了主题帖: microPython ESP32 串口收发问题向大佬求助

    本帖最后由 转转丶 于 2024-1-26 16:16 编辑 import mfrc522 import time import machine from machine import Pin, UART, Timer uart= UART(2, baudrate=9600, bits=8, parity=None, rx=16,tx=17, stop=1, timeout=100) rdr = mfrc522.MFRC522(18, 23, 19, 4, 5) def do_read(): global str1 (stat, tag_type) = rdr.request(rdr.REQIDL) if stat == rdr.OK: (stat, raw_uid) = rdr.anticoll() if stat == rdr.OK: print(" - uid: 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])) str1 = [0x9B, 0xFF, 0x02, 0x00, 0x09, 0x30, 0x00, 0x08, 0x04, 0x00, raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3], 0x0C] print(str1) if stat != rdr.OK: time.sleep_ms(10) if stat != rdr.OK: str1 = [ ] while True: if uart.any(): recvData=uart.read() print(recvData) if b'\x9b\x01' in recvData: do_read() uart.write(bytes(str1)) 代码如图所示,功能是串口发送 9B 01,然后MFRC522,将 RFID,ID号通过串口发送 按如图的代码已经是实现了,不过还是有问题 第一次点串口发送,不能收到回复 ; 第二次点串口发送,可以收到回复; 第三次点串口发送,不能收到回复 ; 第四次点串口发送,可以收到回复;   反正不是每次都能有回复,哪里需要优化,能够实现每次点发送都能有效回复!

  • 回复了主题帖: MicroPython串口接收中断的另一种使用方法

    学习了

  • 2024-01-23
  • 加入了学习《ESP32 micropython视频教程》,观看 UART Serial in MicroPython

  • 加入了学习《ESP32 micropython视频教程》,观看 MFRC522 RFID

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯积分:36
  • 好友:--
  • 主题:6
  • 回复:14

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言