打印后如何避免重启蓝牙打印机?

时间:2014-06-03 04:54:46

标签: printing bluetooth windows-mobile-6.5 32feet

我开发了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();
    }

1 个答案:

答案 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上运行正常,无需在打印之间重置。