2012年7月7日土曜日

AR-3000Aの自動メモリ入力ツール

AR-3000Aの自動メモリ入力ツール


<1.概要>

バンク毎に、CSVファイルに記憶した周波数データを、Tera Termのマクロ機能を使って、自動でAR-3000Aに転送するツールです。


<2.CSVファイル準備>


図2-1の構成で、CSVファイルを作成します。




図2-1 CSVファイル構成

 CSVファイルの各列の意味を表2-1に示します。

表2-1 各列の説明





CSVファイルのセルは“文字列”の設定にしてください。
シートの左上(行と列の交わるところ)で右クリックして、“セルの書式設定”を選択します(図2-2)。



図2-2 セルの書式設定選択

そして、“表示形式”- “分類” で、“文字列”を選択して、OKボタンを押します。(図2-3)


図2-3 “文字列”選択 

その上で、各列のデータを設定して、CSVファイルとして保存します。

<3.パソコンとAR-3000Aとの接続>

パソコンとAR-3000とはシリアル(COM)で接続します。
パソコン側はDsub 9Pinメス、AR-3000側はDsub25Pinオスのストレートケーブルで接続します。(図3-1)




図3-1 Dsub9Pinメス - Dsub25Pinオス ストレートケーブル

<4.Tera Termの起動とAR-3000との通信確認>

Tera Termを起動します。(図4-1)



図4-1 Tera Termの起動

起動したら、パソコンのCOM設定を行います。(図4-2、4-3)



図4-2 シリアルポート設定選択



図4-3 シリアルポート設定内容


図4-3で、“ポート”は使用しているCOMポートの番号を入れてください。
ボー・レートは、AR-3000の設定によって、“4800”か“9600”を設定します。
データは“8bit”、パリティは“none”、ストップは“2bit”を設定してください。

この設定の後、AR-3000の背面にある、スライドSWをON(REMOTE)にします。(図3-4)




図4-4 AR-3000の背面SW

接続に問題が無ければ、AR-3000からオープンメッセージが送信されます。(図3-5)




図4-5 オープンメッセージ

 <5.マクロ起動とデータ転送>

CSVデータをAR-3000に転送するマクロを呼び出します。(図5-1,5-2)



図5-1 マクロ呼び出し



図5-2 マクロファイル選択
そうすると、ファイル選択窓が開くので、転送データのCSVファイルを選択します。(図5-3)




図5-3 CSVファイル選択

AR-3000への転送が始まると、パソコンからの転送結果が、Tera Termの画面に表示されます。正常終了すると、“正常終了”と表示が出ます。異常終了した場合は“異常終了”と表示されます。(図5-4)



図5-4 転送中、転送終了画面

これで、AR-3000へのデータ転送は完了です。

転送が終了したら、AR-3000の裏面のスライドSWをOFFにすれば、AR-3000のパネルから操作が出来るようになります。

------------------------------------------------------------------------------
マクロファイル、CSVファイルはこちらにアップしてあります。


https://docs.google.com/open?id=0B_-iH9ny-AE-NlU1WW5IY2F6LWs


このファイルがダウンロードできない場合は、下記のソースコードをコピーしてください。
-------------------------------------------------------------------------------

<マクロソースコード>
以下のコードを拡張子”TTL”のファイルとして保存して、Tera Termから呼び出ししてください
-------------------------------------------------------------------------------
 filenamebox 'Memory File selection' 0

if result<>0 then
    ; file name 取得完了
    ;DBG messagebox inputstr 'file name'
   
    getdir motodir
    dirname dir inputstr
    setdir dir
    ;DBG messagebox dir ''
    basename fname inputstr
    ;DBG messagebox fname ''
    fileopen fhandle inputstr 0
   
    ;DBG messagebox fhandle 'file handle'
    if fhandle <>-1 then
        ; file open 成功
        chData = '0'
        :loop
            filereadln fhandle line
            ;DBG messagebox line inputstr
            if result goto readEnd
            strsplit line ',' 9
           
            ; comment
            strscan groupmatchstr1 ';'
            if result = 0 then
                ; bank No
                strcompare groupmatchstr2 chData
                if result <> 0 then
                    chData = groupmatchstr2
                    send chData
                    send 'X'
                    ;CR
                    send #13
                    ;LF
                    send #10
                   
                    ;応答('>')待ち
                    timeout = 1
                    wait '>'
                    if result = 0 goto errorEnd
                endif
               
                sendData = ''
               
                ; ch No
                strcompare groupmatchstr3 ''
                if result = 0 goto loop
                strconcat sendData groupmatchstr3
                strconcat sendData 'M'
               
                ; step
                strcompare groupmatchstr4 ''
                if result <> 0 then
                strconcat sendData groupmatchstr4
                strconcat sendData 'S'
                endif
               
                ; ATT
                strcompare groupmatchstr5 ''
                if result <> 0 then
                strconcat sendData groupmatchstr5
                endif
               
                ; frequncy
                strcompare groupmatchstr6 ''
                if result = 0 goto loop
                strconcat sendData groupmatchstr6
               
                ; mode
                strcompare groupmatchstr7 ''
                if result = 0 goto loop
                strconcat sendData groupmatchstr7
               
                send sendData
                send 13        ;CR
                send 10        ;LF

                ;応答('>')待ち
                timeout = 1
                wait '>'
                if result = 0 goto errorEnd
               
                ;アンサーバック
                send groupmatchstr3
                send 'Z'
                send 13        ;CR
                send 10        ;LF

                ;応答('>')待ち
                timeout = 10
                wait '>'
                if result = 0 goto errorEnd
               
            endif
            goto loop
        :readEnd
        dispstr '正常終了'
        goto end
       
        :errorEnd
        dispstr '異常終了
        goto end
       
        :end
        fileclose fhandle
    endif
   
endif
--------------------------------------------------------------------------------




以上

0 件のコメント:

コメントを投稿