串行通信 Zebra GC420t - 未接收

Serial communication Zebra GC420t - Not receiving

我正在尝试通过 c# 中的串行端口与 GC420t 通信。

我需要获取打印机的状态。

我想发送命令~HQES并接收状态。

我会写命令:我尝试成功打印了一些二维码。

但是当我写状态信息命令时,我没有得到任何答案。

这是我的测试代码:

//define serial port
static SerialPort _serialPort = new SerialPort("COM7", 9600, Parity.None, 8, StopBits.One);

public Serial()
{
      try
      {
        _serialPort.Open();
        WriteCommand();
        ReadStatus();
      }
      catch (Exception ex)
      {
        _serialPort.Close();
      }
}



public void WriteCommand()
{
      string qrcode = "^XA^FO,20,20^BQ,2,10^FDD03048F,LM,N0123456789,A12AABB,B0006qrcode^FS^XZ";
      string statusInfo = " ~HQES";
      _serialPort.Write(statusInfo);
}

public void ReadStatus()
{
      _serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}

private static void DataReceivedHandler(
           object sender,
           SerialDataReceivedEventArgs e)
{
      SerialPort sp = (SerialPort)sender;
      string indata = sp.ReadExisting();
      Console.WriteLine("Data Received:");
      Console.Write(indata);
}

编辑: 我也可以根据要求获得该信息:

WriteCommand();
int timeout = 3000;
while (timeout > 0)
{
   Thread.Sleep(10);
   timeout--;
   // Timeout
   string status = _serialPort.ReadExisting();
}

您需要在 DataReceived 处理程序 进行任何调用之前连接 ,否则它可能在您连接之前已经应答。

ReadStatus 向上移动 1 行,使其紧跟在构造函数之后。

    _serialPort.Open();
    ReadStatus();
    WriteCommand();

您应该检查打印机是否配置为使用任何形式的握手?特别是 XON/XOFF 或 DTR 。

参考用户指南第 24 页。 https://www.uline.com/PDF/IH-7246VND.PDF

如果 link 中断 - 相关文本是

"The printer has a DCE serial communication port for hardware compatibility with legacy 888 printers. The required cable must have a nine-pin "一端为 D" 型 (DB-9P) 公连接器,插入位于打印机背面的配套 (DB-9S) 串行端口。此信号接口的另一端电缆连接到主机上的串行端口。电缆是零调制解调器(交叉信号连接)电缆。有关引脚信息,请参阅附录 A。

打印机和主机(通常是 PC)之间的串行端口通信设置必须匹配才能进行可靠通信。每秒位数(或波特率)和流量控制是最常见的更改设置。主机(通常是 Windows PC)需要更改数据流控制以匹配打印机的默认通信方法:硬件,并由主机握手设置 DTR/Xon/Xoff 注明。这种组合的硬件 (DTR) 和软件 (Xon/Xoff) 模式可能需要根据使用非 Zebra 应用软件或使用的串行电缆变化而改变。"