使用jssc获取SerialPort的设备描述符

时间:2015-11-17 10:58:55

标签: java serial-port jssc

如何使用jssc ( java-simple-serial-connector)获取SerialPort的设备描述符?

getPortName()方法提供端口名称(e.g. COM2),但描述符会更有帮助。

如果必须修补此开源API以获取设备描述符如何才能完成?

3 个答案:

答案 0 :(得分:1)

查看gohai/java-simple-serial-connectorSerialPortList类有一个getPortProperties(String portName)方法来获取端口属性,遗憾的是还没有为windows实现,但很容易做一个实现并再次重新编译让它发挥作用。

我希望这会有所帮助。

答案 1 :(得分:1)

在zamanillo的帮助下,我现在可以自己回答。 使用jssc 2.8.0无法做到这一点。

正在进行扩展jssc的行动,但我不知道发布时间表,也不知道如何解决这个问题。 扩展名是方法 + (SMError *)sdkServerErrorFromCode:(NSInteger)statusCode errorObject:(NSError *) error; + (SMError *)sdkClientErrorFromCode:(NSInteger)statusCode errorObject:(NSError *) error; 适用于linux和mac的jssc 2.8.0的修改版本中提供了实现。 Windows实现更难(找到)。

以下是从https://github.com/gohai/java-simple-serial-connector/blob/processing/src/cpp/_nix_based/jssc.cpp

获取的linux和mac的代码

SerialPortList->getPortProperties(String portName)

对于Windows,我只在处理自定义dll的处理中找到了解决方案。

答案 2 :(得分:0)

设备描述符是描述符树的根,包含基本设备信息。唯一编号idVendor和idProduct标识连接的设备。 Windows操作系统使用这些数字来确定要加载的设备驱动程序。

idVendor是分配给每个生产基于USB的设备的公司的号码。 USB实施者论坛负责管理供应商ID的分配。

idProduct是另一个16位字段,其中包含制造商为识别特定产品而分​​配的编号。

来自jantje的问题,

  

我需要的是Windows 10在连接中显示的名称   设备

Ans:打开"Settings app"并单击“设备”。单击“设备”将打开一个选项卡,您可以在其中调整所有打印机,连接设备,蓝牙设备,鼠标和设备的设置。触摸板,键入设置和自动播放设置。此连接设备选项卡显示连接到PC的硬件。 点击添加设备,您的电脑将自动扫描已连接的设备。蓝牙选项卡很简单,只需简单设置即可通过蓝牙将设备连接到PC。单击蓝牙按钮,设备将自动开始扫描该范围内的任何蓝牙设备。

如果显示设备存在任何问题或无法使用,则我们需要以下作业。

  1. 扫描硬件和设备以找出驱动程序问题。
  2. 修复损坏,损坏或不兼容的蓝牙驱动程序。
  3. 更新至适用于Windows 10的最新蓝牙驱动程序。
  4. 在Windows 10中下载并安装最匹配的驱动程序。
  5. 顶部2.删除并添加蓝牙设备

    页首3.允许蓝牙设备连接到此计算机

    无法通过蓝牙设备连接到计算机?确保您已允许蓝牙设备连接到您的计算机。请尝试以下步骤: 1.转到“控制面板”。单击“硬件和声音”和“蓝牙设备”。 2.单击“选项”选项卡。 3.确保选中“允许蓝牙设备连接到此计算机”复选框。

    如何将蓝牙设备连接到Windows 10计算机?

    连接支持蓝牙功能的手机:

    1. 转到“开始”按钮,然后选择“设置”,“设备”和 “蓝牙”。点击“添加”。
    2. 或者,转到“控制面板”,然后单击“硬件和声音” “蓝牙设备”。点击“添加”。
    3. 资源链接:

      1. Top 3 Ways to Fix Bluetooth Not Available after Windows 10 Update Issue
      2. http://windows.microsoft.com/en-gb/windows-10/getstarted-connect-to-bluetooth-devices
      3. Fix network connection issues

        有7种方法可以解决网络连接问题:

        1. 更新网络适配器驱动程序
        2. 回滚网络适配器驱动程序
        3. 运行网络问题排查工具,然后运行网络命令
        4. 暂时关闭防火墙
        5. 暂时关闭所有防病毒或恶意软件防护软件
        6. 卸载网络适配器驱动程序并重新启动
        7. 使用netcfg -d命令重新安装网络设备
        8. UPDATE:

            

          您的答案如何链接到jssc?

          我正在检查你的问题。我在Windows 7中得到了它可以正常工作,在Windows 10中,存在一些与硬件相关的问题导致问题。

          开发人员正在研究这个领域。但它尚未确定。 issue#63issue#85会澄清你。

          /**
           * Get serial port names in Windows
           *
           * @since 2.3.0
           */
          private static String[] getWindowsPortNames(Pattern pattern, Comparator<String> comparator) {
              String[] portNames = serialInterface.getSerialPortNames();
              if(portNames == null){
                  return new String[]{};
              }
              TreeSet<String> ports = new TreeSet<String>(comparator);
              for(String portName : portNames){
                  if(pattern.matcher(portName).find()){
                      ports.add(portName);
                  }
              }
              return ports.toArray(new String[ports.size()]);
          }
          

          我明白了,他们正在为各种操作系统使用一些模式。

          OS_LINUX: Pattern.compile("(ttyS|ttyUSB|ttyACM|ttyAMA|rfcomm|ttyO)[0-9]{1,3}"); 
          
          OS_SOLARIS: Pattern.compile("[0-9]*|[a-z]*");
          
          OS_MAC_OS_X: Pattern.compile("tty.(serial|usbserial|usbmodem).*"); 
          
          OS_WINDOWS: Pattern.compile("");
          

          <强>建议: 只使用官方和最晚的司机。

          jSSC-2.8.0发布版本(2014年1月24日)

            

          修复:重要!修复了端口处理潜在泄漏的问题。

               

          此版本包含Windows的本机库(x86,x86-64),Linux(x86,   x86-64,ARM soft&amp;硬浮动),Solaris(x86,x86-64),Mac OS X(x86,   x86-64,PPC,PPC64)。所有本机库都包含在jssc.jar文件中   您不需要手动管理本机库。

          资源链接:

          1. https://github.com/tcr/node-jssc/blob/master/jSSC-2.6.0-Release/src/src/jssc/SerialPortList.java