2017-01-02 17 views
0

私はBGS2-Wモデムを使用しています。私はモデムにATコマンドを書いているCアプリを持っています。モデムの応答は、\ r \ n OKまたは\ r \ n \ nのように見えます。 \ rまたは\ nを受け取ったときはいつでも、私はモデムの終わりが応答したと考えます。GSMモデムによるバイナリファイルのダウンロード

問題HTTP GETでバイナリファイルをダウンロードしようとしていますが、バイナリファイルに '\ r'と '\ n'を含めることができます。これはモデムの応答を解析しようとすると問題を引き起こします。

誰でもこの問題が発生しますか?ありがとう。

答えて

0

this fileの237ページから何かが見つかった場合、HTTPダウンロードの例があります。

応答の1行目からAT^SISR = 4、[reqLength]を使用すると、のデータの長さがになります。ここからは、このデータ長を使用しますが、\ rや\ nは終了マークとして使用しないでください。

208ページ以降、^ SISRの説明があります。

0

これらの文字は、バイナリファイル、ASCIIファイル、またはhttpメッセージのヘッダーの両方で正当なデータ交換が行われる可能性があるので、\ rや\ nはモデムの答えと考えるべきではありません。
AT + RECVまたはモデムがデータを受信するために使用する同様のコマンドは、受信したデータの量を指定するフィールドを持っていなければなりません。
フィールド全体を解析することに重点を置き、期待されるデータ内の特殊文字を無視します。

1

一般に、ほとんどのモデムには、コマンドモードとデータモード(ソース:https://en.wikipedia.org/wiki/Command_and_Data_modes_(modem))があります。ホストがデータモードを起動するコマンドを送信すると、モデムは「CONNECT」応答を送信し、データをそのまま解釈します。あなたのCコードを書いている間、同じ概念を使用してください。あなた自身のコードを書くことは良いことですが、このようなものの大部分を占めるオープンソースライブラリを見つけることをお勧めします。

+0

* "モデムがデータモードを使用したいとき..." * - モデムに依存しません。コマンド対データ(別名トランスペアレント)モードは完全にホストの制御下にあります。それ以外の場合、あなたの答えは3つの現在の回答の中で最も有益です。 – sawdust

+0

合意。それに応じて答えを編集 – manishg

関連する問題