Newsgroup: it.comp.java
Titolo: Scrittura su porta seriale

Ciao,
ho la seguente classe che vorrebbe scrivere su una porta seriale,
non ho però idea di come si faccia a fare tale scrittura,
non capisco nemmeno perchè il SerialWriter  utilizzi System.in .
Sapete darmi un'idea per passargli una trama costituita da 10 interi
che voglio vengano inviati alla seriale ?
Grazie
Antonio
www.etantonio.it
public class BitSetFromVCP implements Constants
{
    OutputStream out;
    public BitSetFromVCP()
    {
        super();
    }
    public void connect ( String portName ) throws Exception
    {
        CommPortIdentifier portIdentifier =
CommPortIdentifier.getPortIdentifier(portName);
        if ( portIdentifier.isCurrentlyOwned() )
        {
            System.out.println("Error: Port is currently in use");
        }
        else
        {
            CommPort commPort = portIdentifier.open(this.getClass
().getName(),2000);
            if ( commPort instanceof SerialPort )
            {
                SerialPort serialPort = (SerialPort) commPort;
                InputStream in = serialPort.getInputStream();
                OutputStream out = serialPort.getOutputStream();
                (new Thread(new SerialWriter(out))).start();
                serialPort.addEventListener(new SerialReader(in));
                serialPort.notifyOnDataAvailable(true);
            }
            else
            {
                System.out.println("Error: Only serial ports are
handled by this example.");
            }
        }
    }
    public static class SerialWriter implements Runnable
    {
        OutputStream out;
        public SerialWriter ( OutputStream out )
        {
            this.out = out;
        }
        public void run ()
        {
            try
            {
                int c = 0;
                while ( ( c = System.in.read()) > -1 )
                {
                    this.out.write(c);
                }
            }
            catch ( IOException e )
            {
                e.printStackTrace();
                System.exit(-1);
            }
        }
    }
}

 non ho però idea di come si faccia a fare tale scrittura,
[CUT]
usa rxtx.
http://www.rxtx.org/
Ciao Jack

Stò usando rxtx,
il mio problema è come richiamare dal main del seguente esempio il
metodo sendCommand
mi domando anche se sia giusto lasciato vuoto il metodo run()
Grazie,
Antonio
www.etantonio.it
package it.imt.edusat.vcp;
import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.io.OutputStream;
import java.util.Vector;
public class TestSerialWrite {
	public TestSerialWrite()
	{
		super();
	}
	public void connect ( String portName ) throws Exception
	{
		CommPortIdentifier portIdentifier =
CommPortIdentifier.getPortIdentifier(portName);
		if ( portIdentifier.isCurrentlyOwned() )
		{
			System.out.println("Error: Port is currently in use");
		}
		else
		{
			CommPort commPort = portIdentifier.open(this.getClass().getName(),
2000);
			if ( commPort instanceof SerialPort )
			{
				SerialPort serialPort = (SerialPort) commPort;
				OutputStream out = serialPort.getOutputStream();
				(new Thread(new SerialWriter(out))).start();
			}
			else
			{
				System.out.println("Error: Only serial ports are handled by this
example.");
			}
		}
	}
	public static class SerialWriter implements Runnable
	{
		OutputStream out;
		public SerialWriter ( OutputStream out )
		{
			this.out = out;
		}
		public void run ()
		{
		}
		public void sendCommand(Vector<Integer> v) {
			try {
				for(int i = 0; i<v.size();i++)
				{
					int dato = v.get(i);
					this.out.write(dato);
				}
			} catch (Exception e) {
				System.exit(0);
			}
		}
	}
	public static void main ( String[] args )
	{
		try
		{
			TestSerialWrite ps = new TestSerialWrite();
			ps.connect("COM9");
			Vector<Integer> v = new Vector<Integer>();
			v.add(Integer.valueOf(4));
			v.add(Integer.valueOf(4));
			v.add(Integer.valueOf(4));
            ps.????
		}
		catch ( Exception e )
		{
			e.printStackTrace();
		}
	}
}

 mi domando anche se sia giusto lasciato vuoto il metodo run()
sul sito di rxtx ci sono degli esempi. Studiati quelli.
Ciao Jack