2016-05-28 15 views
0

私は、ATコマンドを使用してダイヤラとしてPC上でコールをシミュレートするために使用している次のスニペットコードを持っています。ATコマンドがハングアップ

問題は、ユーザーがWindowsフォームで「電話を切る」ボタンをクリックしたにもかかわらず、ダイヤルされた乱数が、バックグラウンドでダイヤルし続けていることがあることです。

実際のダイヤルコールは、このコードです:

SerialPort po = new SerialPort(); 
po.PortName = ConfigurationManager.AppSettings.Get("modemPort"); 
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.WriteLine("ATD" + phoneNumber + ";\r"); 

はその後ハングアップボタンをクリックしたときに、私はこのコードを持っている:

po.DiscardInBuffer(); 
po.DiscardOutBuffer(); 
po.Close(); 

をこれは、時々、バックグラウンドでのコールのダイヤルを保持します。

私はそれをテストするために以下を追加しましたが、それでも同じ結果です。

po.WriteLine("ATH" + "\r"); 
po.WriteLine("ATH0;\r"); 
po.WriteLine("ATH+CHUP;\r"); 

答えて

0

ATコマンドセットは、正式にはHayesコマンドセットと呼ばれます。 Wikiページの情報はヘルプを提供します。さまざまな理由により、ハングアップ(ATH0)が機能しなくなる可能性があります。まず第一に、セミコロンの使用についてはわかりませんが、必要はありません。次に、モデムがデータモードになっている可能性があるので、ハングアップコマンドを書き込む前に、まず有線モード( '+++'を使用)に切り替える必要があります。もう1つのオプションは、DTR信号のドロップ時に接続をドロップするようにモデムを設定することです(そして、DTRをハングアップするようにドロップします)。この詳細についてはhereをご覧ください。

関連する問題