web-dev-qa-db-ja.com

接続が確立されたら、ATコマンドをモデムに送信する方法は?

私はzte3gモデムを持っています。接続の確立には、キャリア提供のダイヤラを使用します。 ppp接続がアクティブになったら、いくつかのATコマンド(例:クエリ信号強度、AT+CSQ)を送信したい)しかし、使用するダイヤラは、コマンドポートである/dev/ttyUSB0ポートをロックしますモデムにATコマンドを送信します。接続がアクティブになったら、コマンドを送信する方法はありますか?


編集:追加のポート/ dev/ttyUSB1も試しました。しかし、ポートはモデムからのランダムなデータで流れています。サンプルを以下に示します。

T^PREFMODE??                                                                    
^PREFMODE:8                                                                     

OK                                                                              
TC                                                                              
^DSDORMANT:1                                                                    

+CSQ:19, 99                                                                     

OK                                                                              
T^SYSINFO                                                                       
^SYSINFO:2,3,0,4,255                                                            

OK                                                                              
TT^SYSINFO?                                                                     
^SYSINFO:2,3,0,4,255  

コマンドを追加してみましたが、出力もありました。しかし、反応は非常に悪いです。ほとんどの場合、私のATコマンドは見過ごされていました。

2
Kumar

デバイスがpppトラフィックに使用されている限り、ATコマンドを同時に実行することはできません。1。このため、最新のモデムはすべて、複数のシリアルインターフェイスを提供します。/dev/ttyUSB0および/ dev/ttyUSB1(または、Linux上のUSBCDCモデムの場合は/ dev/ttyACM0および/ dev/ttyACM1)。

電話機にRS-232互換コネクタ(おそらく追加のIrDAが付いている)があった時代に、3GPPは物理的な制限を克服するために多重化プロトコルを 7.1 として標準化しましたが、PCに特別なドライバが必要だったため、離陸した。今日、USBの固有の多重化機能により、複数のシリアルインターフェイスを提供しない理由はありません(通常は2つしかありません)。

したがって、コメントですでに述べたように、他のシリアルデバイスを使用する必要があります。 /dev/ttyUSB1


1 理論的には、モデムが+++エスケープをサポートしている可能性があります。これにより、接続の進行中にATコマンドを実行できるようになりますが、何らかの方法で実行する必要があります。ダイヤラプログラムを変更して、それらを挿入し、応答を抽出します。

3
hlovdal