由于串口号是系统分配的,更换接口串口号会变动,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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥60 基于MATLAB的TAOD算法
- ¥15 Groimp使用疑问
- ¥15 MDK–ARM里一直找不到调试器
- ¥15 oracle中sql查询问题
- ¥15 vue使用gojs3.0版本,在nodeDataArray中的iconSrc使用gif本地路径,展示出来后动画是静态的,不是动态的
- ¥100 代写个MATLAB代码,有偿
- ¥15 ansys electronics 2021 R1安装报错,错误代码2,如图
- ¥15 Dev-c++打字不出现中文,但出现日文
- ¥30 搭建面包板由NE555N和SN74LS90N组成的计时电路时出了问题
- ¥15 无源定位系统的时差估计误差标准差