node - serialport串口通讯 发送Hex

该文章介绍了如何在Node.js中利用node-serialport模块进行串口通讯,特别是涉及到使用ADD8算法对Hex字符串进行加密的过程。通过编写代码示例,展示了数据处理函数handlerHex、handlerHexDisplay以及RoofADD8,用于构建和校验Hex命令。
摘要由CSDN通过智能技术生成

文章目录


前言

本文是讲诉 node - serialport串口通讯 发送使用add8加密Hex

一、代码

	    var encoding = 'hex';
	    var cmd="";//hex 字符串
	    //处理hex字符串
	  	var pushData = this.handlerHex(cmd); //不使用ADD8加密
        var pushData = this.handlerHex( this.RoofADD8(cmd));//使用ADD8加密
        this.port.write(pushData, encoding, function (err, result) {
        })

	
  
 handlerHex(data) {
      let _ts = this;
      let dataStr = '';
      if (data.trim().indexOf(' ') > -1) {
        let hexArr = data.trim().split(' ');
        for (let i in hexArr) {
          if (hexArr[i].length == 1) {
            dataStr += '0';
          }
          dataStr += hexArr[i];
        }
      } else {
        dataStr = _ts.handlerHexDisplay(data.trim());
      }
      return dataStr.replace(/\s+/g, '');
    },
  handlerHexDisplay(data) {
      let dataStr = '';
      let isOdd = true;
      if (data.length % 2 == 0) {
        isOdd = false;
      }
      for (let i = 0, len = data.length; i < len; i++) {
        // 自动补零
        if (isOdd && len - i == 1) {
          dataStr += '0';
        }
        // 字符拼接
        dataStr += data.charAt(i);
        // 每两个字符加一个空格
        if (i % 2 > 0 || len - i == 1) {
          dataStr += ' ';
        }
      }
      return dataStr;
    },
   RoofADD8(cmd){
     //校验位截取
      var roofstr= cmd.compileCmd.substr(校验位开始, 校验位结束)
	//字符串转成Bytes格式
      var roofstr111=this.hexToBytes(roofstr)
   //十进制相加
      var sum = roofstr111.reduce(function(acc, cur) {
        return acc + cur;
      }, 0);
     //Bytes最大只能存256,累加的值要减去
      while(sum>256){
        sum=sum-256
         
      }
      //十进制转hex
      var hexString = sum.toString(16);
      //插入校验位
      var routerEnd= 校验位开始前的字符串
      var routerStartt= 校验位结束后的字符串
      return routerStartt+hexString+routerEnd
    },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值