将 AT 命令发送到 CDC reader 并获得响应

Send AT command to a CDC reader and get response

我有这个 CDC 非接触式 reader,它与显示为虚拟串行端口的 USB 相连。我能够找到端口并使用以下代码发送 AT 命令:

string strPort = GetPortName();

SerialPort srPort = new SerialPort(strPort, 9600);

srPort.Open();

if (srPort.IsOpen)
{
    //device info
    srPort.WriteLine(@"ATI\r" + (char)(13));
    System.Threading.Thread.Sleep(200);

    MessageBox.Show("Device: " + srPort.ReadExisting());

    //card UID
    srPort.WriteLine(@"AT+i\r" + (char)(13));
    System.Threading.Thread.Sleep(200);

    string strRes = srPort.ReadExisting();

    MessageBox.Show("UID: " + strRes);

    srPort.Close();
}

我正在根据 device documentation 发送命令。第一个命令没问题,但是第二个应该给我卡 UID 的命令总是返回 ERROR.

我是否以正确的方式将命令字符串发送到端口?因为第二个命令之间有一个 + 符号,我想这可能是错误的原因?

我尝试联系他们的支持,但没有任何反馈。所以我希望在这里得到一些帮助。

所以在测试阅读和测试文档中的命令后,我意识到我的 reader 处于扫描模式,这意味着它忽略了发送到设备的所有命令。我关闭了扫描模式并能够获取卡的 UID。

我还将 WriteLine 替换为“Write”,并且仅使用 ASCII 字节数组而不是字符串命令。