深圳湾 发表于 3 天前

      以下是借助MCU ID 配置iSerialNumber 的代码,希望能帮到有需要的朋友,之所以叫“借助”是因为在 MCU ID 中包含有超出规范的值,不能直接使用,需要进行排除,这段代码比较简单,可能无法保证序列号的唯一性,但能碰到相同的几率应该非常低,足够要求不高的一些应用场景了,以下代码经过了4、5个同款设备实验后没有发现问题(我只做了5个样品),序号都各不相同。

      另外推荐何老师的书“STC32位8051单片机原理及应用”,在解决问题的过程中,就是通过学习书中USB相关章节才找到解决方法的,书中对STC官方的USB代码讲得非常详细,要注意的是USB相关章节的内容是在线阅读的,只有购买正版图书才能看到

这段代码添加到这里:usb_req_stc.c --> usb_get_descriptor()函数 -->switch (Setup.wValueH) 的 case DESC_STRING --> switch (Setup.wValueL)的 case 3
(不知道为什么代码总是粘贴不全,只好贴图了,大家自己敲吧)

ercircle 发表于 前天 18:17

深圳湾 发表于 2025-8-31 23:47
以下是借助MCU ID 配置iSerialNumber 的代码,希望能帮到有需要的朋友,之所以叫“借助”是因为在...

楼主对序列号长度有限制吗?想到个能保证唯一性的办法,将原始ID转为hex格式表述的字符串即可。

深圳湾 发表于 前天 18:42

ercircle 发表于 2025-9-1 18:17
楼主对序列号长度有限制吗?想到个能保证唯一性的办法,将原始ID转为hex格式表述的字符串即可。
...

{:ciya:}我居然没想到,这个方法应该能行,回头我试试,长度不是问题,反正到了电脑上也是用用字符串格式存储的,我可以直接转成这样再发送:xx-xx-xx-xx-xx-xx-xx
页: 1 [2]
查看完整版本: 请教关于USB设备序号(iSerialNumber字段)的配置方法 | 已了解