2009-09-14 4 views
8

나는 내 컴퓨터에 연결된 GSM 모뎀을 가지고 있는데, 내가 작성한 파이썬 프로그램을 사용하여 문자 메시지를 보내고 싶다. 데이터를 폴링하는 가장 좋은 기술이 무엇인지 궁금하다.들어오는 데이터를 폴링하기위한 가장 좋은 디자인은 무엇입니까?

들어오는 SMS를 계속 확인하는 무한 루프가있는 프로그램을 작성해야합니까? 프로그램이 루프 내에서 AT 명령을 보내고 입력 데이터를 읽습니다. 또는 모뎀에는 들어오는 데이터 (sms)의 응용 프로그램에 신호를 보내는 방법이 있습니다.

핸드폰이 GSM 모뎀 일 뿐이며 SMS가 수신되면 휴대 전화에서 이벤트를 알리거나 전화 소프트웨어에 들어오는 데이터를 폴링하는 무한 루프가 있는지 확인하려고합니다.

+0

큰 질문입니다! 궁금 해서요, 어떤 GSM 모뎀이 있습니까? –

+0

화웨이, 모델 E220 HSDPA USB 모뎀 – gath

답변

3

이전에 비슷한 내용을 썼습니다. AT 명령을 사용하여 SMS를받을 때마다 모뎀에 신호를 보내도록하는 방법이 있습니다.

참고로 임베디드 응용 프로그램에서 Maestro 100 GSM Modem을 사용하고있었습니다.

먼저 모뎀을 올바르게 초기화해야합니다. SMS에 텍스트 모드를 사용하고 있었지만 다른 것을 사용 중일 수 있습니다. 원하는 것을 선택하십시오. AT + CNMI가 가장 중요합니다.

AT&F0 # Restore factory defaults 
ATE0 # Disable command echo 
AT+CMGF=1 # Set message format to text mode 
AT+CNMI=1,1,0,1,0 # Set new message indicator 
AT+CPMS="SM","SM","SM" # Set preferred message storage to SIM 

그런 다음 메시지 알림을 기다리는 것이 좋습니다.

+CMTI: "SM",0 # Message notification with index 

당신이 그 통지를받을 때, 검색 읽지 않은 SMS의의 (즉 통지 사이에 다를 수 있습니다 인덱스 번호가 일치하지 않습니다) :

AT+CMGL="REC UNREAD" # Retrieve unread messages 

난 당신이 또한 설문 조사를 추가하는 것이 좋습니다, 5 분마다 알림을 놓칠 경우를 대비하여 시리얼 통신을 통해 결코 확신 할 수 없습니다!

+0

감사합니다. 기다릴 수 없습니다. – gath

+0

좋아, 편집했습니다. 희망이 도움이됩니다. 외부 GSM 모뎀이있는 임베디드 응용 프로그램에서이 명령을 사용했습니다. –

+0

위대한, 그것을 밖으로 시도하자. – gath

0

SMS와 관련된 AT 명령어 세트를 많이 기억하지 못합니다. 앙드레 밀러의 대답은 몇 가지 종을 울리는 것으로 보인다. 어쨌든 당신은 문서를 아주 조심스럽게 읽어야합니다. 나는 몇 가지 문제가 있음을 확신합니다.

내 폴링 요청은 적어도 5 초마다 이루어집니다. 이는 단절된 상태에서도 견고하고 응답하기위한 것입니다.

상태 머신을 사용하여 초기화, 읽기 및 삭제 사이를 탐색했습니다.

관련 문제