首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用应用程序与医疗设备的蓝牙连接- UUID和CODFilter

通用应用程序与医疗设备的蓝牙连接- UUID和CODFilter
EN

Stack Overflow用户
提问于 2014-07-10 10:22:49
回答 2查看 5.1K关注 0票数 1

我正在Windows8.1和Windows 8.1平台上实现一个通用应用程序,它应该通过蓝牙技术连接到规模或血压监控器等设备。不幸的是,我在发现过程中有困难,因此我没有机会配对和连接到设备上。

我已经找到了关于这个问题的线程,但不幸的是,它与Android有关。

从上述职位:

描述医疗设备的,该设备使用服务发现协议()和串口配置文件(SPP)。它开始一个查询过程,以发现(最多10个)周围的接入点与匹配的COD过滤器和服务名称。然后,通过检查PIN,依次与接入点建立连接(使用Page过程)。一旦PIN被匹配,数据就被上传。在上传数据时,设备等待确认。装饰是主人,并发起沟通。

我也从Microsoft蓝牙Rfcomm示例开始。

我的问题:

  1. 我对我的标准UUID编号00001101-0000-1000-8000-00805F9B34FB很挑剔。在这种情况下,是否适当呢? //服务名称SDP属性的Id受保护的UInt16 SdpServiceNameAttributeId = 0x100;//服务名称SDP属性的SDP类型。// SDP属性中的第一个字节将SDP属性类型编码如下: // -属性类型大小为最小有效3位,// - SDP属性值为最重要的5位。受保护的const字节SdpServiceNameAttributeType = (4 << 3) << 5;公共异步任务开始(){ try { if (rfcommProvider == null) rfcommProvider =等待RfcommServiceProvider.CreateAsync ( rfcommProvider != null) { if (socketListener = null) { socketListener.Dispose();socketListener = null;} //为该服务创建一个侦听器,并开始侦听socketListener.BindServiceNameAsync(rfcommProvider.ServiceId.AsString(),= Name ();socketListener.ConnectionReceived += OnConnectionReceived;等待StreamSocketListener //设置SDP属性并启动蓝牙广告DataWriter sdpWriter =Name();//写入服务名称属性。sdpWriter.WriteByte(SdpServiceNameAttributeType);// UTF-8编码的服务名称SDP属性的长度。sdpWriter.WriteByte((byte)BluetoothServiceDisplayName.Length);// UTF-8编码的服务名称值。sdpWriter.WriteString(BluetoothServiceDisplayName);//在RFCOMM服务提供者上设置sdpWriter.UnicodeEncoding属性。如果(rfcommProvider.SdpRawAttributes.ContainsKey(SdpServiceNameAttributeId)) rfcommProvider.SdpRawAttributes.Remove(SdpServiceNameAttributeId);rfcommProvider.SdpRawAttributes.Add(SdpServiceNameAttributeId,sdpWriter.DetachBuffer();//启动蓝牙广告//SetState(BluetoothServerState.Started);rfcommProvider.StartAdvertising(socketListener);} System.Diagnostics.Debug.WriteLine( "ERROR:“+ e.Message);}}
  2. 我不确定是否有更好的方法来设置服务名称?也许我做错了?我觉得这是个主要问题。
  3. COD过滤器怎么办(在规范中有一个说明,它应该等于00000000才能正确地通信?)有什么方法可以使用RfcommServiceProvider来设置它吗?也许我也应该手动设置PIN号码,或者如果它只是在配对过程中需要的话?
  4. 我注意到,在中,只支持Windows平台。也可以为WP?设备实现服务器功能,从医疗设备接收数据的设备应该是一个从服务器。

我也读过关贸总协定协议,但它并没有为我需要的所有设备提供配置文件。

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-21 20:37:26

解决我的问题的关键是在app清单文件中声明串口连接,而不是通过指定的UUID号声明连接:

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

并使用RfcommServiceId.SerialPort作为RfcommServiceProvider的参数。

票数 1
EN

Stack Overflow用户

发布于 2014-07-29 17:05:02

我在一艘非常类似的船上;我试图用WinJS/HTML连接到一个医疗设备,用于RT设备,我发现这篇文章非常好:

http://blogs.windows.com/windows/b/buildingapps/archive/2014/05/07/talking-to-robots-or-other-devices-using-bluetooth-from-a-windows-runtime-app.aspx

看起来您使用的是c#,但是您可以从本文中的javascript中获得这个想法。创建一个查找串行类型设备的选择器,然后查询所有这些设备的列表。下面是本文中的一些javascript来说明这个想法

变量选择器= Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService.getDeviceSelector( Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId.serialPort);

var设备= Windows.Devices.Enumeration.DeviceInformation.findAllAsync(selector,null);

var设备=设备;

返回Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService.fromIdAsync(device.id);

我仍然在解析从设备获得的字节,但是使用上面的代码,WinRT请求连接到设备,而我的设备开始流数据,这一直是最大的障碍。祝好运!

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

https://stackoverflow.com/questions/24674084

复制
相关文章

相似问题

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