首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java列表返回奇怪的值(字符串)

Java列表返回奇怪的值(字符串)
EN

Stack Overflow用户
提问于 2017-08-08 10:11:34
回答 1查看 147关注 0票数 0

我使用JSerial进行串行通信。JSerial提供了一种获取可用端口列表的方法。当im使用这个方法时,它返回COM端口,就像它应该是一个列表一样。但我在返回值方面有一些问题。如果我使用调试器--一切都很好--返回值看起来应该是"COM1"。但是当我运行这个项目时,返回值是某种程度上的妥协。输出类似于此耀110000-00൥帿阀COM16000-000൫帿耀fF1CE}

问题是,这些值与调试和运行时不同。

有人知道是什么导致的吗?

正确值

不正确值

EN

回答 1

Stack Overflow用户

发布于 2017-08-09 12:18:40

不是真正的答案,但无论如何都很有趣。

对我来说,这看起来更像是一个普遍的问题。无论是使用JNA图书馆还是Windows (在SerialPort.GetPortNames()返回不正确的端口名上都可以找到类似的东西)

使用普通JNA (用4.2.2和4.4.0版本进行测试)

代码语言:javascript
复制
Advapi32Util.registryGetValues(
        WinReg.HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM")
        .entrySet()
        .forEach(
                e -> System.out.printf(
                        "k: %s  v: %s%n",
                        e.getKey(),
                        e.getValue()
                )
        );

还返回带有一些垃圾字符的COM端口名。在几次处决之间,这种情况甚至发生了变化。

代码语言:javascript
复制
// an execution
k: CcmPort1  v: COM1ꭲ峔K谀

// another execution
k: CcmPort1  v: COM1ǖ㭪谀

为什么在IDE中调试模式是可以的呢?如果总是这样,那么路径中可能还有其他库/DLL,或者您总是幸运的。

顺便说一下, Powershell检索正确的名称。

代码语言:javascript
复制
[System.IO.Ports.SerialPort]::getportnames()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45565511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档