문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
develop:python:tip:sendsms [2007/02/05 13:28] mattabu |
develop:python:tip:sendsms [2007/02/08 09:42] (현재) mattabu |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Send SMS ====== | ====== Send SMS ====== | ||
+ | |||
===== 개요 ===== | ===== 개요 ===== | ||
핸드폰과 컴퓨터를 시리얼로 연결하여 AT Command 를 이용하여 문자메시지를 보낼 수 있다. Python 에는 Serial 모듈이 있으며 이를 통해서 시리얼 통신을 할 수 있다. | 핸드폰과 컴퓨터를 시리얼로 연결하여 AT Command 를 이용하여 문자메시지를 보낼 수 있다. Python 에는 Serial 모듈이 있으며 이를 통해서 시리얼 통신을 할 수 있다. | ||
줄 8: | 줄 9: | ||
# apt-get install python-serial | # apt-get install python-serial | ||
</ | </ | ||
+ | 다른 OS에서는 http:// | ||
- | ===== 문자보내기 ===== | + | ===== 문자보내기 |
<code python> | <code python> | ||
import serial | import serial | ||
- | ser = serial.Serial('/ | + | |
- | ser.write(" | + | ser = serial.Serial('/ |
+ | ser.write(" | ||
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
ser.write(" | ser.write(" | ||
줄 19: | 줄 22: | ||
ser.write(" | ser.write(" | ||
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
- | ser.write(" | + | ser.write(" |
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
- | ser.write(" | + | ser.write(" |
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
- | ser.write(" | + | ser.write(" |
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
- | ser.write(" | + | ser.write(" |
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
- | ser.write(" | + | ser.write(" |
serial_result = ser.readlines() | serial_result = ser.readlines() | ||
- | ser.close() | + | ser.write(" |
+ | serial_result = ser.readlines() | ||
+ | ser.close() | ||
</ | </ | ||
+ | 위의 예제는 Mailshot 이라는 문자메시지 단말기를 통해서 문자를 보내는 코드이다. Mailshot 은 윈도우용 모듈만 제공하여 필자가 리눅스(기타 OS)에서도 돌아갈 수 있도록 작성한 것이다. 단말기, 통신사에 따라서 명령어가 틀리기 때문에 실제 문자를 보낼때 시리얼포트를 캡쳐하여 알아보아야 한다. | ||
+ | |||
+ | |||
+ | ===== 시리얼포트 캡쳐하기 ===== | ||
+ | 문자메시지를 보낼때 사용하는 명령어를 알기 위해서는 통신사에서 제공하는 프로그램을 설치하고, | ||
+ | 필자가 이용한 캡쳐 프로그램은 Agg Software 의 Advanced Serial Port Monitor 이다. 해당 사이트에서 트라이얼 버전을 다운로드하여 설치하면 일정기간 동안 사용할 수 있다. | ||
+ | * http:// | ||
+ | 위의 프로그램을 이용하여 어떤 AT명령어를 사용하는지 알 수 있다. 또한 변수의 모든 값을 보려면 at&v 를 사용한다. 원래 통신사 프로그램을 이용해서 보내는 경우와 새로운 장비에 연결했을때의 변수 값을 비교하여 차이점을 알아낼수 있을 것이다. 예를 들어 필자의 경우는 아래와 같았다. | ||
+ | < | ||
+ | [Windows] - 이동사에서 지원되는 프로그램을 사용하는 장비 | ||
+ | at&v | ||
+ | &C: 1; &D: 2; &F: 0; E: 0; L: 0; M: 0; Q: 0; V: 1; X: 4; Z: 0; S0: 0 | ||
+ | S10: 14; S11: 95; S3: 13; S4: 10; S5: 8; S6: 2; S7: 50; S8: 2; S9: 6 | ||
+ | +FCLASS: 0; +CFG: ""; | ||
+ | +FIS: 0, | ||
+ | +CRC: 0; +CRM: 1; *READMT: 0; *READTI: 0; *ESMS: 1; *DELMT: 0; +CTA: 0 | ||
+ | +CXT: 0; +DR: 0; +DS: 3,0,2048,6; +EB: 1,0,30; +EFCS: 1; +ER: 0 | ||
+ | +ES: 3,0,2; +ESR: 1; +ETBM: 1,1,20; +FAA: 0; +FAP: 0,0,0; +FBO: 0 | ||
+ | +FBU: 0; +FCQ: 1,0; +FCR: 0; +FCT: 1E; +FEA: 0; +FFC: 0,0,0,0; +FHS: 0 | ||
+ | +FIE: 0; +FIP: 0; +FLI: ""; | ||
+ | +FNS: ""; | ||
+ | +FRQ: 0,0; +FRY: 0; +FSA: ""; | ||
+ | +IPR: 115200; +MA: ; +MR: 0; +MS: ; +MV18R: 0; +MV18S: 0,0,0; +CMUX: C,2 | ||
+ | |||
+ | [Linux] - 필자의 장비 | ||
+ | at&v | ||
+ | &C: 1; &D: 2; &F: 0; E: 1; L: 0; M: 0; Q: 0; V: 0; X: 4; Z: 0; S0: 0 | ||
+ | S10: 14; S11: 95; S3: 13; S4: 10; S5: 8; S6: 2; S7: 50; S8: 2; S9: 6 | ||
+ | +FCLASS: 0; +CFG: ""; | ||
+ | +FIS: 0, | ||
+ | +CRC: 0; +CRM: 1; *READMT: 0; *READTI: 0; *ESMS: 0; *DELMT: 0; +CTA: 0 | ||
+ | +CXT: 0; +DR: 0; +DS: 3,0,2048,6; +EB: 1,0,30; +EFCS: 1; +ER: 0 | ||
+ | +ES: 3,0,2; +ESR: 1; +ETBM: 1,1,20; +FAA: 0; +FAP: 0,0,0; +FBO: 0 | ||
+ | +FBU: 0; +FCQ: 1,0; +FCR: 0; +FCT: 1E; +FEA: 0; +FFC: 0,0,0,0; +FHS: 0 | ||
+ | +FIE: 0; +FIP: 0; +FLI: ""; | ||
+ | +FNS: ""; | ||
+ | +FRQ: 0,0; +FRY: 0; +FSA: ""; | ||
+ | +IPR: 115200; +MA: ; +MR: 0; +MS: ; +MV18R: 0; +MV18S: 0,0,0; +CMUX: C,2 | ||
+ | </ | ||
+ | 위에서 *ESMS, E, V의 값이 차이나는 것을 알 수 있고, 이 변수들을 AT 명령어로 설정해주어야 한다. | ||
+ | |||
+ | ===== AT Command ===== | ||
+ | 핸드폰으로 문자메시지를 보내려면 모뎀명령어인 AT 명령어를 사용해야 하며, 관련 사이트는 다음과 같다. | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | ===== 참고 ===== | ||
+ | 아래 사이트도 참고해보면 좋을 듯 하다. | ||
+ | * http:// | ||
+ |