I have a socket tcp java server on the pc and a tcp socket client on android, I am able to receive data from the server. But how do I create a server that is always listening to a port on android, ie create a socket server in android. Can I for example leave a thread just sending data to a port on the pc, and another thread just receiving data from the pc and updating the wm? Someone has examples or links to help.
// sockert server that receives android commands
package tanio;
import java.io. ; import java.net. ;
import javax.swing.SwingWorker;
class socketServer implements Runnable { String clientSentence=""; String capitalizedSentence;
int porta = 9837; public void run(){ /*atribuicao do numero da porta ao socket*/ ServerSocket welcomeSocket = null; try { welcomeSocket = new ServerSocket(porta); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("Esperando conexoes na porta " + porta); { while (true) { Socket connectionSocket = null; try { connectionSocket = welcomeSocket.accept(); } catch (IOException e1) { // TODO
Auto-generated catch block e1.printStackTrace (); } System.out.println ("Connection accepts ...");
BufferedReader inFromClient = null; try { inFromClient = new BufferedReader(new InputStreamReader(
connectionSocket.getInputStream ())); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace (); } try {DataOutputStream outToClient = new DataOutputStream (connectionSocket.getOutputStream ()); } catch (IOException e1) {// TODO Auto-generated catch block e1.printStackTrace (); }
try { DataOutputStream outToClient = new DataOutputStream( connectionSocket.getOutputStream() ); clientSentence = inFromClient.readLine(); System.out.println("Frase recebida do Cliente: " + clientSentence); //connectionSocket.close(); int valorconvertido = Integer.parseInt(clientSentence); System.out.println(valorconvertido); switch (valorconvertido){ case 2: modoAutonomo executarmodoAutonomo = new modoAutonomo(); executarmodoAutonomo.execute(); outToClient.writeUTF("Ligando o Carro!");; //outToClient.writeByte(2); outToClient.flush(); //outToClient.close(); break; case 3: desligar executardesligar = new desligar(); executardesligar.execute(); break; } connectionSocket.close(); } catch (Exception e) { System.out.println("PERDA DA CONEXAO"); } /*fecha a conexão aberta*/ try { connectionSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Conexao fechada"); } } } }
Method to start car
package tanio;
import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.SwingWorker;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ExecutionException;
import tanio.chamarTelPrincipal;
public class modeAutonomo extends SwingWorker { public SerialCom Read arduino = new SerialComLeitura ("COM7", 9600, 0); public char valorlido; static int function;
protected Object doInBackground(){ arduino.enviarDados(2); arduino.receberDados(); delay.delay(3000); char valorlido = arduino.getPeso().charAt(0); if (valorlido == 'b' | valorlido == 'c') { arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Chave Ligou!"); //chamarTelaPrincipal.jBLigar.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\start.jpg")); //chamarTelaPrincipal.jBLigar.setEnabled( false ); //chamarTelaPrincipal.jBLigar.setVisible(false); //chamarTelaPrincipal.jBDesligar.setEnabled( true ); //chamarTelaPrincipal.jBDesligar.setVisible(true); //arduino.FecharCom(); delay.delay(2000); chamarTelaPrincipal.Info.setText("Acionando Partida!"); ////comando para ligar o carro arduino.enviarDados(4); arduino.receberDados(); delay.delay(2000); char valorlido1 = arduino.getPeso().charAt(0); // char valorlido1 = arduino.getPeso().charAt(0); if (valorlido1 == 'y' ){ chamarTelaPrincipal.Info.setText("Carro Ligou!"); chamarTelaPrincipal.btnDesligar.setEnabled(true);//botao desligar
is enabled
chamarTelaPrincipal.btnLigarMotor.setEnabled(false);//botao ligar fica
disabled
chamarTelaPrincipal.jBDesligar.setVisible(true); chamarTelaPrincipal.jBDesligar.setEnabled(true); //botao desligar modo autonomo habilita chamarTelaPrincipal.jBLigar.setEnabled(false); // botao ligar modo autonomo desabilita chamarTelaPrincipal.jBLigar.setVisible(false); chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar
rest off callTapMain.btnLookRestore.setVisible (false);
chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao
off rest off callTapMain.btnCloseRestore.setVisible (false);
arduino.FecharCom(); delay.delay(2000); arduino.enviarDados(7); arduino.receberDados(); delay.delay(2000); char valorlido9 = arduino.getPeso().charAt(0); if (valorlido9 == 'r') { // som ligou arduino.FecharCom(); //chamarTelaPrincipal.btnsomon.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\somdesligado.jpg")); chamarTelaPrincipal.btnsomon.setEnabled(false); chamarTelaPrincipal.btnsomon.setVisible(false); chamarTelaPrincipal.btnsomoff.setEnabled(true); chamarTelaPrincipal.btnsomoff.setVisible(true); chamarTelaPrincipal.Info.setText("Som Ligado!"); } else if(valorlido9 == 't'){ //som ja estava ligado arduino.FecharCom(); //chamarTelaPrincipal.btnsomon.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\somdesligado.jpg")); chamarTelaPrincipal.btnsomon.setEnabled(false); chamarTelaPrincipal.btnsomon.setVisible(false); chamarTelaPrincipal.btnsomoff.setEnabled(true); chamarTelaPrincipal.btnsomoff.setVisible(true); chamarTelaPrincipal.Info.setText("Som Ja esta Ligado!"); } else{ System.out.println(valorlido9); arduino.FecharCom(); //houve algum problema na conexao e o som nao ligou chamarTelaPrincipal.Info.setText("Problema na Conexao, Som nao ligou!"); delay.delay(1000); chamarTelaPrincipal.Info.setText("Verifique o pino VoltSom!"); } delay.delay(2000); arduino.enviarDados(5); arduino.receberDados(); delay.delay(2000); char valorlido2 = arduino.getPeso().charAt(0); if (valorlido2 == 'j') { arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Potência Ligada"); //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\onoff.jpg")); chamarTelaPrincipal.btnpotencia.setEnabled(false); chamarTelaPrincipal.btnpotencia.setVisible(false); chamarTelaPrincipal.btnpotenciaoff.setEnabled(true); chamarTelaPrincipal.btnpotenciaoff.setVisible(true); //chamarTelaPrincipal.jBLigar.setEnabled( false ); //chamarTelaPrincipal.jBDesligar.setEnabled( true ); } else if (valorlido2 == 's'){ arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Potencia Ja Esta Ligada!"); chamarTelaPrincipal.btnpotencia.setEnabled(false); chamarTelaPrincipal.btnpotencia.setVisible(false); chamarTelaPrincipal.btnpotenciaoff.setEnabled(true); chamarTelaPrincipal.btnpotenciaoff.setVisible(true); } else { arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!"); } delay.delay(2000); Date hora = new Date(); Date minutos = new Date(); SimpleDateFormat formatarhora = new SimpleDateFormat("H"); SimpleDateFormat formatarminutos = new SimpleDateFormat("mm"); String horaformatada = formatarhora.format(hora); String minutosformatada = formatarminutos.format(minutos); //System.out.printf(horaformatada); //System.out.printf(":%s", minutosformatada); int horaint = Integer.parseInt(horaformatada); int minutosint = Integer.parseInt(minutosformatada); System.out.print(horaint); System.out.println(minutosint); if (horaint > 2 ){ arduino.enviarDados(11); arduino.receberDados(); delay.delay(2000); char valorlido4 = arduino.getPeso().charAt(0); if (valorlido4 == 'j') { System.out.println(valorlido); arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Farois de Milha Ligados"); //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\onoff.jpg")); chamarTelaPrincipal.btnligarfarolmilha.setEnabled(false); chamarTelaPrincipal.btnligarfarolmilha.setVisible(false); chamarTelaPrincipal.btndesligarfarolmilha.setEnabled(true); chamarTelaPrincipal.btndesligarfarolmilha.setVisible(true); //chamarTelaPrincipal.jBLigar.setEnabled( false ); //chamarTelaPrincipal.jBDesligar.setEnabled( true ); } else if(valorlido4 == 's'){ arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Farois de Milha Ja Ligados"); //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\onoff.jpg")); chamarTelaPrincipal.btnligarfarolmilha.setEnabled(false); chamarTelaPrincipal.btnligarfarolmilha.setVisible(false); chamarTelaPrincipal.btndesligarfarolmilha.setEnabled(true); chamarTelaPrincipal.btndesligarfarolmilha.setVisible(true); //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\Users\alicia.cc\Desktop\onoff.jpg")); //chamarTelaPrincipal.btnpotencia.setEnabled(false); } else { arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!"); } } } else if (valorlido1 == 'i'){ arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Não e Possivel dar Partida!"); delay.delay(1000); chamarTelaPrincipal.Info.setText("Chave Desligada!"); chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao desligar fica ativado chamarTelaPrincipal.btnLigarMotor.setEnabled(true);//botao ligar fica
disabled
chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao ligar fica
disabled
chamarTelaPrincipal.jBDesligar.setVisible(false); chamarTelaPrincipal.jBDesligar.setEnabled(false); //botao desligar modo autonomo habilita chamarTelaPrincipal.jBLigar.setEnabled(true); // botao ligar modo autonomo desabilita chamarTelaPrincipal.jBLigar.setVisible(true); chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar
rest off callTapMain.btnLookRestore.setVisible (false);
chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao
off rest off callTapMain.btnCloseRestore.setVisible (false);
} else if (valorlido1 == 'x'){ arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Não e possivel dar a Partida!"); delay.delay(1500); chamarTelaPrincipal.Info.setText("Freio de mão não acionado!"); chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao desligar
is enabled
chamarTelaPrincipal.btnLigarMotor.setEnabled(true);//botao ligar fica
disabled
chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao ligar fica
disabled
chamarTelaPrincipal.jBDesligar.setVisible(false); chamarTelaPrincipal.jBDesligar.setEnabled(false); //botao desligar
autonomous mode enables
chamarTelaPrincipal.jBLigar.setEnabled(true); // botao ligar modo
autonomo disables call Main.jBLigar.setVisible (true);
chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar
rest off callTapMain.btnLookRestore.setVisible (false);
chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao
off rest off callTapMain.btnCloseRestore.setVisible (false);
} else if(valorlido1 == 't'){ arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Não e possivel dar a Partida!"); delay.delay(1500); chamarTelaPrincipal.Info.setText("Marcha 1 Engatada!"); chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao desligar
is enabled
chamarTelaPrincipal.btnLigarMotor.setEnabled(true);//botao ligar fica
disabled
chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao ligar fica
disabled
chamarTelaPrincipal.jBDesligar.setVisible(false); chamarTelaPrincipal.jBDesligar.setEnabled(false); //botao desligar
autonomous mode enables
chamarTelaPrincipal.jBLigar.setEnabled(true); // botao ligar modo
autonomo disables call Main.jBLigar.setVisible (true);
chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar
rest off callTapMain.btnLookRestore.setVisible (false);
chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao
off rest off callTapMain.btnCloseRestore.setVisible (false);
} else{ arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!"); } } else { arduino.FecharCom(); chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!"); } return valorlido; } }
Veja que aqui atualizo a gui do programa java e precisso tambem enviar um feedback para a aplicao android
chamarTelaPrincipal.Info.setText("Carro Ligou!"); // Preciso aqui um metodo para enviar a informacao para o a android chamarTelaPrincipal.btnDesligar.setEnabled(true);//botao desligar
is enabled