由于串口号是系统分配的,更换接口串口号会变动,C++是可以获取串口驱动供应商的,java怎么获取?
2条回答 默认 最新
- threenewbee 2018-01-19 15:37关注
https://stackoverflow.com/questions/6362775/getting-device-driver-information-related-to-a-com-port
Example String keyPath = "SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_067b&Pid_2303\\"; String device1 = "5&75451e6&0&1"; System.out.println("First COM device: " + getComNumber(keyPath + device1)); Code import java.util.regex.Pattern; import java.util.regex.Matcher; // Given a registry key, attempts to get the 'FriendlyName' value // Returns null on failure. // public static String getFriendlyName(String registryKey) { if (registryKey == null || registryKey.isEmpty()) { throw new IllegalArgumentException("'registryKey' null or empty"); } try { int hkey = WinRegistry.HKEY_LOCAL_MACHINE; return WinRegistry.readString(hkey, registryKey, "FriendlyName"); } catch (Exception ex) { // catch-all: // readString() throws IllegalArg, IllegalAccess, InvocationTarget System.err.println(ex.getMessage()); return null; } } // Given a registry key, attempts to parse out the integer after // substring "COM" in the 'FriendlyName' value; returns -1 on failure. // public static int getComNumber(String registryKey) { String friendlyName = getFriendlyName(registryKey); if (friendlyName != null && friendlyName.indexOf("COM") >= 0) { String substr = friendlyName.substring(friendlyName.indexOf("COM")); Matcher matchInt = Pattern.compile("\\d+").matcher(substr); if (matchInt.find()) { return Integer.parseInt(matchInt.group()); } } return -1; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能