HarmonyOS 鸿蒙Next 星闪ssap客户端如何快速向服务端发送信息

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 星闪ssap客户端如何快速向服务端发送信息

大佬们,我想使用星闪ssap的writeproperty快速向服务端发送多个信息(间隔小于10ms),但实际发送过程中,如果间隔小于30ms的话就会有消息发送失败,有没有大佬遇到过,怎么解决?

4 回复
有木有可以复现问题的demo?不然不好分析

更多关于HarmonyOS 鸿蒙Next 星闪ssap客户端如何快速向服务端发送信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


有可以复现问题的demo

复现demo

page页面

import { ssap } from '@kit.NearLinkKit';
import NearLink from '../NearLink1/NearLink'

@Entry
@Component
struct Index {
  async aboutToAppear() {

    //初始化设备参数
    await NearLink.NL_init();
    console.log('客户端创建完成')

    NearLink.onPropertyChange(this.propertyChangeCallback);
  }

  /**字符串转化为Uint8Array*/
  public stringToUint8Array(str: string) {
    const buf = new ArrayBuffer(str.length); // 每个字符1字节
    const bufView = new Uint8Array(buf);
    for (let i = 0, strLen = str.length; i < strLen; i++) {
      bufView[i] = str.charCodeAt(i);
    }
    return bufView;
  }

  /**ArrayBuffer转化为字符串*/
  public ArrayBuffToString(buffer: ArrayBuffer) {
    let uint8Array = new Uint8Array(buffer);
    let stringValue = '';
    for (let i = 0; i < uint8Array.length; i++) {
      stringValue += String.fromCharCode(uint8Array[i]);
    }
    return stringValue;
  }



    /**服务端属性变化回调函数*/
  private propertyChangeCallback: (data: ssap.Property) => void = (data: ssap.Property) => {
    // console.log('服务端回调信息: ' + JSON.stringify(data) + ' value: ' + NearLink.ArrayBuffToString(data.value));
    let uint8Array = new Uint8Array(data.value); // 将ArrayBuffer转换为Uint8Array
    console.log('服务端回调信息 value:');
    for (let i = 0; i < uint8Array.length; i++) {
      console.log(`Element at ${i}: ${uint8Array[i]}`);
    }
  }

  build() {
    Column({ space: 20 }) {
      Column({ space: 15 }) {
        Button('连接设备')
          .onClick(() => {
            // NearLink.keepALive(1);
            let i = 0;
            let interId = setInterval(() => {
              if (i == 4) {
                clearInterval(interId);
              }
              NearLink.keepALive(i);
              i++;
            }, 1000)
          })
        Button('下发时间')
          .onClick(() => {
            let seconds = [2000,4000,6000,8000];
            let i = 0;
            let interId = setInterval(() => {
              if (i >= 4) {
                clearInterval(interId);
              } else {
                console.log('下发时间 设备' + i);
                NearLink.sendTimer(i, seconds[i])
                i++;
              }
            }, 200)
          })
        Button('起跑')
          .onClick(() => {
            let i = 0;
            let interId = setInterval(() => {
              if (i == 4) {
                clearInterval(interId);
              }
              NearLink.startTimer(i)
              i++;
            }, 30)
            for (let i = 0; i < 4; i++) {
              console.log('' + NearLink.startTimer(i));
            }
          })
      }
      .width('90%')
      .width('50%')

      // .justifyContent(FlexAlign.SpaceAround)
    }
  }
}

在HarmonyOS鸿蒙Next中,星闪(XianShan)ssap(Secure Simple Access Protocol)客户端向服务端发送信息,可以通过以下步骤实现:

  1. 初始化客户端:使用星闪ssap提供的API初始化客户端实例,包括设置必要的参数如服务端地址、端口等。

  2. 建立连接:通过客户端实例调用连接函数,尝试与服务端建立ssap连接。确保服务端已启动并监听在指定地址和端口。

  3. 构造信息:将要发送的信息按照ssap协议的要求进行打包,包括头部、数据部分等。

  4. 发送信息:利用客户端实例的发送函数,将构造好的信息包发送给服务端。确保信息包格式正确,避免传输错误。

  5. 处理响应:服务端接收到信息后,会按照协议返回响应。客户端需解析响应,根据响应内容执行后续操作。

  6. 关闭连接:信息发送完成且不再需要通信时,关闭ssap连接,释放相关资源。

示例代码(伪代码):

XianShanSSAPClient client;
client.Init(...);
client.Connect(...);
Message msg = ConstructMessage(...);
client.Send(msg);
Response resp = client.Receive();
client.Disconnect();

注意,实际开发中需参考星闪ssap的具体API文档进行实现。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部