将 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 字节数组而不是字符串命令。
我有这个 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 字节数组而不是字符串命令。