- - PR -
SerialPortを使ったリターン値
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-26 09:49
C#2005を使用しています。
SerialPortクラスを使用して内蔵モデムにATコマンドを飛ばし電話をかけようと思っています。 以下のようにATコマンドを指定したCOMポートに発行した場合のモデムのリターン値を取得したいのですがwirteメソッドはvoidの為に取得できません。 SerialPort.Write(ATコマンド); 例) SerialPort port = new SerialPort(ComPort, 9600, Parity.None, 8, StopBits.One); port.Write("ATD" + TelNum); モデムにATコマンドを発行した際にどこでリターン値を取得すればよいのでしょうか? そもそもやり方が間違っているのでしょうか? 知ってる方がいましたらご教授ください。 | ||||||||||||
|
投稿日時: 2007-04-26 10:24
こんにちは。
結果コード(数字orテキスト)を”受信”すればいいのではないでしょうか? | ||||||||||||
|
投稿日時: 2007-04-26 11:34
Tdnr_Sym様
回答ありがとうございます。 >結果コード(数字orテキスト)を”受信”すればいいのではないでしょうか? 結果コードを受信というのはDataReceivedイベントでSerialPort.Readをすると言うことですか? SerialPort.Readをした結果を出力するとwriteで入力した文字列が表示されてしまいます。 そもそも結果コードを取得する方法が違っているのでしょうか・・・。 | ||||||||||||
|
投稿日時: 2007-04-26 12:02
こんばんは。
エコーを受信しているからではないですか? 不要ならエコーしない様に設定できないですか? | ||||||||||||
|
投稿日時: 2007-04-26 12:15
こんにちは。
追記です。 プログラミングの前に先ず、 ATコマンドの内容を確認して ターミナルソフトで直接コマンドを入力して確かめてみては、いかがですか? | ||||||||||||
|
投稿日時: 2007-04-27 13:10
最近のモデムは同梱の紙のマニュアルにのは接続方法とドライバのインストール方法と
ダイヤルアップ接続の設定方法しか書いてないので、付属のCDやメーカのWebサイトからATコマンドリファレンス等を入手することをお勧めします。 # DOS時代のモデムのマニュアルの方がプログラマに親切でした。 | ||||||||||||
|
投稿日時: 2007-04-27 14:32
あるいは、もう一行受信すると応答が取れるんじゃないでしょうか。 VBの例ですが、 http://support.microsoft.com/kb/823179/ja にて
という部分があります。やっていることは想像つきますよね? もちろん実用にするにはOKだけじゃなくて可能性のあるリターンコードを一通り検査しないといけないですが(ATDコマンドはいろいろエラーを返しそう)。あとタイムアウトとか(モデムに電源が入ってなかった...とかね)。 #に反応ですが
いわゆる「通信ソフト」の設定だけでも一般ユーザーレベルでATコマンドをいじらなきゃならないのが普通でしたから。いまのモデムの.infファイルの中身に相当するようなものを全部自分で... |
1