英語フランス語スペイン語

Ad


OnWorksファビコン

comgt - クラウド上のオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して OnWorks 無料ホスティング プロバイダーで comgt を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド comgt です。

プログラム:

NAME


comgt - オプション GlobeTrotter GPRS/EDGE/3G/HSDPA および Vodafone 3G/GPRS データカード制御
ツール

SYNOPSIS


通信 -d デバイス -ehstvVx スクリプト

OPTIONS


-d デバイス
データカードとの通信に使用するデバイスを設定します。 そうでない場合
指定されてから comgt が試行されます /dev/noz2、 / dev / ttyUSB2 その後 /dev/モデム

-e
シリアル通信エコーをオンにします。

-h
概要ヘルプを表示して終了します。

-s
内部を実行しないでください デフォルト 外部スクリプトの前にスクリプトを追加します。

-t
代替行終端文字 (デフォルトは「0」) に変更します。

-v
詳細モードで実行します。 これにより、実行されるスクリプトがトレースされます。 それは
スクリプトのデバッグに役立つことを目的としています。

-V
バージョン情報を印刷します。

-x
内部スクリプトと外部スクリプトの場合、115200 ボーへの参照はすべて
これは、57600 を好まないデータ カードに便利です。
グローブトロッターEDGEなどのボー。

DESCRIPTION


通信 シリアル通信を確立するのに役立つスクリプト言語インタープリタです。
回線、PCMCIA モデム、GPRS および 3G データカードを介して接続できます。

通信 には、同じタイプの他のユーティリティではほとんど見られない機能がいくつかあります。

特徴
- 2G/3G データカード制御用の事前定義された組み込みスクリプト
- シンプルでBASICのようなスクリプト言語。
- スクリプトのコマンドラインおよびファイルのソーシング。
- 複数の応答の待機。
- waitquit により回線の安定化が可能になります。
- インラインテキストキャプチャ。
- マルチプロセスのサポート: フォーク、待機、強制終了、終了。
- デバッグの詳細出力とログ出力。
- ファイルへのログ記録。
- フロー制御: goto、gosub、return、if、else。
- システムリソースへの影響が少ない。
- 時間コマンドと関数。
- 文字列の操作。
- 環境操作: env()、putenv。
- 外部ユーティリティ システム コール: system、exec。

サポート GPRS & 3G データカード
通信 GlobeTrotter GPRS、EDGE、Combo EDGE、3G、3G EDGE、HSDPA、および
GlobeTrotter Fusion および Vodafone 3G。 PINの設定や情報の表示が可能
PPP 接続が開始される前のデータカードについて。 さらに、
GlobeTrotter および Vodafone 3G/GPRS データカードにはセカンダリ シリアル インターフェイスがあり、これらは
PPP 接続が存在し、データを転送している間、データカードを監視できます。

通信 主に GlobeTrotter シリーズのデータ​​カードで動作するように設計されていますが、
インターフェイスが 3 つとして実装されている場合、他の GPRS または XNUMXG データカードと互換性があります。
または複数のシリアル デバイスまたは USB シリアル デバイスがあり、実装によって制御およびクエリされます。
リストされているもので使用されているのと同じ AT コマンド拡張を備えた Hayes コマンド インターフェイスの
データカード。

使い方 通信
通信 の機能は XNUMX つだけです。スクリプトを実行することです。 これは、いくつかの「標準」のうちの XNUMX つである可能性があります。
内部スクリプトまたは外部スクリプト。 どちらのタイプのスクリプトも同じ方法で呼び出されます。
「標準」スクリプトは以下に組み込まれています。 通信 シリアル接続されたモデムでも動作します。
内蔵モデム、PCMCIA モデム、GlobeTrotter GPRS および Vodafone 3G/GPRS
データカード。 スクリプトには検索の優先順位があります - 1) 内部、2) 動作
ディレクトリ、3)/etc/comgt

内蔵 スクリプト
通信
これにより、デフォルトの内部スクリプトが実行されます。 ランニング 通信 スクリプトを指定せずに、たとえば、
通信 -d / dev / ttyS1 PIN がチェックされ、必要な場合はプロンプトが表示されます。 次は
デバイスが登録されるのを待ってから、信号強度を報告します。 もし
でポートを指定しません -d オプション /dev/モデム と想定されます。 -s スイッチの場合
が使用されていない場合、このデフォルトのスクリプトは外部スクリプトの前に実行されます。

通信 助けます
これらおよび使用可能なその他のオプションをリストします。

通信 info
データカード構成をリストします。

通信 SIG
信号強度を出力します。

通信 REG
登録状態を出力します。

通信 3G
GlobeTrotter 3G/Fusion および Vodafone 3G を 3G ネットワーク専用モード (UMTS/HSDPA) にします。

通信 2G
GlobeTrotter 3G/Fusion および Vodafone 3G を 2G ネットワーク専用モード (GSM/GPRS/EDGE) にします。

通信 3G2G
GlobeTrotter 3G/Fusion および Vodafone 3G を 3G 優先モード (UMTS/HSDPA および
GSM/GPRS/エッジ)。

