import java.util.*;
import javax.comm.*;
import java.io.*;
import java.nio.*;
public class transmitter implements Runnable, SerialPortEventListener {
public maschine mymaschine;
//needed for both read and write
static Enumeration portList;
static CommPortIdentifier portID;
//needed for write
static SerialPort serialPort;
static OutputStream outputStream;
//needed for read
InputStream inputStream;
Thread readThread;
String readedString;
/** Creates a new instance of transmitter */
public transmitter(maschine masch) {
mymaschine=masch;
}
public boolean send(String sendstring){
//send Code
boolean isSended = false;
try{
portID = CommPortIdentifier.getPortIdentifier(mymaschine.getComport());
serialPort = (SerialPort)portID.open("PortOpener",10);
//set the parity
serialPort.setSerialPortParams(
//sets the Serialport Parameters
Integer.valueOf(mymaschine.getBaudrate()).intValue(),
Integer.valueOf(mymaschine.getDatabit()).intValue(),
Integer.valueOf(mymaschine.getStopbit()).intValue(),
mymaschine.getParityAsInteger());
outputStream=serialPort.getOutputStream();
outputStream.write(sendstring.getBytes());
outputStream.flush();
serialPort.close();
isSended = true;
}catch(NoSuchPortException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(UnsupportedCommOperationException e){
e.printStackTrace();
}catch(PortInUseException e){
e.printStackTrace();
}
return isSended;
}
public void receive(){
try{
portID= CommPortIdentifier.getPortIdentifier(mymaschine.getComport());
serialPort = (SerialPort)portID.open("PortOpener", 10);
serialPort.setSerialPortParams(
//sets the Serialport Parameters
Integer.valueOf(mymaschine.getBaudrate()).intValue(),
Integer.valueOf(mymaschine.getDatabit()).intValue(),
Integer.valueOf(mymaschine.getStopbit()).intValue(),
mymaschine.getParityAsInteger()
);
inputStream = serialPort.getInputStream();
serialPort.setFlowControlMode(3);
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
readThread = new Thread(this);
readThread.start();
}catch(NoSuchPortException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(UnsupportedCommOperationException e){
e.printStackTrace();
}catch(PortInUseException e){
e.printStackTrace();
}catch(TooManyListenersException e){
e.printStackTrace();
}
}
public void closeSerialPort(){
serialPort.close();
}
public void run() {
try{
Thread.sleep(2000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
public void serialEvent(javax.comm.SerialPortEvent serialPortEvent) {
switch (serialPortEvent.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[2048];
try{
while (inputStream.available()>0){
int numBytes=inputStream.read(readBuffer);
}
readedString=new String(readBuffer);
}catch(IOException e){
System.out.print(e);
break;
}
}
}
public String getReadedString(){
return readedString;
}
}