解决方法
要枚举连接到设备的RFCOMM蓝牙设备,请执行以下操作:
var DEVICE_ID = new Guid("{00000000-0000-0000-0000-000000000000}"); //Enter your device's RFCOMM service id (try to find it on manufactorer's website var services = await Windows.Devices.Enumeration.Deviceinformation.FindAllAsync( RfcommDeviceService.GetDeviceSelector( RfcommServiceId.FromUuid(DEVICE_ID)));
要连接到第一个可用设备,请执行以下操作:
if (services.Count > 0) { var service = await RfcommDeviceService.FromIdAsync(services[0].Id); //Open a socket to the bluetooth device for communication. Use the socket to communicate using the device's API var socket = new StreamSocket(); await socket.ConnectAsync(service.ConnectionHostName,service.ConnectionServiceName,SocketProtectionLevel .BluetoothEncryptionAllowNullAuthentication); //Substitue real BluetoothEncryption }
要将数据发送到设备并读取数据,请执行以下操作:
var BYTE_NUM = 64 as UInt32; //Read this many bytes IInputStream input = socket.InputStream; IoUtputStream output = socket.OutputStream; var inputBuffer = new Buffer(); var operation = input.ReadAsync(inputBuffer,BYTE_NUM,InputStreamOptions.none); while (!operation.Completed) Thread.Sleep(200); inputBuffer = operation.GetResults(); var resultReader = DataReader.FromBuffer(inputBuffer); byte[] result = new byte[BYTE_NUM]; resultReader.ReadBytes(result); resultReader.dispose(); //Do something with the bytes retrieved. If the Bluetooth device has an api,it will likely specify what bytes will be sent from the device //Now time to give some data to the device byte[] outputData = Encoding.ASCII.GetBytes("Hello,Bluetooth Device. Here's some data! LALALALALA"); IBuffer outputBuffer = outputData.AsBuffer(); //Neat method,remember to include System.Runtime.InteropServices.WindowsRuntime operation = output.WriteAsync(outputBuffer); while (!operation.Completed) Thread.Sleep(200); await output.FlushAsync(); //Now the data has really been written
这适用于所有RFCOMM(普通)蓝牙设备,如果您的设备使用蓝牙低功耗,请使用相应的GATT类.
原文地址:https://www.jb51.cc/csharp/100034.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。