1

通話中のリモートモデムがハングアップしたことをプログラムでどのように検出する必要がありますか?UbuntulinuxのSoftModemデバイスとインターフェイスするCプログラムを書いています/dev/ttySL0。Hayes ATコマンドを使用してモデムを構成し、リモートモデムと通信することができます。しかし、もう一方の端が回線を切ったことをどのように検出するのかを判断できませんでした。

もう一方の端が電話を切ると、デバイスが印刷NO CARRIERしてコマンドモードに切り替わるようにモデムを構成しました。ただし、NO CARRIERデータモード中にモデムがその文字列を受信しないことを保証できないため、文字列を使用できません。

リモートハングアップをどのように「聞き取り」ますか?

4

2 に答える 2

3

これは、モデムのハードウェア信号であるCarrier Detect(CD)ラインです。接続が失われたことを知るためにそれを監視する必要があります。Linuxの基本は、このハウツーで説明されています。TIOCM_CARコマンドを使用してioctl()で信号状態を取得します。

于 2012-04-20T23:29:48.273 に答える
0

テキストとしてのテストでNO CARRIERは不十分です。このテキストは、Q&Aサイトであっても、ネット上のサイトで頻繁に発生します。

モデムから来る場合は、改行で囲む必要があります。

さらに、そのテキストを検出した後、を使用してコマンドモードへの切り替えを試みることができます+++。それが機能する場合、接続は維持され、再接続して引き続き使用できます。そうでない場合(すでにそこにい+++て無効なコマンドであるため)、接続は切断されています。

于 2012-05-15T14:15:48.423 に答える