kinve 1 год назад
Родитель
Сommit
b4b6b88d3c
2 измененных файлов с 18 добавлено и 10 удалено
  1. 18 10
      client.js
  2. BIN
      dist/ble.exe

+ 18 - 10
client.js

@@ -47,13 +47,19 @@ function bin2String(array) {
 function calculateChecksum16bit(code) {
     let sum = 0;
     for (let i = 0; i < code.length; i++) {
-        sum += code[i]&0xff;
+        sum += (code[i])&0xff;
         // console.log("sum:"+ sum +",i:"+ code[i] );
     }
     // 将结果转换为16位二进制字符串
     return sum&0xffff;
 }
 
+function bufferToHex (buffer) {
+    return [...new Uint8Array (buffer)]
+        .map (b => b.toString (16).padStart (2, "0"))
+        .join (" ");
+}
+
 function stringToByteArray(str) {
     const encoder = new TextEncoder(); // 创建TextEncoder实例
     const bytes = encoder.encode(str); // 将字符串转换为字节序列
@@ -140,13 +146,14 @@ function pack_send(str) {
     console.log("封包前:"+str);
     
     body = str;
-    body = stringToByteArray(str);
-    data_len = body.length;
-    data_check = calculateChecksum16bit(body);
-    let headBuf = Buffer.from([0x59, 0x4C, '<', (data_len>>8)&0xff, (data_len>>0)&0xff, (data_check>>8)&0xff, (data_check>>0)&0xff]);
+    let data_len = body.length;
+    let data_check = calculateChecksum16bit(stringToByteArray(body));
+    // console.log("check:"+data_check);
+    let headBuf = "YL<" + Buffer.from([(data_len>>8)&0xff, (data_len>>0)&0xff, (data_check>>8)&0xff, (data_check>>0)&0xff]);
     let pack_date = headBuf+body
     ws.send(pack_date);   
-    console.log("封包后:"+pack_date);
+    datArray = stringToByteArray(pack_date);
+    console.log("封包后:"+bufferToHex(datArray));
 }
 
 function handler_recv(out){
@@ -176,7 +183,8 @@ function handler_recv(out){
 // 解包
 let RecvBuf = "";
 function unpack_recv(data) {
-    console.log("recv " + data.length +":"+ data);
+    datArray = stringToByteArray(data);
+    console.log("接收 " + data.length +": "+ bufferToHex(datArray));
     // data添加到全局RecvBuf
     if(RecvBuf == ""){
         RecvBuf = data;
@@ -233,9 +241,9 @@ function unpack_recv(data) {
     console.log("校验码成功" );
 
     //解析数据
-    let start = index+7;
-    let stop = index+7+data_len;
-    console.log("start:" + start  +", stop:"+ stop );
+    // let start = index+7;
+    // let stop = index+7+data_len;
+    // console.log("start:" + start  +", stop:"+ stop );
     let out = RecvBuf.slice(index+7,index+7+data_len);
 
     // 处理out数据