핸드폰의 AT명령어를 이용하여 SMS보내기.

http://kworks.tistory.com/43


sprintf(str, "AT*KTF*MOREQ=0,%s,%s,4098,%s%c", 보내고 싶은 번호,보내는 번호, 메시지, '\r');

str를 잡힌 모뎀 포트로 내보내면 잘 보내면 'OK'를 그렇지 않으면 'ERROR'를 보낸다.
명령어 형식은 폰의 버전마다 종류마다 다를 수 있습니다.

AT*SKT*MOREQ=0,%s,%s,4098,%s%c
AT*LGT*MOREQ=0,%s,%s,4098,%s%c
AT*KTF*MOREQ=0,%s,%s,4098,%s%c


파이썬 소스 예제)
※다른 언어로 구현할 경우에는, 시리얼 전송부분만 따로 구현하고 아래의 소스에서 사용된 AT 명령어을 그대로 사용하면 된다.

import serial
 
ser = serial.Serial('/dev/ttyS0', 115200, timeout=1) # 시리얼포트 연결
ser.write("AT*ESMS=1\r") # 문자보내기 기능을 활성화 한다.
serial_result = ser.readlines()
ser.write("ATE0\r")
serial_result = ser.readlines()
ser.write("ATV1\r")
serial_result = ser.readlines()
ser.write("AT+CHV\r") # 호연결 끊기
serial_result = ser.readlines()
ser.write("AT+CSQ?\r") # 장비 테스트
serial_result = ser.readlines()
ser.write("AT+CDV *0661\r") # 호에 연결
serial_result = ser.readlines()
serial_result = ser.readlines()
ser.write("AT*MOREQ 0,0113872176,0162348765,4098,첫번째문자보내기\r") # 첫번째문자 보내기
serial_result = ser.readlines()
ser.write("AT*MOREQ 1,0113872176,0162348765,4098,두번째문자보내기\r") # 두번째문자 보내기
serial_result = ser.readlines()
ser.write("AT+CHV\r") # 호연결 끊기
serial_result = ser.readlines()
ser.close() # 시리얼포트 끊기


Serial port 캡처

SMS을 보낼 때 사용되는 AT명령어를 알기 위해서는 통신사에서 제공하는 프로그램을 설치한다. 그 후 핸드폰을 연결한 후 SMS을 보낼 떄 주고 받는 내용을 시리얼 포트에서 캡쳐해내야 한다. 이때 사용하는 프로그램이 Agg Software의 Advanced Serial Port Monitor이다. 아래의 사이트에서 트라이얼 버전을 다운로드하여 사용한다(일정 기간 동안만 사용 가능).

http://www.aggsoft.com/serial-port-monitor/


AT Command 참고
  • Leave a Reply

    Your email address will not be published. Required fields are marked *