通信 ゲッジ
このコマンドを使用して、GlobeTrotter EDGE カードおよび GlobeTrotter Combo EDGE カードを初期化します。
他のことをしている。 (ラジオのスイッチが入ります)。

通信 USA
米国での運用の場合は 900/1900 MHz 帯域に切り替えます。 GlobeTrotter GPRS データカードのみ。

通信 ヨーロッパ
ヨーロッパでの運用の場合は 900/1800 MHz 帯域に切り替えます。 GlobeTrotter GPRS データカードのみ。

通信 PIN
SIM PIN ステータスをテストし、環境変数 COMGTPIN を値として使用します。

通信 APN
データカードの APN を COMGTAPN 環境変数に含まれる値に設定します。

カスタム スクリプト
組み込みスクリプトだけでなく、独自のスクリプトを作成することもできます。 次のスクリプトは、Vodafone 3G を設定します。
データカードまたは Option Fusion カードの UMTS モードから GPRS:

#GPRS のみモードを設定します
セットコム115200n81
送信遅延を 0.05 に設定します
待機 1 0.2
「AT_OPSYS=0^m」を送信します
print "GPRS のみモードの設定"

上記のスクリプトを GPRS として保存した場合は、次のように呼び出します。

通信 GPRS

ポートも指定する必要がある場合は、次のようにします。

通信 -d / dev / ttyS1 GPRS

環境パラメータを 通信 スクリプト経由 $env()。

交換 チャット
チャット ppp パッケージ (とにかく Linux 用) に付属するユーティリティです。
文字列の期待送信と送信の組み合わせは、ほとんどの人を ISP などに接続するのに十分です。 その間
チャットの使用方法は非常に簡単ですが、柔軟性はあまり高くありません。 そこです 通信 奪い取る。

通信 の代わりに使用できます チャット 同じ戦略を使用します。 たとえば、pppd 行
読みます:

pppd接続\
´chat -v "" ATDT5551212 CONNECT "" ogin: ppp \
単語: ホワイトウォーター' \
/dev/cua1 38400 デバッグ crtscts モデムのデフォルトルート

使用するだろう コムト、 読む:

pppd 接続 'comgt -s /root/scripts/isp.scr' /dev/cua1 38400 \
デバッグ crtscts モデムのデフォルトルート

isp.scr スクリプトは次のようになります。

「ATDT5551212^m」を送信します
60 まで待ちます「開始:」
「ppp^m」を送信します
60 "単語:" を待ちます
「ホワイトウォーター^m」を送信します

もちろん、このスクリプトを次のようにしてさらに機能的にすることは簡単になります。
話中検出、リダイヤルなどのコードを追加します。

冗長 出力
詳細オプションがオンになっている場合、 通信 標準エラーに関するすべてをレポートします
チャネル。 コマンド ライン (-v) からオンにすると、出力には 4 つのセクションが含まれます。

- コマンドライン引数のアクション
これらは、コマンド ラインから指定されたために実行されるアクションです。たとえば、
通信デバイスのオープン (-d) など... これらを出力するには、-v を指定する必要があります。
最初の引数として。

- 引数のリスト
渡される引数の数とリスト。 これは、たくさんある場合に便利です
環境変数またはコマンドラインの引用符、逆引用符、バックスラッシュを使用すると、
スクリプトが実際に何を認識しているのかはわかりません。

- スクリプトリスト
実行するスクリプトのリスト。 これはデフォルトの内部設定を連結したものである可能性があります。
-s オプションで抑制されている場合を除き、スクリプトとスクリプト ファイル。 どの行も
行番号と文字位置とともにリストされます。

- 実行出力
実行されるコマンドのリスト。 パーサーは現在存在する行を出力します。
正確な位置から行末までを開始します。 複数のコマンド
単一行のグループは複数の出力行を生成します。 詳細な出力が混在する可能性があります。
スクリプト出力 (print、eprint、または lprint。)

次に例を示します。

$ comgt -v -d/dev/cua1 -s blah.scr
comgt 00:18:46 -> 詳細出力が有効になりました
comgt 00:18:46 -> スクリプト ファイル: blah.scr
comgt 00:18:46 -> argc:5
comgt 00:18:46 -> argv[0]=comgt
comgt 00:18:46 -> argv[1]=-v
comgt 00:18:46 -> argv[2]=-d/dev/cua1
comgt 00:18:46 -> argv[3]=-s
comgt 00:18:46 -> argv[4]=blah.scr
comgt 00:18:46 -> ---スクリプト---
1@0000 set com 38400n81 let a=2
2@0025 print "9x",a,"=",9*a,"\n"
3@0051 睡眠 5
4@0059 0番出口
comgt 00:18:46 -> ---スクリプトの終わり---
comgt 00:18:46 -> @0000 set com 38400n81 let a=2
comgt 00:18:46 -> @0017 a=2 にします
comgt 00:18:46 -> @0025 print "9x",a,"=",9*a,"\n"
9x2 = 18
comgt 00:18:46 -> @0051 睡眠 5
comgt 00:18:51 -> @0059 出口 0

