2012-07-07 81 views
5

我試圖通過藍牙在PC(Linux 32位)和硬件設備之間建立串行連接。單聲道C藍牙通信#

我已經使用cutecom測試了系統。有用。波特115200,/dev/rfcomm0等...

現在我試圖創建一個客戶端軟件與莫諾能夠實現通信協議。我已測試SerialPort對象:

SerialPort mySerial; 
    mySerial = new SerialPort("/dev/rfcomm0", 115200); 
    mySerial.Open(); 
    mySerial.ReadTimeout = 1000; 

它不起作用。我已經通過有線串行連接在/dev/ttyACM0上測試了系統,並且它工作正常。所以我不認爲這是事實。

我試過使用FileStreamStreamReader,但拋出了Exception.IO: WIN32 IO returned 997

如何使用與藍牙設備的串行連接與Mono C#?

+0

什麼版本的單聲道? – IanNorton 2012-08-12 07:17:50

+0

它不起作用?你有沒有叫mySerial.Read();你有沒有嘗試過mySerial.DataReceived + = new(etc)。 – Neil 2012-10-10 15:21:41

+0

使用串行通信作爲良好實踐時,值得將停止位和奇偶校驗值設置爲某些已建立的默認值。並且始終以低波特率值開始,並在確定一切正常時加快速度。示例這裏有一個很好的起點,http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx – Phill 2012-10-17 13:05:39

回答

0

接收數據作爲的bluez 5,dbus is the preferred method用的bluez VS互操作交互。在這個主題上有一系列帖子here,基本上它涉及到連接到dbus並執行以下操作。

  • 註冊配對劑
  • 配對的設備
  • 註冊一個串行/ RFCOMM輪廓
  • 信令要連接的設備,並等待您的配置文件對象
  • 上的連接打開流來自返回的文件描述符對象。

一旦你有了流,你可以對流進行所有通常的讀/寫操作,就像你將它打開爲串口一樣。

+0

BlueZ DBus的實現與代理一起使用,它構成了核心抽象的幾乎任何藍牙相關的:外圍設備,藍牙控制器(適配器),GATT特性(如果您使用LE)等。 DBus對象使用應該使用的方法和屬性發布接口。我不知道OP對serial/rfcomm配置文件的意圖,但可以使用DBus以不同的方式管理寫入。 – Zimano 2016-02-01 09:07:26