【问题标题】:How to get bluetooth port indentifier from bluetooth printer如何从蓝牙打印机获取蓝牙端口标识符
【发布时间】:2016-02-21 03:09:46
【问题描述】:

我正在开发一个蓝牙打印应用程序,在其中我发现所有都在蓝牙附近。现在我必须检查特定的蓝牙是三星打印机或斑马打印机或任何其他类型的打印机。

因为我们可以通过使用以下代码在 iOS 中使用 ExternalAccessory.framework 获取蓝牙标识符。

ExternalAccessory.framework
  if ([accessory.protocolStrings indexOfObject:@"com.zebra.rawport"] != NSNotFound) {
      discoveredPrinter.device_type = @(DeviceTypeZebra);
}

我在 Android 中搜索了相同的方式,但我知道在 android 中我们无法通过蓝牙实现这种事情。请让我知道是否有人在确定蓝牙打印机类型之前解决了同样的问题。

【问题讨论】:

    标签: android printing bluetooth android-bluetooth bluetooth-printing


    【解决方案1】:

    只是提示可能是您的问题可以通过此解决

    不同于安卓的iOS,你可以找到蓝牙设备的MAC地址

    因为每个供应商都被分配了一个特定的 MAC 地址前缀

    所以你可能会使用这个过滤器

    什么是 MAC 地址?什么是 OUI?

    参考:MAC address Lookup

    MAC 地址是网络接口的唯一标识符。它是一个 48 位数字(12 个十六进制字符)。它们可以用以下任何一种格式编写:

    MM:MM:MM:SS:SS:SS
    MM-MM-MM-SS-SS-SS
    

    OUI {Organizationally Unique Identifier} 是一个 24 位数字,用于唯一标识供应商或制造商。它们由 IEEE 购买和分配。 OUI 基本上是MAC 地址的前三个八位字节。例如,这些是 OUI 的示例:

    00:00:0A -- this is owned by Omron
    00-0D-4B -- this is owned by Roku, LLC
    

    【讨论】:

      【解决方案2】:

      您可以使用BluetoothClass.Device.MajorBluetoothClass.Device 来识别设备类型。对于打印机,它将是:

      if (btDevice.bluetoothClass.majorDeviceClass == BluetoothClass.Device.Major.IMAGING 
          && btDevice.bluetoothClass.deviceClass == 1664) 
      {
          // it's a printer
      

      从那时起,您可以尝试爱普生的 ESC codes事实上的标准)或制造商的 SDK(如 Zebra 的)。

      至于 OUI,它们由 IEEE 定义,但您可以通过更多 sanitized 的形式获得它们。

      Source 为打印机类代码,荷兰语。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        相关资源
        最近更新 更多