プログラミング マニュアル


構文
に使用される構文 通信 スクリプトはかなりシンプルで、BASIC に似ています。 スクリプトというのは、
改行文字で終了する行を含む、トークン化されていない純粋な ASCII テキスト ファイル
(Unix 標準。) スクリプトは、標準のテキスト エディタを使用して作成および/または変更できます。
(vi、vim、joe、pico、emacs、ed、microEmacs) 内の行 通信 スクリプトは次のようになります:

- 空行
- [インデント]レム発言
- [インデント][[:|ラベル] LABEL] [コマンド[引数]] rem 備考
- [インデント][[:|ラベル] LABEL] [コマンド [引数]] [コマンド [引数]]...

インデントに使用される文字は、スペースと表文字です。
rem コマンドは、スクリプト パーサーに行の残りの部分をスキップさせます。
rem コマンドは「#」または「//」と書くこともできます。

ラベルは、小文字、大文字、数字で構成されます。
ラベルでは大文字と小文字は無視されます。

コマンドとその引数はスペースやタブで区切られます。
コマンド グループはスペース、タブ、または改行で区切られます。

式にはスペースやタブを含めることはできません。
これで問題ありません: n=x+76 とします。
これは、n= x + 76 ではありません。
このスペース ^ は let コマンド グループを終了するためです。

エラー 報告
日時 通信 スクリプトエラーを検出すると、すぐに冗長モードがオンになり、ダンプが生成されます。
(dump コマンドを参照)、XNUMX 行でエラーを報告し、実行を停止します。 の
報告される最初の行は実行されているコマンド グループであり、XNUMX 番目の行はコマンド グループが実行される場所を示します。
パーサーは取得し、XNUMX 行目はプログラム カウンターの文字位置を報告します。
エラーと終了コード。

次に例を示します。

$ comgt -vs blar2.scr

blar2.scr スクリプトの場所は次のとおりです。

株式会社
3月XNUMX日
a=58/3とする
$d=「fod」にしましょう
c=1/0 とする
$y4="sdfgsdfgsdfg" にします

トレースとエラーのレポートは次のようになります。

comgt 11:20:15 -> 詳細出力が有効になりました
comgt 11:20:15 -> スクリプト ファイル: blar2.scr
comgt 11:20:15 -> argc:3
comgt 11:20:15 -> argv[0]=comgt
comgt 11:20:15 -> argv[1]=-vs
comgt 11:20:15 -> argv[2]=blar2.scr
comgt 11:20:15 -> ---スクリプト---
1@0000 税込
2@0007 3月XNUMX日
3@0015 a=58/3 とします
4@0027 $d="fod" にしましょう
5@0041 c=1/0 とする
6@0052 let $y4="sdfgsdfgsdfg"
comgt 11:20:15 -> ---スクリプトの終わり---
comgt 11:20:15 -> @0000 inc n
comgt 11:20:15 -> @0007 dec d3
comgt 11:20:15 -> @0015 a=58/3 にします
comgt 11:20:15 -> @0027 let $d="fod"
comgt 11:20:15 -> @0041 c=1/0 にします
comgt 11:20:15 -> -- エラーレポート --
comgt 11:20:15 -> ----> ^
comgt 11:20:15 -> エラー @49、5 行目、ゼロ除算。 (6)

出口 コー​​ド
日時 通信 終了する場合は、「終了コード」を使用して終了します。 それはに返される番号です
成功または失敗を示す呼び出しプロセス。 日常的な Unix では、0 (ゼロ) は
成功とその他すべては、プログラムの作成者が意図するものを意味します。 で
シェル スクリプト、またはコマンド ラインで直接、その内容を確認できます。 $? After
電話した 通信 終了コードを調べます。

例:

#!/bin/sh
comgt /root/bin/call-isp
もし[$? != 0 ]; それから
echo 「おっと! 何か問題が発生しました。」
fi

内部 通信 エラーコードは次のとおりです。

0:特に問題はありません。 どうやら。
1 : 通信デバイスの問題。
2 : コンソール (tty) デバイスの問題。
3 : メモリの問題。
4 : ファイルまたはパイプの問題。
5 : 構文エラー。
6 : ゼロ除算。
7 : 変数の管理ミス。
8 : システムの問題。 (電話できませんでした /bin/sh またはそのようなもの)

コマンド
コマンド : : エイリアス: label
説明 : goto または gosub が分岐するアンカー ポイントを示します。
構文 : キーワードには特殊文字を含めることはできません。
注 : 行の最初のステートメントである必要があります。
関連項目: goto、gosub、return。
例:
:ループ
ゴサブブラボー
print "時刻は ",$time(),"です\n"
スリープ1
ループに行く
ラベルブラボー
「ツーク!\n」を印刷します
return

コマンド: 中止
説明 : comgt が abort() を呼び出し、コア ダンプを生成します。
構文 : 中止
関連項目: ダンプ、終了。

コマンド: cd
説明 : ディレクトリを変更します。
構文 : cd ディレクトリ
注: 変更できなかった場合は、% に -1 が返されます。
注: ディレクトリは文字列であるため、変数になる可能性があります。
関連項目: $cwd()。
例:
CD「ああ」
if % != 0 print "普通に cd できませんでした。\n"

