【发布时间】: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