2013-06-24 1 views
1

Java를 사용하여 AT 명령을 사용하여 3G 동글 (GSM 모뎀)에서 SMS를 보내고 있습니다. 대부분 작동하지만, 때때로 SMS 텍스트는 그 전에 실행 된 AT 명령의 일부를 포함합니다. 이것은 간헐적이지만 수정해야합니다. 다음AT Java에서 메시지를 보내려는 명령

관련 코드 :

public void sendMessage(String phoneNumber, String message) throws InterruptedException { 
    char qu=34; 
    char cz=26; 
    send("AT+CMGF=1\r\n"); 
    Thread.sleep(2000); 
    send("AT+CMGS=" + qu + phoneNumber + qu + ",145\r\n"); 
    send(message + cz + "\r"); 
    } 

public static void main(String args[]) { 
    GSMConnect gsm = new GSMConnect("COM22"); 
    if (gsm.init()) { 
     try { 
     gsm.connect(); 
     Thread.sleep(2000); 
     gsm.sendMessage("+9172xxxxxxxx", "Test Message sent from GSM Modem using AT Commands."); 
     System.out.println("Sleeping for 20 secs"); 
     Thread.sleep(20000); 
     gsm.hangup(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } else { 
     System.out.println("Can't init this card"); 
    } 
    } 

다음 I 때때로 수신 메시지는 다음

+ CMGS = "+ 9172xxxxxxxx"AT

, GSM 모뎀으로부터 전송 145 테스트 메시지를 사용하여 AT 명령.

============ 당신의 도움에 미리

덕분에! 종이의 큰 A3 용지를 취득하여

감사합니다, Kumarjit

+0

멀티 스레딩 문제가있는 것 같습니다. 실수로 한 번에 두 개의 프로그램 인스턴스를 실행합니까? –

+0

맞습니다. 나는 2 명의 사람에게 같은 메시지를 보내야했다. 그래서 gsm.sendMessage를 두 번 호출했습니다. 그러나이 번호를 하나의 번호로 보냈을 때도이 문제가 발생했습니다. AT + CREG = 같은 다른 명령도 실행되었습니다. 및 ATZ – kaayess

+0

한 번에 하나의 프로그램에서만 COM22에 액세스 할 수있는 메커니즘이 필요합니다. –

답변

0

시작, 빨간 펜을 찾아 쓰기 1000 배

내가 를 읽는 대신 Thread.sleep을 사용하지 않습니다 모뎀에서 응답을 구문 분석합니다.

나는 모뎀에서 응답을 분석 및 를 읽는 대신 Thread.sleep을 사용하지 않습니다.

나는 모뎀에서 응답을 분석를 읽는 대신 Thread.sleep을 사용하지 않습니다.

나는 모뎀에서 응답을 분석를 읽는 대신 Thread.sleep을 사용하지 않습니다.

나는 모뎀에서 응답을 분석를 읽는 대신 Thread.sleep을 사용하지 않습니다.

는 ... 그런 V.250에 관한 지침에 따라 this answer, 를 참조하십시오. 코드를 수정하기 전에 모든 정보를 제대로 소화 할 때까지 기다리십시오. 모든 정보가 유실되는 데는 시간이 걸릴 수 있습니다.

물론 처음 부분은 우습지 만, 나머지 부분은 진지해졌습니다. 당신은 당신이 채워야 만하는 커다란 AT 명령 지식 "구멍"을 가지고 있습니다. 매우 어렵지는 않지만 약간의 노력이 필요할 것입니다.

AT 명령의 일부가 메시지 내용에서 끝나는 방식을 정확히 말할 수는 없지만, 근본적인 원인은 사용자가해야하는 것처럼 모뎀 응답을 읽고 파싱하지 않는다는 것입니다.


TL; DR : 당신은 읽고 모뎀이 당신에게 다시 보내는 모든 것을 분석해야합니다. 다른 어떤 것도 안정적으로 작동하지 않습니다..