コマンド:閉じる
説明 : 以前に open で開いたファイルを閉じます。
構文 : ファイルを閉じる
関連項目: 開く。

コマンド: XNUMX 進数
説明 : 整数変数の内容を 1 だけデクリメントします。
構文 : XNUMX 進数 x
注: x は a ~ z または a0 ~ z9 です。
注: 「let x=x-1」も機能することに注意してください。
関連項目: 株式会社レット

コマンド: ダンプ
説明 : ゼロ以外のすべての整数変数と変更された文字列をリストします。
説明 : ログ エントリとしての変数 (標準エラー チャネル)
構文 : ダンプ
関連項目: 中止、終了

コマンド:else
説明 : あるいは、最後の「if」テストが false であればコマンドを実行します。
構文 : else コマンド...
関連項目: if
例:
if w<350 print "すごい! 想像してみてください。\n"
else print "ラッシュ・リンボーはでかいデブ野郎です。\n"

コマンド: eprint
説明 : 引数のカンマ区切りリストを標準エラー出力に出力します。
構文 : eprint var,stringvar,"text",...
注 : print と似ていますが、標準エラー ファイル記述子に基づいています。
注: エラー出力は、「2>file」でリダイレクトできます。
注: コマンドライン。
関連項目: 印刷。

コマンド: 実行
説明 : 現在の comgt プロセスを別のプロセスに置き換えます。
構文 : exec "コマンド -args..."
関連項目: システム、フォーク。
例:
#スクリプトが完成したら、cu を呼び出します。
exec "cu -l "+$dev()+" -s "+$baud()

コマンド: 終了
説明 : スクリプトの実行を終了コードで終了します。
構文 : exit exit_code
関連項目: アボート、ダンプ。
例:
:エラー
1番出口
:スメギット
0番出口

コマンド:フラッシュ
説明 : 指定された時間、通信デバイスの DTR を切り替えます。
構文 : flash float_constant
注: float_constant は 1/100 秒まで正確です。
注: モデムがキャリアをドロップするか、コマンド モードに移行します。
注: モデムの設定によって異なります。 ボーレートを0に設定する
注: 一時的には同じ効果があります。
関連項目: sleep、set com。
例:
:切断
フラッシュ0.5
0番出口

コマンド: fprint
説明 : ファイル内の引数のカンマ区切りリストを出力します。
構文 : fprint var,stringvar,"text",...
注: print と似ていますが、以前に開いたファイルに追加されます。
注: オープンによって。
関連項目: 印刷。

コマンド:フォーク
説明 : comgt プロセスを XNUMX つにフォークします。 両方のプロセスが続行されます
説明 : スクリプトを実行しています。
構文 : フォーク
注: % は子プロセスの場合は 0 を返し、新しいプロセス ID は
注: 親またはエラーの場合は -1。
関連項目: wait、kill、pid()、ppid()。
例:
フォーク
% = -1 の場合 goto エラー
if % = 0 子に移動
:親
...

コマンド: 取得
説明 : 通信デバイスから文字列を取得します。
構文 : get timeout "terminators" $string
注: タイムアウトは浮動小数点定数、ターミネータは
注: 受信時に終了する文字のリスト
注:取得します。 ターミネータは、最初に受信したときは無視されます。
関連項目: waitfor。
例:
60「接続」を待つ
if % != 0 goto エラー
2 " ^m" $s を取得
print "接続パラメータ: ",$s,"\n"

コマンド: gosub
説明 : サブルーチンを呼び出します。
構文 : gosub ラベル
注: 現在、comgt は 128 レベルの gosub のみをサポートしています。
注: 通話 (十分です!)
関連項目: :、goto、return。
例:
gosub ルーチン
スリープ1
gosub ルーチン
goto文の終わり
:ルーティーン
「フリムフラム!\n」を印刷します。
return

コマンド: goto
説明 : スクリプト内の別の場所に実行を送信します。
構文 : ラベルに移動
関連項目: :、gosub、return。
例:
:win95
print "今日は Linux を使いたいと思います、ありがとう。\n"
win95に行く

コマンド:hset
説明 : 百単位のタイマーを設定します。
構文 : hset 値
注: このコマンドは、数百秒のタイマーをリセットします。
注: htime の開始値。
関連項目: htime()。
例:
hset 0
:ループ
print "1/100 秒の時間: ",htime(),"\n"
スリープ0.01
ループに行く

コマンド: if
説明 : 条件をテストします
構文 : test_condition コマンドの場合...
注 : テスト条件が true の場合に条件付きでコマンドを実行します。
注: テスト演算子は = (等しい)、!= (等しくない)、
注: <> (等しくない) < (より小さい)、> (より大きい)、
注: <= (以下)、>= (以上)。
注: すべての演算子は整数と文字列で使用できます。
注: test_condition が false の場合、次へスキップします。
注: 次の行。
「その他」も参照してください。
例:
n>30 の場合、「おおお! 羊が多すぎます!\n」 goto エラーを出力します
n=17 の場合、「万歳! 羊は十分にあります\n」と印刷してパーティーに進みます
n<17 の場合、「マレー、羊をもっと買ってください。\n」 goto getmore
if $z < "マーマルーク" goto ...
if 3*a>5+b goto ...

