HarmonyOS 是否有蓝牙连接打印机的参考示例?

如题:HarmonyOS 是否有蓝牙连接打印机的参考示例?

阅读 560
1 个回答

示例参考:

import connection from '@ohos.bluetooth.connection';
import { BusinessError } from '@ohos.base';
import { promptAction } from '@kit.ArkUI';
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
import common from '@ohos.app.ability.common';

interface Device {
  name?: string
  deviceId?: string
}

@Entry
@Component
struct Index {
  private context = getContext(this) as common.UIAbilityContext
  @State findList: Device[] = []

  aboutToAppear(): void {
    const permissions: Array<Permissions> = ['ohos.permission.ACCESS_BLUETOOTH'];
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(this.context, permissions).then((data) => {

      // 授权成功
    }).catch((err: BusinessError) => {
      console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
  }

  build() {
    Flex({ direction: FlexDirection.Column }) {
      Row() {
        Button("扫描蓝牙").onClick(() => {
          // 开启扫描
          try {
            connection.startBluetoothDiscovery();
            console.info('startBleScan success')
            promptAction.showToast({
              message: "已打开"
            })
          } catch (err) {
            promptAction.showToast({
              message: "蓝牙开关未打开"
            })
          }

          // 接收扫描结果
          connection.on('bluetoothDeviceFind', (data: string[]) => {
            console.log('data: ' + JSON.stringify(data) + connection.getRemoteDeviceName(data[0]))
            if (!this.findList.find((item: Device) => item.deviceId === data[0])) {
              this.findList.push({
                name: connection.getRemoteDeviceName(data[0]),
                deviceId: data[0]
              })
            }
          });
        })

        Button("停止扫描").onClick(() => {
          try {
            // 关闭扫描
            connection.stopBluetoothDiscovery();
            console.info('stopBleScan success');
            promptAction.showToast({
              message: "停止扫描"
            })
          } catch (err) {
            promptAction.showToast({
              message: "蓝牙已关闭"
            })
          }
        })

        Button("清空").onClick(() => {
          this.findList = []
        })
      }

      List() {
        ForEach(this.findList, (item: Device) => {
          ListItem() {
            Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) {
              Column() {
                Text(`设备名称:${item?.name}`)
                Text(`设备id:${item?.deviceId}`).fontColor("#ffcbcbcb").fontSize(12)
              }
              .alignItems(HorizontalAlign.Start)

              Row({ space: 5 }) {
                Button("链接").width(60).height(20).fontSize(12).onClick(() => {
                  try {
                    // 实际的地址可由扫描流程获取
                    connection.pairDevice(item.deviceId, () => {
                      promptAction.showToast({
                        message: "配对成功"
                      })
                    });
                  } catch (err) {
                    console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' +
                    (err as BusinessError).message);
                  }
                })
              }
            }
            .height(50)
            .backgroundColor("#fff")
            .width("100%")
            .borderRadius(10)
            .padding(6)
          }.padding(4)
        })
      }
      .height(200)
      .width("100%")
      .flexGrow(1)
      .flexShrink(1)
      .flexBasis(1)
    }.padding(10).width('100%').height('100%').backgroundColor("#ffcdcdcd")
  }
}

1、connection.startBluetoothDiscovery是经典蓝牙扫描,ble.startBLEScan是低功耗蓝牙扫描。ble的startBLEScan是只能扫描到ble设备,如果想要扫描到系统设置中的所有设备,需要去调用connection.startbluetoothdiscovery。

2、可参考官网开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/gatt-development-guide-V5

使用CONNECTION连接模块和外设配对、连接成功,再使用SOCKET模块继续进行后续的数据传输等功能。

数据传输参考官网开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/spp-development-guide-V5

相关参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/connectivity-kit-intro-V5\#ZH-CN\_TOPIC\_0000001930755869\_\_%E8%93%9D%E7%89%99%E7%AE%80%E4%BB%8B

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进