2016-09-12 1 views
1

J'essaye de faire un programme pour envoyer un sms. J'ai écrit le programme mais je n'ai pas réussi à envoyer le message. Mon programme envoie une commande At au port COM sur mon ordinateur mais je n'obtiens pas de réponse de mon modem gsm. J'utilise COM terminal (Temp pro ...) pour envoyer des sms avec la commande at et je suis capable d'envoyer des sms. Par conséquent, je ne sais pas pourquoi le programme ne peut pas envoyer un sms.Envoyer à commande à modem gsm avec Java

import java.io.*; 
import java.util.*; 
import gnu.io.*; 

public class prawiefinal { 
    static Enumeration portList; 
    static CommPortIdentifier portId; 
    static String messageString = "AT+CMGF=1 \r"; 
    static String messageString2 = "AT+CMGS=\"+4866467xxxx\"\r"; 
    static String messageString3 = "TESting \u001A\r\n"; 
    static SerialPort serialPort; 
    static OutputStream outputStream; 


    public static void main(String[] args) throws InterruptedException { 
     portList = CommPortIdentifier.getPortIdentifiers(); 

     while (portList.hasMoreElements()) { 

      portId = (CommPortIdentifier) portList.nextElement(); 
      if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { 

       if (portId.getName().equals("COM3")) { 

        try { 
         serialPort = (SerialPort) 
          portId.open("COM3", 2000); 
        } catch (PortInUseException e) {System.out.println("err");} 
        try { 
         outputStream = serialPort.getOutputStream(); 
        } catch (IOException e) {e.printStackTrace();} 
        try { 
         serialPort.setSerialPortParams(9600, 
           SerialPort.DATABITS_8, 
           SerialPort.STOPBITS_1, 
           SerialPort.PARITY_NONE); 
        } catch (UnsupportedCommOperationException e) {e.printStackTrace();} 
        try { 
         outputStream.write(messageString.getBytes()); 
         Thread.sleep(3000); 
         outputStream.flush(); 

         outputStream.write(messageString2.getBytes()); 
         Thread.sleep(3000); 
         outputStream.flush(); 

         outputStream.write(messageString3.getBytes()); 
         Thread.sleep(3000); 
         outputStream.write(26); 
         outputStream.flush(); 
         System.out.println(messageString); 
         Thread.sleep(3000); 






         outputStream.close(); 
         serialPort.close(); 

        } catch (IOException e) {e.printStackTrace());} 
       } 
      } 
     } 
    } 
} 
+1

Au lieu d'utiliser 'println ("ERR3")' 'mettre e.printStackTrace()' 'dans votre article catch'. Cela peut expliquer mieux quelle est l'exception. Faites cela dans toutes les clauses 'catch', [edit] votre question et ajoutez-y la trace de la pile. N'oubliez pas de le formater correctement (sans utiliser les guillemets, mais en utilisant le bouton {{} '). – RealSkeptic

+0

quel est le fichier jar que vous avez utilisé pour ** SerialPort ** –

Répondre

1

Ok Je fais le programme et je peux envoyer un SMS. J'utilise CTRL + Z et Enter c'était un problème. : D

import java.io.*; 
import java.util.*; 
import gnu.io.*; 

public class SMSsender { 
static Enumeration portList; 
static CommPortIdentifier portId; 
static String messageString1 = "AT"; 
static String messageString2 = "AT+CPIN=\"7078\""; 
static String messageString3 = "AT+CMGF=1"; 
static String messageString4 = "AT+CMGS=\"+4866467xxxx\""; 


static String messageString5 = "TESTY2"; 
static SerialPort serialPort; 
static OutputStream outputStream; 
static InputStream inputStream; 
static char enter = 13; 

static char CTRLZ = 26; 
public static void main(String[] args) throws InterruptedException { 
portList = CommPortIdentifier.getPortIdentifiers(); 



while (portList.hasMoreElements()) { 

    portId = (CommPortIdentifier) portList.nextElement(); 
    if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { 

     if (portId.getName().equals("COM3")) { 

      try { 
       serialPort = (SerialPort) 
        portId.open("COM3", 2000); 
      } catch (PortInUseException e) {System.out.println("err");} 
      try { 
       outputStream = serialPort.getOutputStream(); 
       inputStream = serialPort.getInputStream(); 
      } catch (IOException e) {e.printStackTrace();} 
      try { 
       serialPort.setSerialPortParams(9600, 
        SerialPort.DATABITS_8, 
        SerialPort.STOPBITS_1, 
        SerialPort.PARITY_NONE); 
      } catch (UnsupportedCommOperationException e) {e.printStackTrace();} 
      try { 

       outputStream.write((messageString1 + enter).getBytes()); 


       Thread.sleep(100); 
       outputStream.flush(); 

       outputStream.write((messageString2 + enter).getBytes()); 

       Thread.sleep(100); 
       outputStream.flush(); 

       outputStream.write((messageString3 + enter).getBytes()); 

       Thread.sleep(100); 
       outputStream.flush(); 




       outputStream.write((messageString4 + enter).getBytes()); 

       Thread.sleep(100); 
       outputStream.flush(); 

       outputStream.write((messageString5 + CTRLZ).getBytes()); 

       outputStream.flush(); 
       Thread.sleep(100); 


    System.out.println("Wyslano wiadomosc"); 
    Thread.sleep(3000); 


    outputStream.close(); 
    serialPort.close(); 
    System.out.println("Port COM zamkniety"); 

      } catch (IOException e) {e.printStackTrace();} 
     } 
    } 
} 

}}