コマンド:株式会社
説明 : 整数変数の内容を 1 ずつインクリメントします。
構文 : inc x
注: x は a ~ z または a0 ~ z9 です。
関連項目: dec、let。

コマンド:入力
説明 : キーボードから文字列を文字列変数に入力します。
構文: $x を入力
注: 入力は ENTER キーでのみ終了します。
注: スペース、タブ、その他の面白い文字はすべて
注: 変数に格納されます。
関連項目: echo を設定します。
例:
print "フルネームを入力してください:"
$n4 を入力

コマンド: kill
説明 : プロセスにシグナルを送信します。
構文 : kill シグナルプロセス ID
注: シグナルとプロセス ID は両方とも整数値です。 と同じ
注: シグナルエイリアスを除く標準の UNIX Kill
注: 受け入れられますが、信号はオプションではありません。
注: 信号が送信できた場合は 0 が % で返され、-1 が返されます。
注: それ以外の場合。
注: Signal 0 はプロセスの存在を検出するために使用できます。
関連項目: wait、pid()、ppid()。
例:
フォーク
p=% としましょう
p = 0 の場合、子に移動
スリープ300
15人を殺す
スリープ1
0人を殺す
if % != 0 print "子は終了しました\n" goto ok
print "子を終了できませんでした!\n"
9人を殺す
スリープ1
0人を殺す
if % = 0 print "子供を殺すことができませんでした!\n" goto エラー
print "子供が殺されました。\n"
:OK
...

コマンド: let
説明 : 変数の代入を行います。
構文 : let x=content
注: x は [$]a0 ~ z9 です。
関連項目: inc、dec。
例:
a=5 とします
b=(時間()-a)+5とします
y7=6809 とします
let z=0%11010111 #バイナリ
let z=077324 #octal
z=0xf5b8 #XNUMX 進数にしましょう
$c="ダニエル" にしましょう
$d=$c+"シュイナード"にしましょう
let $s5="フリンピン・ジェオサファト!"

コマンド: lprint
説明 : 引数のカンマ区切りリストをログに出力します。
構文 : fprint var,stringvar,"text",...
注 : print と似ていますが、verbose がオンの場合はログ エントリのように出力されます。
注: ログは標準エラー出力に送信されます。
関連項目: print、eprint、fprint。

コマンド: 開く
説明 : ファイルまたは通信デバイスを開きます。
構文 : open com device、open com (stdin)、open file FILE
関連項目: 閉じる。
例:
com /dev/cua1 を開きます
セットコム38400n81
ファイル「/tmp/log」を開く
fprintf "これはログです\n"
ファイルを閉じる

コマンド: 印刷
説明 : 引数のカンマ区切りリストを出力します。
構文 : print var,stringvar,"text",...
注: スペースと改行は自動的に追加されません。
関連項目: eprint、fprint、lprint。
例:
b=26 とする
let $c="テキスト変数"
print "定数テキスト ",b," ",$c," time: ",$time(),"\n"

コマンド: putenv
説明 : 環境変数を設定します。
構文 : putenv "var=content"
注: 環境変数は自動的にエクスポートされますが、
注意事項 : 返品はできません。 子プロセスは
注:環境。
関連項目: $env()。
例:
putenv "SCRIPTDIR=/usr/lib/comgt/scripts"
system "dothat" # dothat は環境を読み取ります。 変数スクリプトディレクトリ...

コマンド: rem エイリアス: #, //
説明 : 備考。 行の残りの部分は無視されます。
構文 : 「rem」の後にはスペースが必要であることに注意してください。
例:
#これは発言です
// これもそうです
レム ここはディスコじゃないよ。

コマンド:リターン
説明 : サブルーチンから戻ります。
構文 : リターン
関連項目: gosub。

コマンド: 送信
説明 : 文字列を通信回線 (通常はモデム) に送信します。
構文 : 文字列を送信
注: 改行 (ENTER) は自動的に送信されません。
注: (^m を使用)。
例:
「atdt555-1212^m」を送信します
$g+"^m"を送る
send "時刻は "+$time()+"^m^j"

コマンド: 設定
説明 : 動作パラメータを設定します。
構文 : パラメータ値を設定します
注意事項:

コマンドの説明
------------------------ ---------------------------- ----------------------------
エコーをオン/オフに設定 画面上のキーボード エコー。
set Comecho on|off 受信した文字を画面上にエコー表示します。
set sendlay time_constant 「送信」の文字間の遅延
ignorecase を on|off に設定します。「waitfor」の大文字と小文字の区別。
デフォルト=オン。
set clocal on|off clocal on = モデム信号を無視する
umask モードのファイル モード作成のデフォルトを設定します。
「umask」を参照してください。
冗長オンを設定|オフ 冗長オン = デバッグ出力を有効にします。
com com_params 通信パラメータを設定します。
例: 19200n81、300e71
ボー |||
パリティ |
データビット |
ストップビット |

