微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决向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字节数组而不是字符串命令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。