hola buenas! y gracias de antemano.
He creado un programa en java que se comunica con arduino para saber la temperatura, en netbeans funciona bien pero al crear el jar y pasarlo a exe deja de funcionar el audio que indica la temperatura. He utiizado 2 metodos diferentes por si era el problema y el audio esta en carpeta de audio y directamaente donde se crea la clase principal
Código Java:
Ver originalpublic class conectar
extends javax.
swing.
JFrame implements SerialPortEventListener
{
int DatoEntrada;
SerialPort serialPort;
private final String PORT_NAME
= "COM4"; private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;
boolean estado = true;
/**
* Creates new form conectar
*/
public conectar() {
initComponents();
ArduinoConnection();
esperar();
EnviarDatos("a");
}
public void esperar(){
try{
{
System.
out.
println("Exception caught"); }
}
public void EnviarDatos
(String data
) { //esperar();
try {
Output.write(data.getBytes());
}
}
int Outputs = 0;
Outputs = Input.read();
return Outputs;
}
public synchronized void serialEvent(SerialPortEvent oEvent) {
while (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
int datos; //Se declaran las variables
datos = RecibirDatos(); //Se lee los datos en el puerto serie
if (datos > 0) { //Si el valor leido es mayor a 0...
Mensaje = Mensaje + (char) datos; //Se acumula el mensaje
if (Mensaje.charAt(Mensaje.length() - 1) == ',') { //Cuando se recibe la coma
//el mensaje ha llegado a su final, por lo que se procede a imprimir
//La parte ENTERA de la humedad. Se busca el punto, donde quiera que esté
//y se transforma de String a entero
String distancia
= Mensaje.
substring(0, Mensaje.
length() - 1); int distan
= Integer.
parseInt(distancia
);
// Mensaje = ""; //Se limpia la variable y se prepara para nueva lectura
/// if (distan<21 & distan>18){
// daleplay("i3");
// }
switch(distan){
case 20:
pay("20");
esperar();
//System.exit(0);
break;
case 18:
pay("18");
esperar();
//System.exit(0);
as.setText("18");
break;
case 19:
pay("19");
esperar();
//System.exit(0);
break;
case 17:
pay("17");
esperar();
as.setText("17");
//System.exit(0);
break;
case 21:
daleplay("21");
esperar();
break;
case 22:
daleplay("22");
esperar();
break;
case 23:
daleplay("23");
esperar();
break;
case 24:
daleplay("24");
esperar();
break;
case 25:
daleplay("25");
esperar();
break;
case 26:
daleplay("26");
esperar();
break;
case 27:
daleplay("27");
esperar();
break;
case 28:
daleplay("28");
esperar();
break;
case 29:
daleplay("29");
esperar();
break;
}
Mensaje = ""; //Se limpia la variable y se prepara para nueva lectura
}
}
}
}
}
public void ArduinoConnection() {
CommPortIdentifier portId = null;
Enumeration portEnum
= CommPortIdentifier.
getPortIdentifiers();
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
if (PORT_NAME.equals(currPortId.getName())) {
portId = currPortId;
estado = true;
break;
}
}
if (portId == null) {
return;
}
try {
serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT);
serialPort.setSerialPortParams(DATA_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
Output = serialPort.getOutputStream();
Input = serialPort.getInputStream();
serialPort.addEventListener((SerialPortEventListener) this);
serialPort.notifyOnDataAvailable(true);
}
}
public void daleplay
(String value
) {
try
{
clip.
open(AudioSystem.
getAudioInputStream( getClass
().
getResourceAsStream( ruta
+ value
+".wav" ) ) ); clip.start();
System.
err.
println( ex.
getMessage() ); }
}
public void pay
(String value
){ path = getClass().getResourceAsStream(value+ ".wav");
try
{
sonido.start();
}
{
}}