【问题标题】:Zebra iMZ320 communication error bluetoothZebra iMZ320 蓝牙通讯错误
【发布时间】:2013-10-18 05:32:09
【问题描述】:

我想从运行 WM6.5 的摩托罗拉 ES400 在 Zebra iMZ320 上打印一些线条。我正在使用 32feet 库和 C# 通过蓝牙进行通信。

我的代码过去在 MZ320 上运行良好,但使用新的 iMZ320 时,通信有时会停止(即使在打印作业中),我必须重新启动打印机,因为它一直拒绝再次连接。

我尝试将 CPCL 字符串分成几行并以 100 毫秒的间隔逐行发送,但没有任何改进。

我注意到,当我关闭我的应用并重新启动它时,通信肯定会失败。

private void btPrint_Click(object sender, EventArgs e)
    {            
        // Activate BT
        BluetoothRadio.PrimaryRadio.Mode = RadioMode.Connectable;
        System.Threading.Thread.Sleep(1000);
        // Connect  
        BluetoothAddress btAddress;
        btAddress = BluetoothAddress.Parse("0022583165F7");            
        BluetoothClient btClient = new BluetoothClient();
        try
        {
            btClient.Connect(new BluetoothEndPoint(btAddress, BluetoothService.SerialPort));
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            return;
        }
        // Send data
        string CPCLStr1 =
            "! 0 200 200 210 1" + Environment.NewLine +
            "ML 25" + Environment.NewLine +
            "TEXT 7 0 10 20" + Environment.NewLine +
            "Just" + Environment.NewLine +
            "Testing" + Environment.NewLine +
            "ENDML" + Environment.NewLine +
            "FORM" + Environment.NewLine +
            "PRINT" + Environment.NewLine;

        // Convert CPCL String to byte array
        byte[] CPCLbytes1 = ASCIIEncoding.ASCII.GetBytes(CPCLStr1);

        NetworkStream ns = btClient.GetStream();
        ns.Write(CPCLbytes1, 0, CPCLbytes1.Length);
        btClient.dispose();
        btClient.Close();
    }

【问题讨论】:

  • 可能打印机正在尝试发回一些信息,但您的代码没有任何要从流中读取的行。您可以尝试从 PC 打印相同的内容吗?另一种选择是使用虚拟 com 端口进行 BT 通信。您可以将打印机与设备配对并定义一个新的传出端口并将其用于串行通信。顺便说一句:一些 moto 设备和那里的蓝牙表现不佳。
  • 我尝试从 PC 和运行在 Android 上的蓝牙终端打印相同的内容,一切正常。但我只尝试过 1 或 2 次,我描述的情况是随机发生的。

标签: c# bluetooth windows-mobile zebra-printers 32feet


【解决方案1】:

Zebra provides a windows mobile sdk 为您建立蓝牙连接。

【讨论】:

    【解决方案2】:

    摩托罗拉 WinMobile 手持设备随附的蓝牙堆栈(StoneStreetOne 和 Microsoft)中存在多个错误,这些错误会导致与此类似的故障。由于您为 BT 使用 32Feet 库,因此您应该能够切换堆栈(从 SSO 到 MS,反之亦然),而无需对您的应用程序进行任何代码更改。这需要一个简单的注册表修改——更多信息请参见http://christian-helle.blogspot.com/2010/10/motorola-dual-bluetooth-stack-support.html

    另外,我会确保您运行的是摩托罗拉的最新 WinMobile 版本。我还要确保您拥有 iMZ 的最新固件(截至 2014 年 4 月的 V73.19.6Z)。除了一般的良好做法外,摩托罗拉和 Zebra 都在最近的固件版本中修复了与蓝牙相关的问题。

    从 PC/Android 设备进行的额外测试应该可以深入了解问题的根源是打印机还是手持设备 - 如果您在从其他设备连接到打印机时无法重现此问题,那么手持设备是可能有错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多