向CDC阅读器发送AT命令并获得响应

问题描述

我有这个CDC非接触式阅读器,它与显示为虚拟串行端口的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

我是否以正确的方式将命令字符串发送到端口?因为第二个命令之间插入了+,并且我想这可能是导致错误的原因?

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

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...