- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到了一个 APC SMC1000 UPS 设备,我想用它为基于微 Controller 的应用程序供电,并在关闭前执行一些任务。 UPS 有串口和 USB 两种端口,但是串口协议(protocol)好像没有文档。由于 USB 主机不在 uC 上,我想使用串行端口与它通信。
在使用 Python 脚本进行了一些探索后,UPS 开始说话,我可以识别出一些信息。然而,最终它似乎在继续之前期待一条消息,所以我想弄清楚如何做到这一点。
UPS 总是发送 19 个字节的消息,其中第一个字节是 ID,接下来是 16 个字节的数据,然后大概是一些未知校验和或 CRC 的 2 个字节。[ Msg ID | 16 byte data | 2 byte checksum? ]
如何导出CRC或校验和类型?我已经尝试了一些方案,最终在 ID 为 7f 的以下消息中使用了 reveng ,但不幸的是:
0x7f 0000000019c90013004e000001790000 3190
0x7f 0000000019ca0013004e000001790000 259b
0x7f 0000000019cb0013004e000001790000 19a6
0x7f 0000000019cc0013004e000001790000 0db1
0x7f 0000000019cd0013004e000001790000 01bc
0x7f 0000000019ce0013004e000001790000 f4c7
0x7f 0000000019cf0013004e000001790000 e8d2
0x7f 0000000019d00013004e000001790000 dcdd
0x7f 0000000019d10013004e000001790000 d0e8
0x7f 0000000019d20013004e000001790000 c4f3
0x7f 0000000019d30013004e000001790000 b8fe
0x7f 0000000019d40013004e000001790000 ac0e
0x7f 0000000019d50013004e000001790000 a015
0x7f 000000001c67001500530000017c0000 5eb8
最佳答案
我花了太多时间在这上面。但是,嘿,一旦你掉进了兔子洞......
感谢@rcgldr,我避免了寻找 CRC 检查,而是决定查找各种简单的校验和。最终我得到了一个 Python 脚本,它对上面的示例运行各种校验和,并将其与最后 2 个字节进行比较。直到我将第一个字节添加到校验和中才成功,给了我一个 Fletcher 的 8 位校验和。
我使用了来自 https://github.com/njaladan/hashpy 的代码为了这。
7f0000000019c90013004e000001790000 0x3190 PASS
7f0000000019cb0013004e000001790000 0x19a6 PASS
7f0000000019cc0013004e000001790000 0xdb1 PASS
7f0000000019cd0013004e000001790000 0x1bc PASS
7f0000000019ce0013004e000001790000 0xf4c7 PASS
7f0000000019cf0013004e000001790000 0xe8d2 PASS
7f0000000019d00013004e000001790000 0xdcdd PASS
7f0000000019d10013004e000001790000 0xd0e8 PASS
7f0000000019d20013004e000001790000 0xc4f3 PASS
7f0000000019d30013004e000001790000 0xb8fe PASS
7f0000000019d40013004e000001790000 0xac0a FAIL
7f0000000019d50013004e000001790000 0xa015 PASS
7f000000001c67001500530000017c0000 0x5eb8 PASS
关于reverse-engineering - 逆向工程UPS串行协议(protocol): Checksum/CRC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675120/
如何在不使用Array.Reverse()方法的情况下反转数组(在C#中)?。例如,。应该会导致。这是我的面试任务。
我有一个内容,我希望它们以倒序排列和换行倒序排列,但顺序相反。这是代码: .a { height: 200px; width: 520px; padding: 5px 5px 5px 10
很多时候,我看到在列表头部运行的函数,例如: trimHead ('\n':xs) = xs trimHead xs = xs 然后我看到了定义: trimTail = reverse
如果 Reverse :: [k] -> [k]是一个类型族,那么 Haskell 无法判断 (Reverse (Reverse xs)) ~ xs .有没有办法让类型系统知道这一点而无需任何运行时成
我有一个单维项目数组,其声明和初始化为: string[] SubDirectorylist = Directory.GetDirectories(TargetDirectory); 我想反转成员并发
这是代码 >>> a=[1,3,2] >>> a [1, 3, 2] >>> a= 3,1,2 >>> a (3, 1, 2) >>> sorted(a) [1, 2, 3] >>> sorted(a
我对以下问题感兴趣:Collections.reverse() 与 Lists.reverse() 哪个更快? 最佳答案 他们做不同的事情。 Collections.reverse 采用可变列表并反转
我对以下问题感兴趣:Collections.reverse() 与 Lists.reverse() 哪个更快? 最佳答案 他们做不同的事情。 Collections.reverse 采用可变列表并反转
我今天在我的 Django 控制台中尝试了这个,我得到了两个不同的结果。我认为 list.reverse() 会反转列表(即第一个对象变成最后一个,依此类推)[1]。然而,情况似乎并非如此。 >>>
这个小小的 jQuery 插件: jQuery.fn.reverse = [].reverse; 它是如何工作的?对象绑定(bind)在哪里 - 反转函数的数组原型(prototype)?我真的不明白
大概都是 mylist.reverse()和 list.reverse(mylist)最终执行 reverse_slice 在 listobject.c通过 list_reverse_impl 或 P
您好,我在添加 django-reversion 和 django-reversion-compare 模块时遇到了一些问题。 我创建了新项目,我想使用 django-reversion 跟踪 use
我有以下观点: def default_new (request): if request.method == "POST": post = EquipmentForm(req
我对 List.Reverse() 有疑问和 Reverse(this IEnumerable source) .查看代码: // Part 1 List list = new List {
我需要首先对字典进行排序,值 reverse=True,对于重复值,按键排序 reverse=False 到目前为止,我有这个 dict = [('B', 3), ('A', 2), ('A', 1)
我有一个字典,其中包含要排序的字符串键和 int 值。我希望它首先按递减值编号排序,然后按字母顺序排序。 例如,如果您有一个包含以下内容的字典: my_dict = {'zebra':1, 'the'
我是编程新手。我正在通过第 9 channel 的 Bob Tabors 视频学习 c#。 你能解释一下为什么我们不能做这样的事情吗: string mijnVoornaam = "Remolino"
这个问题在这里已经有了答案: Why there is two completely different version of Reverse for List and IEnumerable? (
有什么区别 mylist = reversed(sorted(mylist)) 对 mylist = sorted(mylist, reverse=True) 为什么要使用一个而不是另一个? 如何在多
我的问题涉及将新方法添加到现有String 构造函数 的应用程序。在 Stoyan Stefanov 的 Object Oriented Program for Javascript 中,有一个使用
我是一名优秀的程序员,十分优秀!