我开发了windows mobile 6.1应用程序,可以搜索附近的蓝牙设备并发送文件。我也打印了打印蓝牙打印机文档的功能。
第一次打印功能工作得非常好但是当我再次打印文档时,我需要重新启动打印机然后打印它。
是否有任何解决方案可以避免重启打印机?
以下是https://32feet.codeplex.com/discussions/355451
参考的打印代码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.Close();
}
答案 0 :(得分:0)
虽然您关闭了客户端流,但打印机似乎需要等待一段时间再重置它的会话。
尝试发送< EOF>或< EOT>最后的字节。
根据CPCL参考指南,没有简单的复位命令,例如ESC / p({esc} @)。
每次打印后重置设备似乎都是一种过度杀伤。
编辑:sendFile的SDK示例:
Byte[] cpclLabel = Encoding.Default.GetBytes("! 0 200 200 406 1\r\n" + "ON-FEED IGNORE\r\n"
+ "BOX 20 20 380 380 8\r\n"
+ "T 0 6 137 177 TEST\r\n"
+ "PRINT\r\n");
以上版本在我的RW420上运行正常,无需在打印之间重置。