2016-11-26 1 views
0

나는 usb 모뎀을 사용하여 음성 전화를 걸기 위해 코드를 시도하고 있습니다. 전화를 걸었습니다. 이제 번호가 울리거나, 통화 중이거나 사용할 수 없다는 것을 알기 위해 전화 응답을 받고 싶습니다.AT 명령어 호출 응답 받기

이 내 사용 코드 : ATD 후

 string number = textBox1.Text; 

     po.PortName = "COM3"; 
     po.BaudRate = int.Parse("9600"); 
     po.DataBits = Convert.ToInt32("8"); 
     po.Parity = Parity.None; 
     po.StopBits = StopBits.One; 
     po.ReadTimeout = int.Parse("300"); 
     po.WriteTimeout = int.Parse("300"); 
     po.Encoding = Encoding.GetEncoding("iso-8859-1"); 
     po.Open(); 
     po.DtrEnable = true; 
     po.RtsEnable = true; 
     po.Write("ATDT "+number+";\r"); 

     System.Threading.Thread.Sleep(7000); 

     po.WriteLine("ATH+CHUP;\r"); 
     po.DiscardInBuffer(); 
     po.DiscardOutBuffer(); 
     po.Close(); 
+0

좀 도와주세요 – Lupindo

답변

1

, 당신은 URC라는 정보의 종류의 포트를 읽을 필요가 없다.
NO :

은 음성 통화의 경우,

만약 발신음이 없습니다
발신음이 없습니다

통화 중,
BUSY

연결이 설정 될 수없는 경우 다음과 같은 가능한 응답이 있습니다 이동 통신사
아니요 답변

ATD 전에 (+ cmee)을 사용하여 오류 형식을 설정하는 것이 좋습니다. + cmee = 2 일 때 문자열 형식을 사용할 수 있습니다.

편집 :

#! /usr/bin/env python 
# -*- coding: utf8 -*- 
from __future__ import print_function 

import sys 
import serial 


NUM = "111111111" 

ser = serial.Serial("com1", 115200) 

ser.write('at+cmee=2\r') 
ser.timeout = 10.0 
res = "invalid" 
while len(res) > 0: 
    res = ser.read(1) 
    print(res, end='') 

ser.write('atd' + NUM + ';\r') 
ser.timeout = 60.0 
res = "invalid" 
while len(res) > 0: 
    res = ser.read(1) 
    print(res, end='') 

ser.write("AT+CHUP\r") 
ser.timeout = 10.0 
res = "invalid" 
while len(res) > 0: 
    res = ser.read(1) 
    print(res, end='') 

출력을 출력 한 후, (I는 "111111111"전화기에서 통화 거절)

at+cmee=2 
OK 
atd111111111; 
OK 

NO CARRIER 
AT+CHUP 
+CME ERROR: operation not allowed 

이고 (여기서 파이썬 예이다) '운송인 없음', 더 이상 전화를 끊을 필요가 없습니다.

+0

구문에 대한 완전한 예를 들어 줄 수 있습니까? – Lupindo