2017-03-28 8 views
0

사용자의 입력을 기반으로 SMS 메시지를 보내는 간단한 C++ 프로그램을 작성하려고합니다. 간단한 C++ 프로그램은 일을 실패C++ 프로그램을 통해 CTRL-Z를 보냅니다.

#include<stdio.h> 
#include <stdlib.h>  /* system, NULL, EXIT_FAILURE */ 

#include<iostream> 
#define CTRL(x) (#x[0]-'a'+1) 

using namespace std; 
int main() 
{ 
    char buffer[128]; 
    sprintf(buffer, "/opt/modemcli AT+CMGC=\"+112345678\"\rTEST%c", CTRL(z)); 
    printf (buffer); 
    system(buffer); 
    return 0; 
} 

modemcli 그냥 USB 포트에 메시지를 기록하고 응답을 읽는 간단한 C++ 프로그램입니다.

modemcli is simple, here is a test: 
/opt/modemcli AT 
Received AT 
OK 

내 생각에 CMGC가 제대로 형성되지 않았습니다. 형식은 다음과 같습니다.

AT+CMGC="PHONE_NUMBER"<CR>SMS MESSAGE BODY.<Ctrl+z> 

누군가이 문제를 해결할 수 있습니까?

+1

왜 그 복잡한 매크로가 아니라 단지 '26'입니까? –

+0

합리적인 것 같지만 실제 문제입니까? – user7459730

+0

나는 그것을 다음과 같이 변경했다 : AT + CMGC = "+ 112345678"\ 013TESTTEST \ 026 그러나 여전히 올바른 방법으로 작동하지는 않는다. 어떤 아이디어? – user7459730

답변

1

우선 이 아닌 AT+CMGS 명령을 사용하고 싶습니다. 27.005에있는 각 명령의 설명을 확인하여 AT + CMGC를 실제로 원하는지 확인하십시오. 그러나이 문서를 읽기 전에, V.250의 5 장 모두를 읽으십시오. 그러면 필요한 AT 명령 처리에 대한 모든 기본 사항을 알려줄 것입니다.

시도하고있는 것은 입니다.은 modemcli 또는 atinout 프로그램과 같은 AT 명령을 보내기위한 일반 명령 줄 프로그램을 사용하여 수행 할 수 없습니다. 모뎀에서 AT+CMGS을 실행하려면 을 실행하는 프로그램이이 특정 AT 명령의 동작을 명시 적으로 지원해야합니다 ().

페이로드를 보내기 전에 모뎀에서 "ready to receive"프롬프트를 기다릴 필요가 있기 때문입니다. 자세한 내용은 this answer의 첫 번째 부분을 참조하십시오.

나는 특별히 AT+CMGS을 처리하기 위해 atinout과 동반자 프로그램 작업을 시작했으나 아직 완료되지 않았으며 숨을 멈추지 않았습니다. 현재 개발이 보류 중입니다.