我刚刚开始蓝牙编程。我需要在C#中提出一个桌面应用程序,它从J2ME应用程序接收图像。
开始之前......我刚刚尝试了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异常...意味着没有发现任何设备。
有什么建议吗?谢谢你的帮助。
答案 0 :(得分:2)
我的猜测是两个程序以某种方式使用不同版本的库。并且C#编译器正在使用旧版本的库并将其复制到输出文件夹中。检查库程序集与每个.exe。
在同一文件夹中的版本也可能在您的计算机上使用Widcomm或BlueSoleil而不是Microsoft蓝牙堆栈。如果它的Widcomm确保32feetWidcomm.dll文件也存在。
答案 1 :(得分:0)
你的C#代码对我来说很好。
运行C#代码时,您确定PC上连接了蓝牙设备吗?我意识到这可能听起来简单的响应,但可能是,当你运行C#代码时,蓝牙连接或设备出现了问题?
除此之外,如果C#代码调用与VB.NET版本调用完全相同的代码,我老实说也看不出为什么会有差异。