首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用应用+蓝牙+ SPP

通用应用+蓝牙+ SPP
EN

Stack Overflow用户
提问于 2015-06-17 12:50:49
回答 1查看 4.3K关注 0票数 2

我目前正在试图构建一个库,用于在通用应用程序上使用串行端口配置文件(SPP)。

据我所知,SPP运行在RFCOMM之上。MSDN概述了RFCOMM的基础知识,这是很好的。我还能“找到”我的设备,并“连接”到它。我还为RFCOMM创建了一个StreamReader和StreamWriter。

现在麻烦来了。据我所知,RFCOMM为各种功能/任务提供了一些通道,其中之一可能是SPP (我知道设备特性SPP,甚至在通过“正常”串行连接完成时也能工作)。

我想知道是否有一个例子,我必须通过该通道发送哪些字节才能在另一边获得单个字节输出。是否需要某种连接设置(双向交换)?这些数据包是否有示例,它们的名称是什么,是否有特定的规范。我想我会很高兴,即使有一些正确的条件来寻找。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-18 18:39:42

好吧,我以为基本上是错的。以下是非常简单的极简代码(没有错误处理,没有任务,.)沟通。

这将进入Package.appxmanifest:

代码语言:javascript
复制
<Capabilities>
  <m2:DeviceCapability Name="bluetooth.rfcomm">
    <m2:Device Id="any">
      <m2:Function Type="name:serialPort" />
    </m2:Device>
  </m2:DeviceCapability>
</Capabilities>

这是你选择的方法(确保你的蓝牙设备已经配对,我的设备的名字是"HC-06")。

代码语言:javascript
复制
// Find the device
var bluetoothDevicesSpp = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));
var bluetoothDeviceHc06 = bluetoothDevicesSpp.SingleOrDefault(d => d.Name == "HC-06");
var serviceRfcomm = await RfcommDeviceService.FromIdAsync(bluetoothDeviceHc06.Id);
StreamSocket socket = new StreamSocket();
await socket.ConnectAsync(serviceRfcomm.ConnectionHostName, serviceRfcomm.ConnectionServiceName, SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication);
DataWriter writer = new DataWriter(socket.OutputStream);
DataReader reader = new DataReader(socket.InputStream);

若要阅读,请使用以下内容:

代码语言:javascript
复制
await reader.LoadAsync(1);
byte b = reader.ReadByte();
Debug.WriteLine((char)b);

要编写,请使用以下内容:

代码语言:javascript
复制
writer.WriteString("MaM\r\n");
writer.StoreAsync();

字节将按原样传输,不需要附加协议或类似的协议。好好享受吧。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30892154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档