Big就是Big 2023-10-26 16:24 采纳率: 0%
浏览 2

西门子台架checksum信号怎么配置发送?

西门子电机试验台架,想发送的报文里有个信号是checksum,需要如何配置让它不断发送并跳变,我目前的经验只会输出给定值。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-27 04:33
    关注

    【相关推荐】



    • 这篇博客: js 进制算法、大小端转换、校验等物联网算法组件中的 三、CheckSum算法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      export default {
      	// 以数组形式推送,数组中是十进制数
      	checksum(num) {
      		// 打印数组
      		console.log(num)
      		var sum = 0
      		// 十进制计算和是否大于255
      		for (var i = 0; i < num.length; i++) {
      			num[i] = parseInt(num[i])
      			sum = sum + num[i]
      		}
      		console.log(sum)
      		if (sum <= 255) {
      			console.log(scale.switch_sl(sum, 16, 2))
      			return scale.switch_sl(sum, 16, 2)
      		}
      		if (sum > 255) {
      			// 取反
      			console.log((sum).toString(2))
      			var a = (sum).toString(2) + ""
      			a = a.replace(new RegExp("0", ("gm")), "2")
      			a = a.replace(new RegExp("1", ("gm")), "0")
      			a = a.replace(new RegExp("2", ("gm")), "1")
      			console.log(a)
      			// 算法转10进制+1
      			var b = parseInt(a, 2) + 1
      			console.log(b)
      			var c = (b).toString(2)
      			console.log(c)
      			// 再判断下是否满8位数
      			if (c.length <= 8) {
      				var d = parseInt(c, 2)
      				console.log(d)
      				var m = scale.switch_sl(d, 16, 2)
      				console.log(m)
      				return m
      			}
      			if (c.length > 8) {
      				var f = c.slice(-8)
      				var e = parseInt(f, 2)
      				var n = scale.switch_sl(e, 16, 2)
      				console.log(n)
      				return n
      			}
      		}
      	},
      }
      
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月26日

悬赏问题

  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?
  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启