发布于 2017-08-09 12:18:40
不是真正的答案,但无论如何都很有趣。
对我来说,这看起来更像是一个普遍的问题。无论是使用JNA图书馆还是Windows (在SerialPort.GetPortNames()返回不正确的端口名上都可以找到类似的东西)
使用普通JNA (用4.2.2和4.4.0版本进行测试)
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端口名。在几次处决之间,这种情况甚至发生了变化。
// an execution
k: CcmPort1 v: COM1ꭲ峔K谀
// another execution
k: CcmPort1 v: COM1ǖ㭪谀为什么在IDE中调试模式是可以的呢?如果总是这样,那么路径中可能还有其他库/DLL,或者您总是幸运的。
顺便说一下, Powershell检索正确的名称。
[System.IO.Ports.SerialPort]::getportnames()https://stackoverflow.com/questions/45565511
复制相似问题