问题描述
公司买了个蓝牙吊秤,想将重量传到系统,我在网上找了一些资料,有以下一段代码:设备是之前与蓝牙匹配了的,可以找到蓝牙GUID也是正确的但在接收数据时,在这句代码停住了,也不报其它错误bluetoothClient=bluetoothListener.AcceptBluetoothClient();应该是不能连接蓝牙不知道有没有大神做过类似的程序,帮忙指点一二感激不尽!!BluetoothListenerbluetoothListener;ThreadlistenThread;BluetoothClientbluetoothClient=newBluetoothClient();boolisConnected;publicboolOpenPort(){InTheHand.Net.Bluetooth.BluetoothRadio.PrimaryRadio.Mode=InTheHand.Net.Bluetooth.RadioMode.Connectable;InTheHand.Net.Sockets.BluetoothClientcli=newInTheHand.Net.Sockets.BluetoothClient();InTheHand.Net.Sockets.BluetoothDeviceInfo[]devices=cli.DiscoverDevices();foreach(InTheHand.Net.Sockets.BluetoothDeviceInfodeviceindevices)//设备搜寻{device.Update();device.Refresh();if(device.DeviceName=="BF10-A"){this.textBox2.Text="设备已找到";break;}}ThreadReceiveThread=newThread(ReceiveData);ReceiveThread.Start();returntrue;}publicvoidReceiveData(){#regiontry{GuidmGUID=Guid.Parse("00001101-0000-1000-8000-00805f9b34fb");bluetoothListener=newBluetoothListener(mGUID);bluetoothListener.Start();bluetoothClient=bluetoothListener.AcceptBluetoothClient();isConnected=true;}catch(Exceptionex){isConnected=false;MessageBox.Show(ex.ToString());}while(isConnected){stringreceive=string.Empty;if(bluetoothClient==null){break;}try{StreampeerStream=bluetoothClient.GetStream();byte[]buffer=newbyte[6];peerStream.Read(buffer,0,6);receive=Encoding.UTF8.GetString(buffer).ToString();textBox1.Text=receive;}catch(System.Exception){}Thread.Sleep(100);}#endregion}
解决方案
解决方案二:
客户端有没有匹配成功?
解决方案三:
估计bluetoothListener.AcceptBluetoothClient();这个会阻塞当前的线程。要写在线程里面,等有蓝牙客户端连接时,就会触发bluetoothListener.AcceptBluetoothClient();的
解决方案四:
设备厂家没给通信协议?确定不需要你先发送什么请求,设备就直接不停给你传数据?按理说这类设备应该都是作为从站,只有主站发送指令才会有响应.否则如果你买了2个秤,还必须弄两个带蓝牙的电脑去读数据?
解决方案五:
代码里面有发现其他蓝牙设备的代码,但是好像没有看到蓝牙设备配对的代码,发送接收数据是以连接上两台设备为基础的摘自BluetoothDeviceInfobd=newBluetoothDeviceInfo(devices[0].DeviceAddress);bluetoothClient=newBluetoothClient();GuidmGUID=Guid.Parse("fa87c0d0-afac-11de-8a39-0800200c9a66");bluetoothClient.Connect(devices[0].DeviceAddress,mGUID);//客户端对地址实现连接,这是一个阻塞线程,需要服务器端的回应ThreadReceiveThread=newThread(ReceiveData);ReceiveThread.Start();
解决方案六:
也可以参考一下开源项目中关于蓝牙连接的介绍
解决方案七:
引用3楼Z65443344的回复:
设备厂家没给通信协议?确定不需要你先发送什么请求,设备就直接不停给你传数据?按理说这类设备应该都是作为从站,只有主站发送指令才会有响应.否则如果你买了2个秤,还必须弄两个带蓝牙的电脑去读数据?
跟厂家要了一个程序,连接上了就自动接收数据这蓝牙吊秤是自动发送数据的
解决方案八:
那有没有确认设备已经配对,并且连接上了?引用6楼fanslion的回复:
跟厂家要了一个程序,连接上了就自动接收数据这蓝牙吊秤是自动发送数据的
解决方案九:
大哥,你这程序后来是怎么实现的,最近我也在做这个功能,求指教
解决方案十:
不用这样,直接用串口通讯就行啊。http://download.csdn.net/detail/jqj2013/8900495看这个资源,如果是计算机的话,更简单。都不用IntheHand
解决方案十一:
串口监听就行~还是不明白的联系我求356873548