So-net無料ブログ作成
検索選択
JH0IMM - 日常業務日誌へようこそ!

マクロを書こう!「繰り返すCQ」 [マクロ実験室]

マクロを書こう!その3 「繰り返すCQ」

今回使うのはSample.txtに収められている「CQ repeating with auto stop」と言うマクロ文です。

前回の「CQ menu」を使って繰り返しCQを出すもので、CQの応答を見つけるとCQを停止し自動的にコールバックする機能を有しています。
今回のマクロ文は長めなので、#comment を使って解説を入れます。


お詫び:
今回のマクロ文は、htmlの特殊なタグのため、横に長い分が画面からはみ出して見えなくなっています。
コピペすれば、隠れて見えない分もちゃんと貼り付きます。
予めご了承ください。
注: ↓ はSample.txt内の見出しです。マクロ文内には記述しないでください。
===================== CQ repeating with auto stop ======================
#comment ここはメニュー項目のリストです。
#define	_tCQ	CQ1, CQ2, CQ3
#define	_tTime	3sec, 4sec, 5sec

#comment マクロ文内のCRコードとTABコードを無効にします。
<%DisableCR><%DisableTAB>

#comment マクロが繰返し中でなかったら、、、
#if !IsRepeat

	#comment コールサインボックスにコールサインが入力されていたら、、、
	#if IsCall
		#comment メッセージを出す。
		#macro <%Message=Callsign already exists in the Call box..., Clear the callsign and run this macro again>
		#comment マクロの実行を中断します。
		#exit
	#endif

	#comment 変数_Intervalが未定義だったら、、、
	#if !IsDefined(_Interval)
		#comment _Intervalに初期値として3をセットする
		#define	_Interval	3
	#endif

	#comment テーブルのインデックスに繰り返し時間をセット
	#define	_iTemp	<%Table=<%String=_Interval>sec, _tTime>

	#comment メニューの項目を作成
	#comment - はメニュー内のセパレータを作ります。
	#comment 0 の所にはマークは付きません。実際に動かしてみると良く分かります。
	#define	_strMenu	0, <%String=_tCQ>, -, _iTemp, <%String=_tTime>

	#comment マーク付きのメニューを表示
	#macro <%MenuB=_strMenu>
#endif

#comment コールサインボックスにコールサインが入力されていないとき
#if !IsCall

	#comment 選択された項目に"CQ"と言う文字列が入っていたら、、、
	#if StrMacro(<%Input$>) >> CQ

		#comment その項目内の数値を_cLineに代入する
		#define	_cLine	<%Format=%d,<%Input$>>

		#comment MMVARIのスケルチが閉じていたら、、、
		#if !IsSQ

			#comment 制御コマンドを出す
			<%ClearTXW><%AutoClear><%TX><%RX>

			#comment ここは前回やりましたね ^ ^)
			<%RepeatText=_cLine,<%RepeatText=3,CQ<%SP>>de<%RepeatText=3,<%SP><%MyCall>><%CR>>
			<%BS><%SP>pse
			#if IsCodeMM
				<%SP>(<%VARITYPE>)
			#endif
			<%SP>k...<%CR>

			#comment 繰返しのを設定する _Interval*1000(ミリ秒)
			<%RepeatTX=<%Format=%d,_Interval*1000>>

		#comment MMVARIのスケルチが開いてたら、、、
		#else
			#comment コールサインを捕獲してコールサインボックス入力する(1秒間)
			<%HisCall=<%Capture>><%Repeat=1000>
		#endif

	#comment 繰り返し時間が選択されていたら、、、
	#elseif StrMacro(<%Input$>) >> sec
		#comment _Intervalに繰返し時間をセットする
		#define	_Interval	<%Format=%d,<%Input$>>

	#endif

#comment コールサインボックスにコールサインが入力されていたら、、、
#else

	#comment ウォーターフォールの右下に相手の国と地域を表示する
	#macro <%WaterMsg=3,<%EntityName=<%HisCall>>/<%Continent=<%HisCall>>>

	#comment TXウィンドーを消去して、応答メッセージを出す
	<%ClearTXW>RRR, <%HisCall> <%HisCall> de <%MyCall> <%MyCall><%CR>
	#if IsCodeMM
		--- (<%VARITYPE>) ---<%CR>
	#endif
	<%HisGreetings=2> <%DearName>, Thank you for your call...<%CR>
#endif

#comment マクロ文終了
<%EOF>
オリジナルのままで十分イケるマクロですね。

出来れば ↓ はマクロ文の最初が良いと思います。(私は先頭に置いてます)
#comment マクロ文内のCRコードとTABコードを無効にします。
<%DisableCR><%DisableTAB>

あと、繰返し時間が3秒、4秒、5秒では短過ぎる感じがするので、私は実用的な時間として5秒、8秒、10秒を設定して初期値を8秒にしています。
もちろん時間は3つだけでは無く、もっと多く設定する事が出来ます。
ここは皆さんのお好きなようにアレンジして下さい。

私は、以前に書いたテキストセーブとPTTポートチェックを、このCQにも入れてあります。
お使いになられるなら、、、
「制御コマンドを出した後」と「ここは前回やりましたね ^ ^)」の間に挿入してください。
#comment	通常運用時に送信しようとした時、受信テキストのセーブが解除されていたらセーブを実行する。
#if !IsMenuChecked(&F,&D)
	<%DoMenu=&F,&D>
	<%WaterMsg=0,受信テキストのセーブを開始しました。>
#endif

#comment	通常運用時に送信しようとした時、PTTポートがEXTFSK以外だったら、PTTポートをEXTFSKに設定する。
#if StrMacro(<%PTT>) != EXTFSK
	<%PTT=EXTFSK>
#endif
使う時は、PTTポートをご自分の環境に合わせて変更してくださいね。



人気ブログランキングへ 73/88 Tks all. kit.
nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Look also QRZ.COM
Tks all 73/88. kit.
メッセージを送る