Comm port returns same result

boofkacrart

New Member
I have this class called Main.java which takes a serial input from my phone which is connected with a DTMF toner. I have writen this program such that when 1 is pressed then the audio file ie. BGMusicmaindc() should play.problem is the above function is playing the music everytime a key is processed. even though i have defined it in loop \[code\]if (Main.inputLine.equals("1")); { BGMusicmaindc(); }\[/code\]my Main.java is\[code\]import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStream;import gnu.io.CommPortIdentifier;import gnu.io.SerialPort;import gnu.io.SerialPortEvent;import gnu.io.SerialPortEventListener;import java.io.File;import java.io.FileInputStream;import java.lang.String;import java.util.Enumeration;import javax.swing.JOptionPane;import sun.audio.AudioData;import sun.audio.AudioDataStream;import sun.audio.AudioPlayer;import sun.audio.AudioStream;public class Main implements SerialPortEventListener{ SerialPort serialPort; /** The port we're normally going to use. */ private static final String PORT_NAMES[] = { "COM30", // Windows }; /** * A BufferedReader which will be fed by a InputStreamReader * converting the bytes into characters * making the displayed results code page independent */ public BufferedReader input; /** The output stream to the port */ public OutputStream output; /** Milliseconds to block while waiting for port open */ private static final int TIME_OUT = 2000; /** Default bits per second for COM port. */ private static final int DATA_RATE = 9600; public void initialize() { CommPortIdentifier portId = null; Enumeration portEnum = CommPortIdentifier.getPortIdentifiers(); //First, Find an instance of serial port as set in PORT_NAMES. while (portEnum.hasMoreElements()) { CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement(); for (String portName : PORT_NAMES) { if (currPortId.getName().equals(portName)) { portId = currPortId; break; } } } if (portId == null) { System.out.println("Could not find COM port."); return; } try { // open serial port, and use class name for the appName. serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT); // set port parameters serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); // open the streams input = new BufferedReader(new InputStreamReader(serialPort.getInputStream())); output = serialPort.getOutputStream(); // add event listeners serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); } catch (Exception e) { System.err.println(e.toString()); } } /** * This should be called when you stop using the port. * This will prevent port locking on platforms like Linux. */ public synchronized void close() { if (serialPort != null) { serialPort.removeEventListener(); serialPort.close(); } } /** * Handle an event on the serial port. Read the data and print it. */ public static String inputLine; public synchronized void serialEvent(SerialPortEvent oEvent) { if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { inputLine=input.readLine(); System.out.println(inputLine); if (Main.inputLine.equals("1")); { BGMusicmaindc(); } } catch (Exception e) { // System.err.println(e.toString()); } } // Ignore all the other eventTypes, but you should consider the other ones. } public void BGMusicmaindc() { //Plays the background music //make a new AudioPlayer. AudioPlayer mynewBackgroundPlayer = AudioPlayer.player; AudioDataStream myLooop = null; //use a try block in case the file doesn't exist. try { AudioStream mynewBackgroundMusic = new AudioStream(new FileInputStream(new File(getClass().getResource( "welcome.wav").toURI()))); AudioData mynewData = http://stackoverflow.com/questions/15718702/mynewBackgroundMusic.getData(); myLooop = new AudioDataStream(mynewData); } catch(Exception error) {JOptionPane.showMessageDialog(null,"Invalid file!");} // play background music. mynewBackgroundPlayer.start(myLooop); } public static void main(String[] args) throws Exception { Main main = new Main(); main.initialize(); Thread t=new Thread() { public void run() { //the following line will keep this app alive for 1000 seconds, //waiting for events to occur and responding to them (printing incoming messages to console). try {Thread.sleep(1000000);} catch (InterruptedException ie) {} } }; t.start(); System.out.println("Started"); }}\[/code\]
 
Back
Top