例:
エコーをオフに設定する
print "パスワード:"
$pを入力してください
「\n」を印刷します
エコーをオンに設定する
コメチョをオンにする
クローカルをオンに設定する
送信遅延を 0.1 に設定します
大文字と小文字を無視するをオンに設定する
セットコム38400n81
set umask 022 # XNUMX 進数 (先頭にゼロ) である必要があります
...

クローカルに関する注意:
キャリア検出後もスクリプトが動作し続けるようにしたい場合
信号がドロップした場合は、clocal をオンに設定してください。そうでない場合は、CD ドロップが原因で発生します。
デバイス回線を閉じます (ハングアップします)。 これは次のような場合に起こる可能性があります。
たとえば、スクリプトが呼び出して接続し、その後切断されたり、
dtr (フラッシュ) をドロップし、再度再接続を試みます。

コマンド: スリープ
説明 : 実行を一時停止します。
構文 : sleep float_constant
注: Float_constant は、次の場合を除き、1/100 秒まで正確です。
注: 100 秒を超える場合、精度は
注:1秒まで低下します。

例:
スリープ0.06
スリープ3
sleep 86400 /* 一日中 */

コマンド: システム
説明 : システム(unix)コマンドを呼び出します。
構文 : システム「コマンド」
関連項目: exec。
例:
:ディレクトリ
print "ディレクトリのリスト ",$cwd(),\n"
システム「ls -l |more」

コマンド: テストキー
説明 : キーボードのキーストロークをテストし、存在する場合は % で 1 を返します。
構文 : テストキー
注: ENTER キーのみをテストできます。 comgt の将来のバージョン
注: さらに多くのことをテストし、キーコードを % で返します。
関連項目: 入力。
例:
n=1 とする
:ループ
print n、「羊... ZZZzzz...\n」
寝ます
株式会社
テストキー
if % = 0 goto ループ

コマンド: 待ってください
説明 : 子プロセスが終了するまで待ちます。
構文 : 待つ
注: 終了した子のプロセス ID は % で返されます。
関連項目: フォーク、キル。
例:
フォーク
p=% としましょう
p=0 の場合は子に移動
p=-1 の場合 goto エラー
print "子供が終わるのを待っています..."
wait
「\n」を印刷します
if %!=p print "PID が間違っています!\n" goto エラー
print "子は完了しました。\n"

コマンド:waitfor
説明 : 文字列のリストの XNUMX つが受信されるまで待機します。
構文 : waitfor timeout "string1","string2","string3"...
注: タイムアウトは浮動時定数です。 待って静かに戻ります
注: 受信した最初の文字列は 0、1 番目の文字列は XNUMX など...
注: タイムアウトの場合は -1。 そうでない限り、デフォルトでは大文字と小文字は無視されます。
注:ignorecase はオフに設定されています。
関連項目: get。
例:
:ダイヤル
「atdt555-4411^m」を送信します
waitfor 60 「キャリアなし」、「話中」、「ダイヤルトーンなし」、「接続」
if % = -1 goto タイムアウト
% = 0 の場合、nocd に移動します
% = 1 の場合はリダイヤルに進みます
% = 2 の場合、エラーが発生します
if % = 3 接続に移動

コマンド : waitquit
説明 : 通信回線が受信を一時停止するまで待機します。
構文 : waitquit timeout Quiettime
注: timeout と Quiettime は両方とも浮動時定数です
注:1/100秒時正確さ。 「嚥下」に便利
注意事項 : しばらくの間、キャラクターが入ってくるか、キャラクターを待っています。
注: 不明なプロンプト。
例:
:クローズコン
「ログオフ^m」を送信します
待機 10 0.5
「はい^m」を送信します

整数 機能
I-Function : アクセス
説明 : ファイルへのアクセス権を確認します。
構文: let x=access("/tmp/file","frwx")
注: XNUMX 番目の文字列には、次の XNUMX つ以上が含まれます。
注: 'f'、'r'、'w'、'x' をそれぞれ確認してください
注: 存在、読み取り、書き込み、および実行の権限。
注: ルート ID では、唯一有効なチェックは「f」です。
注: 他のすべては true を返します。
戻り値: ファイルが存在し、読み取り可能、書き込み可能な場合は 0、
戻り値: 実行可能、またはそうでない場合は -1。
関連項目: 男性 アクセス(2)

I 関数: ボー
説明 : 通信回線の現在のボーレートを返します。
構文: let x=baud()
注意事項 : モデムの接続速度と必ずしも一致するわけではありません。
関連項目: $baud()。

I 関数 : len
説明 : 文字列の長さを返します。
構文 : let x=len($s)
注:「」はゼロです。 現在、文字列の最大長は次のとおりです。
注: 1024 文字。 comgt は文字列オーバーフローを処理しません
注意事項:全くありません。

I 関数 : htime
説明 : スクリプトの開始からの数百秒を返します。
構文: let x=htime()
注: hset で特定の値を設定します。
関連項目: hset。

