2016-12-08 6 views
2

derzeit arbeite ich an einem Projekt für die Universität, wo ich ein Programm erstellen muss, das die Feuchtigkeit in einem Terrarium steuert. Zu diesem Zweck habe ich ein Hygrometer.Lesen von Daten vom USB Port

Zuerst muss das Programm die Rohdaten vom Hygrometer importieren, aber ich habe keine Ahnung, wie es funktioniert. Die Dokumentation sagt, es gibt eine USB-Schnittstelle dafür, aber ich kann nur die Art finden, wie man die rohen Daten analysiert. Ich schrieb auch eine E-Mail an die Firma, die dieses Hygrometer verkauft. Sie sagten, dass es eine externe Software gibt, die mit diesen Daten importiert und handhabt. Ich darf jedoch keine externe Software verwenden. Deshalb bin ich gezwungen, die Rohdaten direkt vom USB Port zu lesen. Ich habe versucht, mit usb4java zu arbeiten, aber ich konnte nur alle angeschlossenen USB-Geräte finden. Ich habe keine Ahnung, wie es weitergeht. Bitte helfen Sie mir documentation documentation

-Code unten

public class DumpDevices 
{ 
/** 
* Dumps the specified USB device to stdout. 
* 
* @param device 
*   The USB device to dump. 
*/ 


private static void dumpDevice(final UsbDevice device) 
{ 
    // Dump information about the device itself 
    System.out.println(device); 
    final UsbPort port = device.getParentUsbPort(); 
    if (port != null) 
    { 
     System.out.println("Connected to port: " + port.getPortNumber()); 
     System.out.println("Parent: " + port.getUsbHub()); 
    } 

    // Dump device descriptor 
    System.out.println(device.getUsbDeviceDescriptor()); 

    // Process all configurations 
    for (UsbConfiguration configuration: (List<UsbConfiguration>) device 
     .getUsbConfigurations()) 
    { 
     // Dump configuration descriptor 
     System.out.println(configuration.getUsbConfigurationDescriptor()); 

     // Process all interfaces 
     for (UsbInterface iface: (List<UsbInterface>) configuration 
      .getUsbInterfaces()) 
     { 
      // Dump the interface descriptor 
      System.out.println(iface.getUsbInterfaceDescriptor()); 

      // Process all endpoints 
      for (UsbEndpoint endpoint: (List<UsbEndpoint>) iface 
       .getUsbEndpoints()) 
      { 
       // Dump the endpoint descriptor 
       System.out.println(endpoint.getUsbEndpointDescriptor()); 
      } 
     } 
    } 

    System.out.println(); 

    // Dump child devices if device is a hub 
    if (device.isUsbHub()) 
    { 
     final UsbHub hub = (UsbHub) device; 
     for (UsbDevice child: (List<UsbDevice>) hub.getAttachedUsbDevices()) 
     { 
      dumpDevice(child); 
     } 
     System.out.println(hub); 
    } 
} 


/** 
* Main method. 
* 
* @param args 
*   Command-line arguments (Ignored) 
* @throws UsbException 
*    When an USB error was reported which wasn't handled by this 
*    program itself. 
*/ 
public static void main(final String[] args) throws UsbException 
{ 
    // Get the USB services and dump information about them 
    final UsbServices services = UsbHostManager.getUsbServices(); 
    System.out.println("USB Service Implementation: " 
     + services.getImpDescription()); 
    System.out.println("Implementation version: " 
     + services.getImpVersion()); 
    System.out.println("Service API version: " + services.getApiVersion()); 
    System.out.println(); 

    // Dump the root USB hub 
    dumpDevice(services.getRootUsbHub()); 
} 
+2

Sie müssen die Dokumentation des Sensors sehen. Es sollte eine Art Treiber- oder SDK-Beschreibung geben. Als du Kontakt hattest - hast du ihnen gesagt, dass es für den pädagogischen Gebrauch ist? Könnte einen Unterschied in der Lizenzpolitik machen. – Fildor

+0

Ja, ich sagte ihm, es ist für den Bildungsbereich. Aber am Ende hat er mir die Dokumentation noch einmal geschickt. Ich werde einige Bilder von der Dokumentation hinzufügen, wenn ich zu Hause bin. – Xinren

+0

Aus den Dokumenten scheint es so oft, sie tun RS232-Emulation. Sie müssen sich also mit einem virtuellen COM-Port verbinden. Dann können Sie die Daten wie auf den Seiten 23 und folgende beschrieben auslesen. – Fildor

Antwort

0

Ich denke usb4java sehr gut, aber sehr komplex. Sie könnten das Lesen von Daten von einem USB-Port erreichen sehr leicht mit jssc

Beispiel für das Lesen von Daten von einem USB:

SerialPort serialPort = new SerialPort("/dev/tty.usbmodem1435"); 
serialPort.openPort();//Open serial port 
serialPort.setParams(4800, 8, 1, 0);//Set params. 
while(true) { 
    byte[] buffer = serialPort.readBytes(10); 
    if(buffer!=null) { 
     for(byte b:buffer) { 
      System.out.print(b); 
     } 
    } 
} 

Beachten Sie, dass ‚/dev/tty.usbmodem1435‘ ist nur ein Beispiel Name, sollten Sie die Verwendung Portname, an dem Sie interessiert sind.

Ich hoffe, es hilft.

Verwandte Themen