2013-10-10 72 views
0

我想從運行WM6.5的摩托羅拉ES400在Zebra iMZ320上打印一些行。我使用32feet庫和C#通過藍牙進行通信。斑馬iMZ320通信錯誤藍牙

我的代碼曾經在MZ320上效果很好,但是使用新的iMZ320時,通信有時會停止(即使在打印作業過程中),但我必須重新啓動打印機,因爲它一直拒絕重新連接。

我試圖打破幾行中的CPCL字符串,並以100ms的間隔逐行發送,但沒有任何改進。

我注意到,當我關閉我的應用程序並重新啓動它時,通信肯定會失敗。

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(); 
    } 
+0

打印機可能試圖發回一些信息,但您的代碼沒有任何行可以從流中讀取。你可以嘗試從PC上打印相同的內容嗎?另一種選擇是使用虛擬通信端口進行BT通信。您可以將打印機與設備配對,並定義一個新的傳出端口並將其用於串行通信。順便說一句:一些摩托車裝置和那裏的藍牙行爲不好。 – josef

+0

我試圖從PC和從Android上運行的藍牙終端打印相同的文件,一切正常。但我只嘗試過1到2次,而且我描述的情況是隨機發生的。 –

回答

0

摩托羅拉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)。除了一般的良好實踐外,摩托羅拉和斑馬在最近的固件版本中都有固定的藍牙相關問題。

來自PC/Android設備的其他測試應該能夠深入瞭解問題的根源是打印機還是手持設備 - 如果從其他設備連接到打印機時無法再現此問題,則手持設備很可能是錯誤的。