I 関数 : pid
説明 : 現在のプロセス (comgt) のプロセス ID 番号を返します。
構文: let x=pid()
関連項目: ppid()、fork

I 関数 : ppid
説明 : 親プロセスのプロセス ID 番号を返します。
構文: let x=ppid()
注: フォークされた子が親を検出するために使用できます。
注:プロセス。

I 関数 : 時間
説明 : 1 年 00 月 00 日 00:1970:XNUMX GMT からの時間を秒単位で返します。
構文: let x=time()
注:時差を計算するために使用されます。
関連項目: $time()

I 関数 : val
説明 : 文字列の値を返します。
構文: let x=val($x)
注: 文字列は式ではありません。 [0-9] のみを含める必要があります
注:文字。 comgt の将来のバージョンでは、次のことが可能になります。
注: 式を評価します。 (たぶん) (これは6で書いたものです)
注: 数年前)

I 関数 : 詳細
説明 : 詳細設定の値を返します。
構文: let x=verbose()
注: 0=オフ、1=オン。

文字列 機能
S-Function : ベース名
説明 : パスのベース名部分を返します。
構文 : let $x=$basename($p)
注: $basename("/usr/bin/more")="詳細"
関連項目: $dirname()。

S-Function : ボー
説明 : 現在のボーレートの文字列表現を返します。
構文 : let $x=$baud()
注:「セットコム」で定義
関連項目: baud()、set com。

S-Function : cwd
説明 : 現在の作業ディレクトリのパス名を返します。
構文 : let $x=$cwd()
関連項目: cd。

S-Function : 開発
説明 : 現在の通信デバイスのパス名を返します。
構文 : let $x=$dev()
注: 「-d」コマンドライン引数または「open com」によって定義されます。
関連項目: open com.

S-Function : ディレクトリ名
説明 : パスのディレクトリ名の部分を返します。
構文 : let $x=$dirname($p)
注: $dirname("/usr/bin/more")=/ usr / bin"
関連項目: $basename()。

S-Function : env
説明 : 環境変数の内容を返します。
構文: let $x=$env("HOME")
注意 : 存在しない変数は空の文字列を返します。
関連項目: putenv。

S 関数 : XNUMX 進数
説明 : 値を XNUMX 進数表現に変換します
構文 : $x=$hex(x) にしましょう
注: a ~ の文字は小文字で、前に「0x」は付きません。
関連項目: $hexu()、$oct()。

S-Function : hexu
説明 : 値を XNUMX 進数表現に変換します
構文 : $x=$hex(x) にしましょう
注: 文字 A~F は大文字で、前に「0x」は付きません。
関連項目: $hex()、$oct()。

S関数:hms
説明 : 秒数を時刻文字列に変換します。
構文 : $x=$hms(x) にしましょう
注:形式は「HH:MM:SS」です。 クロノメーター表示に便利
注: 「time()」とともに使用します。変数をインクリメントしようとしないでください。
注: 「スリープ 1」を使用して毎秒。 (ISP スクリプトの例を参照)
注: 99 時間 59 分以降、形式は「HHH:MM:SS」になります。
注:59秒...
関連項目: time()。

S-Function : 左
説明 : 文字列の左側の部分を返します。
構文 : let $x=$left($s,l)
注: $s=ソース文字列、l=長さ
注: l は文字列の長さより小さくなければなりません。
関連項目: $right()、$mid()。

S-ファンクション : 中
説明 : 文字列の中間部分を返します。
構文 : let $x=$mid($s,s,l)
注: $s=ソース文字列、s=開始、l=長さ
注: s は文字列の長さより小さくなければなりませんが、l は文字列の長さよりも短くすることができます。
注: の右側を返すための巨大な数値 (9999)
注: 末尾までの文字列。 文字列の最初の文字は
注: 位置は 0 ではなく 1 です。
関連項目: $right()、$left()。

S-Function : oct
説明 : 値を XNUMX 進数表現に変換します。
構文: let $x=$oct(x)
関連項目: $hex()、$hexu()。

S-Function : 右
説明 : 文字列の右側の部分を返します。
構文 : let $x=$right($s,l)
注: $s=ソース文字列、l=長さ
注: l は文字列の長さより小さくなければなりません。
関連項目: $left()、$mid()。

S-Function : rpipe
説明 : システムのパイプされたコマンドから最初の行を返します。
構文: let $x=$rpipe("/ bin / ls |grep myfile")
注: head、tail、grep、などと一緒に使用しない限り、あまり役に立ちません。
注意事項:etc...
関連項目: システム。

S-Function : 時間
説明 : 24 文字のローカル時刻文字列を返します。
構文 : let $x=$time()
関連項目: time()。
注: 時刻は次の形式です: Mon Apr 8 14:21:22 1996
012345678901234567890123
1 2

S-Function : tower
説明 : 小文字の文字列を返します。
構文 : let $x=$to lower($y)

S-Function : トッパー
説明 : 大文字の文字列を返します。
構文 : let $x=$toupper($y)

