2016-11-26 7 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:

なしダイヤルトーン
NO DIALTONE

忙しい場合は、
BUSY場合は、接続を設定することができない場合は、音声通話のために

は、以下の可能な応答は

がありますキャリア
いいえ回答

ATDの前に、(+ cmee)でエラーフォーマットを設定することをお勧めします。+ cmee = 2に設定すると、文字列フォーマットが有効になります。

EDITは:

#! /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='') 

その出力は、出力した後、(私は "111111111" 電話からの通話を拒否する)

at+cmee=2 
OK 
atd111111111; 
OK 

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

である(ここでのpythonでの例です) 「キャリアなし」、電話を切る必要はもうありません。

+0

あなたは私に構文の完全な例を教えてくれますか – Lupindo

関連する問題