2017-01-10 19 views
0

私はクロスプラットフォームアプリケーションを開発中です。Bluetoothデバイスで印刷 - Xamarin

飲料に.Droidで

クラス

[assembly: Xamarin.Forms.Dependency(typeof(clsBluetooth))] 
namespace Bluetooth.Droid 
{ 
    public class clsBluetooth : IBluetooth 
    { 
     private BluetoothAdapter adapter = BluetoothAdapter.DefaultAdapter; 
     private BluetoothSocket socket = null; 
     private BufferedWriter outReader = null; 
     private BluetoothDevice device = null; 

     public void Imprimir(string pStrNomBluetooth, int intSleepTime, string pStrTextoImprimir) 
     { 
      try 
      { 
       string bt_printer = (from d in adapter.BondedDevices 
            where d.Name == pStrNomBluetooth 
            select d).FirstOrDefault().ToString(); 

       device = adapter.GetRemoteDevice(bt_printer); 

       UUID applicationUUID = UUID.FromString("00001101-0000-1000-8000-00805f9b34fb"); 

       socket = device.CreateRfcommSocketToServiceRecord(applicationUUID); 

       socket.Connect(); 

       outReader = new BufferedWriter(new OutputStreamWriter(socket.InputStream)); 

       outReader.WriteAsync(pStrTextoImprimir); 
      } 
      catch (Exception) 
      { 

       throw; 
      } 
      finally 
      { 
      } 
     } 

     public ObservableCollection<string> PairedDevices() 
     { 
      ObservableCollection<string> devices = new ObservableCollection<string>(); 

      foreach (var bd in adapter.BondedDevices) 
       devices.Add(bd.Name); 

      return devices; 
     } 
    } 
} 

インタフェース:

は私が

が、私はこのコードを使用するプリンタのIntermec PR2に印刷する必要があります私は.Droidでクラスを入力し、それをデバイスに接続していないようです文socket.Connect();を実行したとき

DependencyService.Get<IBluetooth>().Imprimir(SelectedBthDevice,200,"HolaMundo"); 

方法

public interface IBluetooth 
{ 
    ObservableCollection<string> PairedDevices(); 

    void Imprimir(string pStrNomBluetooth, int intSleepTime, string pStrTextoImprimir); 
} 

コールは私のエラーが発生します。代わりに1既存のセキュアの

socket = device.CreateInsecureRfcommSocketToServiceRecord(applicationUUID); 

: 誰かがスクリプトを確認したり、コードがデバイスへの接続のような安全でないソケット通信を作成してみてください正しく

+0

ソケットを接続するときに何か例外がありますか? – Cheesebaron

+0

エラーは何ですか? – Demitrian

+0

@Cheesebaron申し訳ありませんが、エラーが含まれていることを忘れないでください:読み取りに失敗しました。ソケットが閉じられているかタイムアウトしました。読み取り:-1 –

答えて

0

を動作するように変更することができますどのように私を助けることができます:

socket = device.CreateRfcommSocketToServiceRecord(applicationUUID); 

あなたはその後に接続することができるならば、以下のように、あなたは、プリンタに書き込むことができます。

byte[] buffer = Encoding.UTF8.GetBytes(pStrTextoImprimir); 
socket.OutputStream.Write(buffer, 0, buffer.Length); 

詳細はrefer toをご覧ください。

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 18600716) – dirtydanee

+0

あなたの言っていることを理解しています。複雑さは、応答のための完全なコンテンツ/コードが大きいことです。それに対処する方法? – Sumiran

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参照のためのリンクを提供する方が良いでしょう。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 18600716) –