ホイール試乗 演算子
演算子 説明 結果の例
= 1+2=3 の場合に等しい はい
!= 1+2!=3 の場合は等しくない
<> 等しくない場合 1+2<>3 いいえ
> より大きい if 1+3>3 はい
< より小さい if 1+3<3 いいえ
>= 以上の場合、3>=3 はい
<= 以上の場合、2<=3 はい

文字列は同じ演算子を使用して比較できます。

"aaa" < "aab"、"aaaa" > "aaa"、"テスト" != "テスト"、"One" = "One"、
「A」 > 「a」、「ファンブル」 <= 「燻蒸」、「茶番」 <> 「コメディ」

Note 「setignorecase on」は文字列比較には適用されません。

表現 演算子
演算子 説明 結果の例
+ 足し算 a=2+2 4
+ 連結 let $b="aa"+"bb" "aabb"
- 引き算 e=2-5 -3 とする
* 乗算 f=11*2 22 とする
/ 除算 g=34/11 3
& ビットごとの AND にして h=42&7 2
| ビット単位の OR a=42|5 47 とします
^ ビット単位の XOR let a=42^7 45

混合式の例:

#00:00:00 からの秒数を返します
let $t=$time() #スナップショットを撮ります。
let a=(val(mid$($t,11,2))*3600)+(val(mid$($t,14,2))*60)+val(mid$($t,17,2))
#comgt の式のため、余分な括弧のセットに注意してください。
#評価者は脳死状態です。
#たとえば、5-2+1 では 4 が得られるはずですよね? まあ、によれば、
#getvalue() では、実際には 2 が返されます。
#右から左に。
#したがって、5-2+1 を正しく評価するには、(5-2)+1 を使用します。 使用している場合
#単純な XNUMX 要素の計算なので、心配する必要はありません。
#5-2で3が得られます。

#連結 (cu を呼び出す)
exec "cu -l "+$dev()+" -s "+$baud()"

#テスト状態で
if a+c > strlen($c) goto toomuch

#文字列比較
$t=$mid($time(),11,8) にしましょう
if $t > "19:59:59" print "それには遅すぎます!\n" goto toolsate
if $t < "08:00:00" print "早すぎます!\n" 早すぎます
if $t = "00:00:00" print "なんてことだ! トゥインキーの時間だ!\n"

KNOWN 商品特徴


getvalue() パーサー。 笑えるのでこのままにしておこうと思います。 -
[メール保護]

ENVIRONMENT 変数


COMGTPIN - PIN スクリプトで使用する SIM の 4 桁の PIN COMGTAPN - 書き込み先の APN
APN スクリプトによって使用されるデータ カード。

作者


ダニエル・シュイナード[メール保護]>オリジナルを書きました ディーコン ユーティリティ。

ポール・ハードウィック[メール保護]> ビルド済みの場合、最新のコンパイラ用に更新しました。
スクリプト機能をテストし、GPRS および 3G データカードに対してテストしました。

マーティン・グレゴリー[メール保護]> のオリジナルのマンページを作成しました 通信 ディーコン
ドキュメントとパッケージ化された 通信 配布用。

歴史
ダニエル・シュイナードが大部分 (90%) を執筆 ディーコン 彼が Unix アプリを始めた 1989 年に遡ります。
技術サポートは主にモデムによって顧客システムに提供されます。 彼はそれらすべてを入力するのにうんざりしていた
彼が cu を使用するたびに、パスワードと面白い通話料金コードが表示されました。 また、彼が勤めていた会社は、
通話時間と推定コストを記録するシステムが必要でした。 したがって ディーコン 生まれました。
1996、XNUMX 年後 (XNUMX 年)、彼は pppd を使用して ISP サイトに接続していました。 彼がいた
多かれ少なかれ満足しています チャット しかし、フロー制御と複数の応答チェックが欠けていることがわかりました
「あっと…」より。 彼は、「キャリアなし」、「ダイヤルトーンなし」、そして
"忙しい"。 彼はそう思っていたのに、 チャット おそらくいつか彼が見つけたときに強化されるだろう
古い 45M テープの XNUMX つにある dcon.c を Linux ボックスでコンパイルしようとしたところ、
見よ、そうなった。 最終的に、彼はそれにいくつかのことを追加しました (キル、フォーク、待機、1/100 秒)。
回)、そのままにしておきました。

数年前、ポール・ハードウィックはこのプログラムを発見しました。 ディーコン 0.97、 最後に変更されたのは 1996 年です。
このプログラムの目的は、Linux シリアル ポートを制御するスクリプトを実行することでした。 の
実装は彼が Windows 用に書いたものと非常によく似ていました。 とにかく、むしろ
再発明するよりも、彼は著者のダニエル・シュイナードに連絡し、再利用の許可を求めました。
コード。 幸いなことに、彼は許可を与え、という基本的だが便利なユーティリティを提供してくれました。 通信 ました
作成した。 ポールは、今日のエンジンと互換性を持たせたこと以外は、エンジンの功績を何も考えていない
コンパイラ。 基本的には ディーコン 再パッケージ化された。

October 20, 2006 通信(1)

onworks.net サービスを使用してオンラインで comgt を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad