QUECTEL GSM Modem M95-開発経験
はじめに
私の投稿の最初の行では、GSMモデムに関する以前の経験がなかったことを正直に認めたいと思いますが、運命と公式な必要性
の意思により、
QUECTELの公式代表であるSatronのサンクトペテルブルク事務所のウェブサイトに出会いました。 パラメータに応じて私に適した別のハードウェア-GSMモデムとGPS GPS受信機を探して、このリソースを探しました。 データシートやその他の有用なファイル形式の製品情報は、登録後にのみ取得できるようになりました。 そうでした。
1日で確認を受け取りましたが(ほとんど待ちきれないほど)、最初にアップロードしたのは、興味のあるモジュールのドキュメントでした。 翌日、未知の番号から電話を受けました。心地よい女性の声が、サトロンの会社のマネージャーが自分の製品への私の関心について電話していたと発表しました。 電話連絡先の端にいる少女は、私の身分は何なのかと尋ねました-個人または法人です。 彼は質問でこの質問に答えました-あなたはどんな目的に興味がありますか? そして、私が基本的に予期していなかったことが起こりました。少女は、私が法人を代表する場合、貨物が支払われれば、選択した製品がテストのために送られると説明しました。 当然、私は同意しましたが、女の子のマネージャー自身が要求されたパラメーターに応じて私に製品を勧めました。 願いは、SMS-kiと音声通信を送信できる、最も原始的であるが非常に安価なGSMモデムを入手することでした。 それに応えて、製品のリストが私に勧められ、モデムの要求に応じて、かなり新鮮なM95製品が「プリミティブ」の価格で提供されました。 当然、私は製品の価格を提示しません。これらはSatronとの関係ですが、モデムや他のモジュールはできるだけ早く、いくつかのコピーで送られたことに注意してください。
すぐに、このアプローチはやや奇妙であるように思われました。なぜそれはそんなに寛大なのでしょうか。 しかし、さらに私には多くのことが明らかになり、会社の友好的なアプローチ、高品質の24時間サポート、および女の子マネージャーの素晴らしい仕事の質が明らかになりました。
事実は次のとおりです。
起こらない! コンポーネントのロシアのサプライヤーとの接触での私の経験はすべて叫んだ-これは、腐敗した「スラッジ」のセットアップと次の「スチーミング」です。 しかし、M95モデムのドキュメントを初めて知ったとき、奇妙な疑念が生じました。中国のエレクトロニクス業界の厚かましい代表者は、著名なモンスターと比較して非常に破壊的な特性を備えていましたが、価格...これはまったく別の話です。
そのため、モデムの使用経験がまったくなく、宣言された特性への準拠をテストおよび検証する必要があるため、Altium回路を4.4ボルトパルスジェネレーターで構成し、モデムをヘッドフォンやマイクジャックなどの必要な周辺機器で計量する必要がありました、ボタンのオン/オフおよび出現オフ。 アンテナはAMMAP 003で使用されました。デザイン全体がFT232LRを介してパーソナルコンピューターのUSBポートと調整され、FT232LRポートの電力はモデム自体の出力(2.8V)から取得されたため、レベルについて合意する必要はありませんでした。
最初の開始-ポートが検出され、CommTrackプログラムでポートを構成します(生の場合はタスク専用に作成されました)。もちろん、「AT」コンソールウィンドウを入力して押します。 いいね! モデムがエコーしました:
AT
わかった
その後、混乱が始まりました。 最初は、いつものように、「友人への電話」(つまり、自分)を手配することにしました。 しかし、モデムは着実に「NO CARRIER」と応答しました。 ドックの学習中に不注意が影響を受けました-音声接続とデジタル接続を呼び出す場合に違いがあることがわかりました。 番号「;」を取得する必要がありました。 残念なことに、私は連絡担当者に尋ね、エンジニアから非常に簡潔でわかりやすい形で応答を受け取りました。
だから、私は自分の携帯電話で自分に電話をかけている、私は電話を見る。 私は電話を確認し、自分と話そうとします-沈黙。 アナログ入出力のチャネルを構成する必要があることがわかりました。 モデムにコマンド「AT + QAUDCH = 2」を送信しています。
通り抜けようとする次の試みは成功し、私はなんとか電話とヘッドセットで自分の声を聞くことができました。 信じられないほど高い音質とスピーチの明瞭さ、エコーがないこと、安価な通信のその他の特殊効果に驚いています。 マイクの音量と感度は広範囲にわたって調整可能でしたが、工場設定が最も成功しました。
SMS-kamiとの音声通信で少し遊んで、端末とGSMの兵器庫から必要なコマンドセットを習得したので、GPRS接続の確立に進みました。
IPスタックと使いやすさ
当然、接続プロファイルの設定の経験がある人は、リモートサーバーとの接続を確立するのに役立ちました。また、特定の次元の応答時間とデータレートについてモデムをテストするローカルタスクが「テンプレートに従って」実行されました。 まだM95に出会っていない人のために、VB.NETでプログラムのコードスニペットを提供します。
コードスニペットPrivate Sub RunScript() Dim sRet, sTemp As String Dim timeStart As Date Dim timeStop As Date Dim nTime As Double = 0 Dim nCount As Integer Dim tSpan As TimeSpan Dim serialStatus As Boolean = SerialPortA.IsOpen Dim seansOpen As Boolean = False Dim sBlock440 As String = "operations$öûâðëéîð÷ñéðöâéîðó2837âí2àãïëöãéïàöëäî3ïðàëîöíóïàùã34ïàùãà4óíïùöãíï4àêãùíöïùøãí4ïàùãöóåïàêãöù4ïàùãø4íïàùöã4íïàêùö6å4ê6åïöøãíàïö4ùïåàöùàïöùãà4ïöùã47ïåàêùöïù4ãïàøöãàï4ùãï4àùãöïàùöãï4àøùã6ï4àùãö4ïåàøãöï64àøã46ïà6öïàø76ö4ïàäöãàïíöãøíïuiowq3ygrowg3fowrtgowufygbow4gfowueyfgco6wt4go68gfrwkuyfcgwkgy4ckuw4ygfouwygou4fgrfouwf4gow4grfw4yofgowu4ygfou4fgwo4uygfwy4gfow4g4gfowufgou4rgyfwuyfguwygf4uyg4f6gfiu4gklejhdkwehfewhrkferhiuht43iuhiur"
テストルーチンのこの退屈な部分では、サーバーアドレスとプロバイダーAPNがない特定の例を使用して、接続を確立し、プロファイルを構成する一連の手順を簡単に説明します。 これが問題にならないことを願っています。
モデムは、電話接続が切断されている「デッド」ゾーンへの訪問を伴う接続モードで市内を長距離移動することによりテストされました。 驚くべきことに、860以上のパケットのうち、失われたのは2つだけで、接続はもちろんのこと、IPセッションはまったく中断されませんでした。 モデムは、よく知られている2番目のバージョンのBGS2モデルと比較してテストされました。 テスト結果は、通信の安定性とM95に有利な為替レートの点で、Cinterion BGS2のクラッシュ障害を示しました。 両方のモデムはラップトップのUSBポートから給電され、同じAMMAP 003アンテナを備えていましたが、BGS2には1000mFのパワーコンデンサが必要であり、M95には100マイクロファラッドの費用がかかります。 同時に、M95の平均消費電流はBGS2の消費電流よりも46%低くなりました。 非常に印象的な結果です。M95のテストプログラムを書くのに2日かかり、BGS2に4回「スウェット」しなければならなかったことを思い出すと、明らかな利点があります(少なくとも私にとって)。
一般に、M95モデムとしてのQUECTEL製品での最初の経験は、抽象的な巧妙さや古い標準への準拠なしに、開発者専用に作られた製品に初めて出会ったときに非常に満足しました。
はい、M95を唱えることを許してくれたHabrの親愛なる読者は私を許しますが、実際にはそのようなものを見たことはありません。提出されていません!
ドライコード
私の成果を使用したい人のために、上記の例で使用したクラスとフォームコードのフルバージョンを含む、粗雑で実行可能なモジュールコードを提供します。
クラスを含むモジュールのコード: Imports System Imports System.Object Imports System.Collections Imports System.Threading.Thread Imports System.IO.Ports Module ScriptRun
/ : #Region "Import Namespace" Imports System Imports System.Text Imports System.IO Imports System.IO.Ports Imports System.Threading Imports System.Threading.Thread Imports System.Collections Imports System.Object Imports System.ComponentModel Imports System.Runtime.InteropServices Imports System.Runtime.ConstrainedExecution #End Region Public Class CommCare #Region "Declaration" Shared SerialPortA As SerialPort Shared _continue As Boolean
! — !