2011-06-04 98 views
1

我剛開始藍牙編程。我需要在C#中創建一個從J2ME應用程序接收圖像的桌面應用程序。問題C#和32feet.NET藍牙庫

開始之前...我剛剛嘗試了32feet用戶指南中的一些代碼片段...該指南在VB.NET中。

VB.NET工作正常......但我的C#工作不正常。

這裏是VB.NET代碼段

Public Shared Sub find() 
    Dim btClient As New InTheHand.Net.Sockets.BluetoothClient 
    Dim bdi As BluetoothDeviceInfo() = btClient.DiscoverDevices() 
    Dim device As BluetoothDeviceInfo = bdi(0) 
    Dim addr As BluetoothAddress = device.DeviceAddress 
    Dim name As String = device.DeviceName 
    Console.WriteLine(name) 
End Sub 

這裏是C#轉換

public static void Main() 
    { 
     BluetoothClient cli = new BluetoothClient(); 
     BluetoothDeviceInfo[] peers = cli.DiscoverDevices(); 
     BluetoothDeviceInfo device = peers[0]; 
     String name = device.DeviceName; 
     Console.WriteLine(name); 
     Console.Read(); 
    } 

的C#給我一個ArrayIndexoutofBOund例外......這意味着沒有設備發現。

有什麼建議?謝謝你的幫助。

回答

2

我的猜測是這兩個程序以某種方式使用不同版本的庫。而C#編譯器正在使用舊版本的庫並將其複製到輸出文件夾中。檢查庫程序集與每個.exe在同一文件夾中的版本。

也可能Widcomm或BlueSoleil正在您的機器上使用,而不是Microsoft藍牙堆棧。如果它的Widcomm確保32feetWidcomm.dll文件也在那裏。

+0

感謝您的回覆。我在我的機器上使用Microsoft Visual Studion 2005和Microsoft Broadcomm。你能告訴我什麼版本的InTheHand.Net.Personal.dll是必需的。另外我是否需要上面提到的32feetWidcomm.dll。我使用C#編程。我很抱歉這樣一個小問題,但這是我第一次使用藍牙和.NET。謝謝。 – knurdy 2011-06-07 22:27:16

+0

自2.4版以來,Widcomm一直受到支持,但我們在3.2(截至昨天),所以不要去尋找2.4。你在兩個應用程序的文件夾中有什麼版本? – alanjmcf 2011-06-10 21:06:15

0

你的C#代碼對我來說看起來很好。

當您運行C#代碼時,您確定有藍牙設備連接到您的PC嗎?我意識到這可能聽起來是一個簡單的迴應,但可能是,當您運行C#代碼時,藍牙連接或設備出現問題?除此之外,如果C#代碼調用VB.NET版本調用的完全相同的代碼,我真的不明白爲什麼應該有所不同。

+0

謝謝埃文斯先生的回覆。是的,我很確定設備的存在。 – knurdy 2011-06-04 12:16:20