2016-08-31 5 views
0

Ich versuche, eine kleine Anwendung zum Lesen von BarCode mit Motorola MC3090 Symbol Gerät zu schreiben. Die Anwendung muss auf einem PC, nicht auf dem Gerät laufen und muss mit JAVA codiert sein.Import Barcode gescannt von Motorola Mobilgerät

Der Barcode wird mit DataWedge 3.3 auf dem Gerät gescannt.

Wenn ich WordPad auf dem Gerät verwende, werden auch Barcodes gescannt.

Jetzt ist das Problem, wie diese scared Barecode auf den PC übertragen werden.

ich diesen Code bereits testen, um zu wissen, ob der PC den Port des Gerätes gefunden:

CODE

import java.io.*; 
import java.util.*; 
import javax.comm.*; 

public class SimpleRead implements Runnable, SerialPortEventListener { 

    static CommPortIdentifier portId; 
    static Enumeration portList; 
    InputStream inputStream; 
    SerialPort serialPort; 
    Thread readThread; 

    public static void main(String[] args) { 
     boolean portFound = false; 
     String defaultPort = "COM1"; 

     if (args.length > 0) { 
      defaultPort = args[0]; 
     } 

     portList = CommPortIdentifier.getPortIdentifiers(); 

     while (portList.hasMoreElements()) { 
      System.out.println("port existed"); 
      portId = (CommPortIdentifier) portList.nextElement(); 
      if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { 
       if (portId.getName().equals(defaultPort)) { 
        System.out.println("Found port: " + defaultPort); 
        portFound = true; 
        SimpleRead reader = new SimpleRead(); 
       } 
      } 
     } 
     if (!portFound) { 
      System.out.println("port " + defaultPort + " not found."); 
     } 

    } 

    public SimpleRead() { 
     try { 
      serialPort = (SerialPort) portId.open("SimpleReadApp", 2000); 
     } catch (PortInUseException e) { 
     } 

     try { 
      inputStream = serialPort.getInputStream(); 
     } catch (IOException e) { 
     } 

     try { 
      serialPort.addEventListener(this); 
     } catch (TooManyListenersException e) { 
     } 

     serialPort.notifyOnDataAvailable(true); 

     try { 
      serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, 
        SerialPort.STOPBITS_1, 
        SerialPort.PARITY_NONE); 
     } catch (UnsupportedCommOperationException e) { 
     } 

     readThread = new Thread(this); 

     readThread.start(); 
    } 

    public void run() { 
     try { 
      Thread.sleep(20000); 
     } catch (InterruptedException e) { 
     } 
    } 

    public void serialEvent(SerialPortEvent event) { 
     switch (event.getEventType()) { 

      case SerialPortEvent.BI: 
      case SerialPortEvent.OE: 
      case SerialPortEvent.FE: 
      case SerialPortEvent.PE: 
      case SerialPortEvent.CD: 
      case SerialPortEvent.CTS: 
      case SerialPortEvent.DSR: 
      case SerialPortEvent.RI: 

      case SerialPortEvent.OUTPUT_BUFFER_EMPTY: 
       break; 

      case SerialPortEvent.DATA_AVAILABLE: 
       byte[] readBuffer = new byte[20]; 

       try { 
        while (inputStream.available() > 0) { 
         int numBytes = inputStream.read(readBuffer); 
         System.out.print("The Read Bytes from SerialPort are"); 
         System.out.write(readBuffer); 
         System.out.println(); 
        } 
        System.out.print(new String(readBuffer)); 
       } catch (IOException e) { 
       } 

       break; 
     } 
    } 

} 

OUTPUT

port COM1 not found. 

Problem Dies ist einer.

Ich versuche, eine weitere Art und Weise, ein direkter

CODE

public static void main(String[] args) { 
    String filePath = "??????????"; 
    readFile(filePath); 
} 

public static void readFile(String filePath){ 
    try { 
     Scanner scanner = new Scanner(new File(filePath)); 
     while (scanner.hasNextLine()) { 
      System.out.println(scanner.nextLine()); 
     } 
     scanner.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Aber das Problem mit dieser Art und Weise ist, dass ich weiß nicht, den Dateipfad, da die Geräte nicht auf dem PC verbunden ist, wie ein Speichergerät.

Wie kann man den auf den PC gescannten Barcode abrufen?

Antwort

0

AFAIK der MC3000-Serie läuft Windows CE 4.2.

Es gibt keine serielle Verbindung, außer dass Sie einen seriellen Adapter (falls verfügbar) an das Gerät anschließen.

Wenn das Gerät an einen Windows-PC (USB oder seriell) angeschlossen ist, startet das Gerät ActiveSync und auf dem PC muss ActiveSync oder WMDC installiert werden, um eine Verbindung zwischen dem Gerät und dem PC herzustellen. Diese Verbindung kann über C/C++ RAPI (siehe auch Copy a file from PDA to PC via USB in java) oder über das Netzwerk genutzt werden. ActiveSync erstellt eine PPP-Verbindung und das Gerät erhält eine IP-Adresse. Oder mit neueren Geräten, auf denen Windows Mobile 6 ausgeführt wird, erhalten Sie einen virtuellen Netzwerkadapter, der eine Verbindung zum Gerät herstellt (RNDIS).

Wenn ActiveSync angeschlossen ist, können Sie Verzeichnisse usw. angeben, die zwischen dem PC und dem Gerät synchronisiert werden sollen. Oder Sie verwenden das PPP-Netzwerk, um Dateien oder Daten zu übertragen.

Alles wird einfacher, wenn Sie das Gerät an Ihr WLAN anschließen, wenn Sie eines haben.