Visualizzazione dei risultati da 1 a 6 su 6

Discussione: read serial port

  1. #1

    read serial port

    ciao non riesco a capire il motivo per cui eseguendo questa classe
    mi dice: port /dev/ttyS0 not found.
    qualcuno può indicarmi qualche motivo plausibile
    grazie


    /*
    * @(#)SimpleRead.java 1.12 98/06/25 SMI
    *
    * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
    * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
    *
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license
    * to use, modify and redistribute this software in source and binary
    * code form, provided that i) this copyright notice and license appear
    * on all copies of the software; and ii) Licensee does not utilize the
    * software in a manner which is disparaging to Sun.
    *
    * This software is provided "AS IS," without a warranty of any kind.
    * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
    * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
    * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
    * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
    * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE
    * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS
    * BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
    * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
    * OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
    * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    *
    * This software is not designed or intended for use in on-line control
    * of aircraft, air traffic, aircraft navigation or aircraft
    * communications; or in the design, construction, operation or
    * maintenance of any nuclear facility. Licensee represents and
    * warrants that it will not use or redistribute the Software for such
    * purposes.
    */
    import java.io.*;
    import java.util.*;
    import javax.comm.*;

    /**
    * Class declaration
    *
    *
    * @author
    * @version 1.8, 08/03/00
    */
    public class SimpleRead implements Runnable, SerialPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration portList;
    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;

    /**
    * Method declaration
    *
    *
    * @param args
    *
    * @see
    */
    public static void main(String[] args) {
    boolean portFound = false;
    String defaultPort = "/dev/ttyS0 ";

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

    portList = CommPortIdentifier.getPortIdentifiers();

    while (portList.hasMoreElements()) {
    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.");
    }

    }

    /**
    * Constructor declaration
    *
    *
    * @see
    */
    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();
    }

    /**
    * Method declaration
    *
    *
    * @see
    */
    public void run() {
    try {
    Thread.sleep(20000);
    } catch (InterruptedException e) {}
    }

    /**
    * Method declaration
    *
    *
    * @param event
    *
    * @see
    */
    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(new String(readBuffer));
    } catch (IOException e) {}

    break;
    }
    }

    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: read serial port

    Originariamente inviato da ironcuzzo
    ciao non riesco a capire il motivo per cui eseguendo questa classe
    mi dice: port /dev/ttyS0 not found.
    qualcuno può indicarmi qualche motivo plausibile
    Beh, se vedi c'è un ciclo in cui vengono "enumerate" le porte disponibili e viene confrontato il 'name' per vedere se è quello richiesto.

    Quindi prova innanzitutto a stampare (nel ciclo) la stringa fornita da portId.getName(), almeno vedi quante porte ci sono e con che nome .... magari non sono quelle che pensi tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ho fatto come dici....e praticamente il ciclo fa uscire queste tre


    /dev/ttyS0
    /dev/ttyS1
    /dev/parport0


    e poi successivamente mi da


    port /dev/ttyS0 not found.


    ma come è possibile dato che è presente nelle porte del ciclo?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ironcuzzo
    ma come è possibile dato che è presente nelle porte del ciclo?
    L'ho notato solo ora (per come avevi postato il codice non era così evidente):

    codice:
    String defaultPort = "/dev/ttyS0 ";
                                    ^
    c'è uno spazio alla fine .... quindi non può essere uguale!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ups....già millegrazie

    ora come faccio a testarla...hai qualche consiglio pratico?

  6. #6
    Exception in thread "main" java.io.IOException: Not all params are supported by kernel
    at com.sun.comm.LinuxSerial.nativeSetSerialPortParams (Native Method)
    at com.sun.comm.LinuxSerial.setSerialPortParams(Linux Serial.java:346)
    at SimpleWrite.main(SimpleWrite.java:93)



    come risolvo ciò?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.