You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RoyalRay RRU9816 UHF RFID阅读器USB VSP串口无数据接收问题及命令协议问询

解决RoyalRay RRU9816 UHF RFID阅读器串口通信无数据的思路

我之前帮朋友搞定过类似没有官方文档的OEM RFID阅读器的通信问题,给你几个实际可行的方向,应该能帮到你:

先把基础配置的坑填上

首先别只盯着波特率,串口通信的其他参数不匹配也会导致收不到有效数据:

  • 补全Python串口初始化的参数,用行业通用的配置试试:
    import serial
    ser = serial.Serial(
        port='COM3',
        baudrate=9600,
        timeout=3,  # 把超时调长点,RFID盘点需要一定时间
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS
    )
    
  • 确认设备当前是不是USB VSP模式:有些阅读器需要物理按键切换模式,比如长按某个按钮几秒钟,或者看指示灯的状态(不同颜色对应不同模式),别默认它就是VSP模式。

试试通用UHF RFID指令,大概率能蒙中

很多OEM阅读器都会抄主流品牌的指令集,或者用行业通用的帧格式,你可以挨个试试这些「启动盘点」的指令:

  • 明文指令(带换行符,部分设备认这个):
    ser.write(b'INVENTORY\r\n')  # 发送盘点指令
    response = ser.read(128)
    print("明文指令响应:", response.hex())
    
  • 十六进制帧格式(常用的起始码+命令结构):
    # 试试AA开头的通用帧:AA 长度 命令码 参数 校验和
    ser.write(b'\xAA\x03\x01\x00\xAD')
    response = ser.read(128)
    print("十六进制指令响应:", response.hex())
    
  • STX开头的ASCII帧:
    ser.write(b'\x02INVENTORY\x03')  # STX + 命令 + ETX
    response = ser.read(128)
    print("STX帧响应:", response.hex())
    

逆向工程指令的实用方法

如果通用指令不行,就得自己挖指令了,这些方法我亲测有效:

  • USB HID模式抓包:把设备切换到HID模式,用Wireshark+USBPcap抓包,或者用USBlyzer这类工具。很多阅读器在HID模式下的通信数据和VSP模式是对应的,抓包后能直接提取出触发盘点的指令,再转用到VSP模式就行。
  • 找同类OEM模块的协议:RRU9816很大概率是用了市面上通用的UHF RFID模块(比如瑞芯微、复旦微电子的方案),去搜同价位其他品牌的入门UHF阅读器的公开协议,比如新大陆、Honeywell的部分型号,指令格式几乎一模一样。
  • 盲试帧结构:如果没抓包工具,就按常见的帧结构盲试:
    1. 起始码:先试0xAA、0xBB、0x02、0x7E这些高频出现的
    2. 命令码:0x01(盘点)、0x02(停止)、0x03(设置)是最常见的命令标识
    3. 校验位:要么是所有字节异或,要么是求和取低8位,比如0xAA+0x03+0x01+0x00=0xAE,取低8位就是0xAE(异或的话是0xAA^0x03^0x01^0x00=0xA8)

调试时的小技巧

  • 别用PuTTY调试,换用专门的串口助手(比如SSCOM、友善串口助手),这些工具支持十六进制发送和接收,能更清晰看到原始数据。
  • 发送指令后,别只等1秒,RFID盘点需要时间,把超时设为3-5秒,然后读取足够长的字节数(比如128),标签数据通常比指令长。

内容的提问来源于stack exchange,提问作者Adriel Oliveira Gomes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 06:39:58