シリアルはWINで行こう2


ソフトの説明

【ソフトの概要説明】
このソフトはRS232Cをデバックするツールです。
表示がラインモニター風でとても見やすいです。
シリアルはWinで行こうのVer2です。
シリアルはWinで行こう2はVC++2010で構築した物です。

【画面の説明】

画面の上にはメニューバー、下にはステータスバーがあります。
メニューには下記のようになっています

<ファイル>
LOGファイルの保存
LOGファイルの読込
アプリケーションの終了

<表示>
画面クリア
スクロールアップ
スクロールダウン
最上位
最下位
スクロール設定

<Com設定>
ポートの設定
シリアル設定
DCB&TIMEの設定
状態表示

<送信>
入力文字送信
設定文字送信

<環境設定>
環境設定
Setup of language

<ヘルプ>
バージョン情報
Ken-Create
ヘルプ

ステータスバーは下記のようになっています。
COMの設定の表示
COMポート番号
SP=速度
DB=データービット
PB=パリティビット
SB=ストップビット
Flow=XON(XonXoff制御)DTR(DTR制御)

BufferSizeとは
送受信された文字を記憶するバッファーサイズ
(現在の書き込みポイント)/(バッファーの最大値)

Scrollとは
送受信された文字を記憶されたのを
スクロールさせて表示出来ます。
そのスクロールの位置の事。
0=スクロールなしで最下位を表示
数字が多くなるほど最上位を表示します。


画面は下記のように表示します。
送信文字と受信文字がラインモニターのようにわかりやすい表示である。
READが受信した文字でSENDが送信した文字にを表示します。

送受信文字はバッファに記憶しますが、
サイズは256×512文字記憶出来ます。
これ以上になるとバッファの半分を切捨てします。
画面に表示されるのは一部ですが
「PgUP」・「PgDn」のキーを押すとスクロールして
全バッファの文字列が表示します。





画面はテキスト風にも表示します。
送信文字は表示せず、受信文字のみ表示し、CRを受信すれば、改行します。
この設定は、環境設定にて、テキスト風または、ラインモニター風と切り替えが出来ます。


2ch使用した場合、1chは黒文字で2chが赤文字です。
送信用ダイアログも複数表示可能です。





【LOGファイル】

バッファに記憶された送受信の文字列はファイルに保存出来ます。
このファイルは特殊形式で保存します。
保存したファイルはこのアプリで開いてください。




【表示】


送受信文字はバッファに記憶しますが、
サイズは256×512文字記憶出来ます。
これ以上になるとバッファの半分を切捨てします。
画面に表示されるのは一部ですが
「PgUP」・「PgDn」のキーを押すとスクロールして
全バッファの文字列が表示します。

又、メニューの項目でもスクロールします。
スクロールのチッピも下記の設定画面で変更出来ます。



100=100文字分スクロールします。
200=200文字分スクロールします。
400=400文字分スクロールします。


画面クリアを実行すると
画面もクリアされますが、バッファもクリアします。

最上位をクリックすると
バッファの最上位(一番古い文字列)へスクロールします。

最下位をクリックすると
バッファの最下位(一番新しい文字列)へスクロールします。


【Com設定】

<ポートの設定>


使用できるポート番号がコンボBOXに表示します。
このコンボBOXから使用するComポートを設定します。
Comポートが1つも無い場合は、ポートの列挙に長い時間を使います。
よって、10秒以上列挙している場合は、メッセージを出すようにしました。
さらに10秒列挙する場合はYes、中断する場合はNoにして下さい。
使用できるポートはデバイスマネジャーでも確認出来ます。


<シリアル設定>

CommConfigDialogを使用しています。

ここでは、ボーレート・データービット・パリティ
ストップビット・フロー制御を設定します。

この設定はつなぐ相手側と合わせて下さい。


<DCB&TIMEの設定>


Win32のAPI関数でDCB構造体と
COMMTIMEOUTS構造体があります。
その設定をこの画面で設定出来ます。

むやみに設定すると、送受信出来なくなります。
設定する場合は、WindowsAPI関数のDCBと
COMMTIMEOUTSを熟思した後に設定して下さい。

通常はシリアル設定で十分です。



<状態表示>


Win32API関数のClearCommErrorで取得した
状態表示とエラー内容を表示する画面です。
制御線のモニタと強制ONOFFも可能です。


【OPEN処理】

ita.exeはアプリが起動と同時に
ComポートがOPENしていましたが、
Ita2.exe Ver2.05移行からは、
起動時はOPENしていません。
COMポートの設定を行ってから、
メニューからOPENさせて下さい。
最近パソコンは、Comポートが無いパソコンが多く
Comポートが無いパソコンでアプリを起動した際に
固まっているように思われるため、この操作方法に変更しました。


【送信】


<入力文字送信>


送信文字はHEXでもASCでも送信できる。
スタート文字・ストップ文字・終了コードも設定できる。
チェックサムも自動で出来る。
HEX送信ボタンを押すと入力した文字を
「”」で区切っていればASC文字、そうでなければ、
2文字をHAX文字に変換して送信します。
ASC送信ボタンを押すと入力した文字を
すべてASC文字として送信します。
チェックサムの結果はASC・HEXどちらでも設定可能。
一回送信すると下のBOXに送信履歴が残り、
再度送信する時はその履歴をクリックすれば出来ます。
決まった文字ならテキスト編集して選択送信出来る。
一度に最大256文字を送ることが出来る。

送信する文字は下記のようになります
[スタートコード1Byte]+[入力文字]+[ストップコード1Byte]+
[サムチェック1&2Byte]+[終了コード1Byte]

ch1またはch2のボタンを選んでから送信して下さい

<設定文字送信>


mdata.txtに書かれた文字を画面に表示します。
CR・LFで区切った文字が1行になります。
1行は最大256文字です。
行は最大20行表示します。

送信したい文字をクリックし選択してから
ASC送信を押せば、ASC文字として送信します。
HEX送信を押せば、HEX2文字をASC文字に変換して送信します。
「”」で区切っていればASC文字として認識します。

ch1またはch2のボタンを選んでから送信して下さい


【環境設定】


<環境設定>
1・スクロールの幅の変更
これはスクロールの文字数を設定します。

2・チェックサムの英文字を小文字又は大文字に設定します。

3・画面表示をラインモニター風とテキスト風に切り替えが出来ます。


<Setup of Language>
これは言語の設定です。

メニューやボタン等の文字を以下の言語に変更します。

日本語
英語
韓国語
中国語(簡体語)



【マクロ命令】
MACRO文について
  MACROは4文字のコマンド文字とパラメーター文字により送信・受信などの
  シリアル操作を自動でできるものです。
  又、記憶できる文字列のメモリがあります。
  文字列メモリはMDATAと呼び、00〜99番地まであり、一つの番地で256文字記憶できます。
  MACRO文はCR(改行)でひとつのコマンドになっています。
  コマンド文字とパラメーター文字間にはスペースを入れて下さい。   パラメーター間もスペースを入れて下さい。

【コマント一覧表】

 <送信コマンド>
  SEND 
文字を指定してCH1で送信す

     概要:パラメーターに設定された文字を送信します。
     コマンド:SNED
     パラメーター:送信文字(先頭から6番めに記入)

     送信文字は0〜FのHEX数値2文字で一組のASCに変換して送信します。
     文字をそのまま送るときは“ ”又は‘ ’を前後に付ければHEXでなく
     ASCそのままで送信します。
     例 SEND 02"123455667"030D
     パラメーター2に設定された文字「SX “123455667”EX CR」を送信します。


  MSED M_DATAの内容をCH1で送信する

     概要:パラメーターに設定されたMDATAの番号の文字を送信します。
     コマンド:MSED
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入

     例  MOVE 00 02"ABC"030D
        MSED 00
       MDATAの番地00にパラメーター文字「SX”ABC”EX CR」をセットし,
       MDATAの00番地の文字列を送信します。


  SED2 文字を指定してCH2で送信す

     概要:パラメーターに設定された文字を送信します。
     コマンド:SND2
     パラメーター:送信文字(先頭から6番めに記入)

     送信文字は0〜FのHEX数値2文字で一組のASCに変換して送信します。
     文字をそのまま送るときは“ ”又は‘ ’を前後に付ければHEXでなく
     ASCそのままで送信します。
     例 SED2 02"123455667"030D
     パラメーター2に設定された文字「SX “123455667”EX CR」を送信します。


  MSD2 M_DATAの内容をCH2で送信する

     概要:パラメーターに設定されたMDATAの番号の文字を送信します。
     コマンド:MSED
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入

     例  MOVE 00 02"ABC"030D
        MSD2 00
       MDATAの番地00にパラメーター文字「SX”ABC”EX CR」をセットし,
       MDATAの00番地の文字列を送信します。


 <受信コマンド>
  READ 
文字をCH1で受信してM_DATAへ格納する

     概要:このコマンドが実行されたから、受信するまで待ちつづけ、
        受信された文字は、パラメーターに設定されたMDATAの番号に格納されます。
        (このコマンドを実行された後の文字を受信します)
     コマンド:READ
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: 受信数(先頭から9番めに3文字記入)
             受信数が設定されている数までこのコマンドは実行します。
             受信文字を000にすると受信時間が優先になり受信時間まで
             の文字を受信します。
     パラメーター3: 受信時間(先頭から13番めに3文字記入)
             受信時間が設定されている時間までこのコマンドは実行します。
             受信文字を000にすると受信時間が無効になり受信時間まで
             の文字を受信します。
             単位は0.1Sです。
     *パラメーター2とパラメーター3両方0のときは一回受信するまで実行します。

     例  READ 00 010 100
        MSED 00
       受信数10文字又は、10.0秒まで受信待ちし、その文字列は、
       MADATAの00番地に記憶され、その文字をそのまま送信します。

         
  ZRED 文字をCH1で受信してM_DATAへ格納する(以前も取得)

     概要:受信するまで待ちつづけ、受信された文字は、パラメーターに設定されたMDATAの番号に
        格納されます。(但し受信文字は送信後から記憶された文字です。
        タイミングによってはREADコマンドが読めない時使います。)
     コマンド:READ
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: 受信数(先頭から9番めに3文字記入)
             受信数が設定されている数までこのコマンドは実行します。
             受信文字を000にすると受信時間が優先になり受信時間まで
             の文字を受信します。
     パラメーター3: 受信時間(先頭から13番めに3文字記入)
             受信時間が設定されている時間までこのコマンドは実行します。
             受信文字を000にすると受信時間が無効になり受信時間まで
             の文字を受信します。
             単位は0.1Sです。
     *パラメーター2とパラメーター3両方0のときは一回受信するまで実行します。

     例  ZEAD 00 010 100
        MSED 00
       受信数10文字又は、10.0秒まで受信待ちし、その文字列は、MADATAの00番地に
       記憶され、その文字をそのまま送信します。


  RED2 文字をCH2で受信してM_DATAへ格納する

     概要:このコマンドが実行されたから、受信するまで待ちつづけ、
        受信された文字は、パラメーターに設定されたMDATAの番号に格納されます。
        (このコマンドを実行された後の文字を受信します)
     コマンド:RED2
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: 受信数(先頭から9番めに3文字記入)
             受信数が設定されている数までこのコマンドは実行します。
             受信文字を000にすると受信時間が優先になり受信時間まで
             の文字を受信します。
     パラメーター3: 受信時間(先頭から13番めに3文字記入)
             受信時間が設定されている時間までこのコマンドは実行します。
             受信文字を000にすると受信時間が無効になり受信時間まで
             の文字を受信します。
             単位は0.1Sです。
     *パラメーター2とパラメーター3両方0のときは一回受信するまで実行します。

     例  READ 00 010 100
        MSD2 00
       受信数10文字又は、10.0秒まで受信待ちし、その文字列は、
       MADATAの00番地に記憶され、その文字をそのまま送信します。

         
  ZRD2 文字をCH2で受信してM_DATAへ格納する(以前も取得)

     概要:受信するまで待ちつづけ、受信された文字は、パラメーターに設定されたMDATAの番号に
        格納されます。(但し受信文字は送信後から記憶された文字です。
        タイミングによってはREADコマンドが読めない時使います。)
     コマンド:RED2
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: 受信数(先頭から9番めに3文字記入)
             受信数が設定されている数までこのコマンドは実行します。
             受信文字を000にすると受信時間が優先になり受信時間まで
             の文字を受信します。
     パラメーター3: 受信時間(先頭から13番めに3文字記入)
             受信時間が設定されている時間までこのコマンドは実行します。
             受信文字を000にすると受信時間が無効になり受信時間まで
             の文字を受信します。
             単位は0.1Sです。
     *パラメーター2とパラメーター3両方0のときは一回受信するまで実行します。

     例  ZED2 00 010 100
        MSED 00
       受信数10文字又は、10.0秒まで受信待ちし、その文字列は、MADATAの00番地に
       記憶され、その文字をそのまま送信します。


<タイマーコマンド>
  TIME 
設定した時間待つ

     概要:設定された時間まで待ちつづけます。
     コマンド:TIME
     パラメーター: 待ち時間(先頭から6番めに3文字記入)
       単位は0.1Sです。

     例 SEND "123"0D
       TIME 100
       SEND "ABC"0D
       “123”を送信して10.0秒後にもう一度“ABC”を送信します。


 <比較コマンド>
  CMPM 
M_DATAとM_DATAを比較して条件ジャンプ

     概要:MDATAとMDATAの内容を比較し一致すれば指定したラベルまで飛びます。
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: MDATAの番号(先頭から9番めに2文字記入)
     パラメーター3: シャンプ先ラベル(先頭から12番めに3文字記入)

     例 READ 00 010 100
       MOVE 01 "123"0D
       CMPM 00 01 ABC
       SEND "NG"
       GOTO EEE
       :ABC
       SEND "OK"
       :EEE
       PEND

       受信した文字をMDATAの番地00に入れ、文字“123”+CRを
       MDATAの番地01にいれ、MDATA00とMDATA01を
       比較し一致すればラベルABCへ飛びん“OK”と送信し、一致しないときは
       次行へ行き“NG”と送信します。

  CMPL M_DATAと指定文字を比較して条件ジャンプ

     概要:MDATAとパラメーターの文字内容を比較し一致すれば指定したラベルまで飛びます。
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: ジャンプ先ラベル(先頭から9番めに3文字記入)
     パラメーター3: 比較文字(先頭から13番めに記入)

     送信文字は0〜FのHEX数値2文字で一組のASCに変換し、文字をその物は“ ”又は
     ‘ ’を前後に付ければよいです。
     例 READ 00 010 100
       CMPL 00 ABC "123"
       SEND "NG"
       GOTO EEE
       :ABC
       SEND "OK"
       :EEE
       PEND

      受信した文字をMDATAの番地00に入れ、MDATA00と文字“123”+CRを
      比較し一致すればラベルABCへ飛びん“OK”と送信し、一致しないときは
      次行へ行き“NG”と送信します。


 <チェックサム コマンド>
  CHKA
 M_DATAの内容をXORのチャックサムしてASCでM_DATAへ格納する

     概要:MDATAの文字をXORでチェックサムし、
        その結果MDATAにASC文字として格納します。
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: MDATAの番号(先頭から9番めに2文字記入)

     例 MOVE 00 "123"
       CHKA 00 01

      MDATAの番地00にパラメーター文字「”123”」をセットし、
      MDATAの番地00をチェックサムします。
      その結果をASC文字(2文字)をMDATAの番地01に格納します。
      結果としてMDATAの01番地は「“30”」になっています。

     XORとは
      スタート文字・ストップ文字を含まない送信文字をXORします。
      例)“123456”の場合
       31 XOR 32 XOR 33 XOR 34 XOR 35 XOR 36 = 07(HEX)


  CHKH M_DATAの内容をXORのチャックサムしてHEXでM_DATAへ格納する

     概要:MDATAの文字をXORでチェックサムし、
        その結果MDATAにHEX文字として格納します。
     パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
     パラメーター2: MDATAの番号(先頭から9番めに2文字記入)

     例 MOVE 00 "123"
       CHKA 00 01

      MDATAの番地00にパラメーター文字「”123”」をセットし、
      MDATAの番地00をチェックサムします。
      その結果をHEXC文字(1文字)をMDATAの番地01に格納します。
      結果としてMDATAの01番地は「“0”」になっています。

     XORとは
      スタート文字・ストップ文字を含まない送信文字をXORします。
      例)“123456”の場合
       31 XOR 32 XOR 33 XOR 34 XOR 35 XOR 36 = 07(HEX)


 <制御コマンド>
  GOTO
 ジャンプ命令

    概要:パラメーターにかかれたラベルまで飛びます。
    コマンド:GOTO
    パラメーター: ジャンプ先ラベル(先頭から6番めに3文字記入)
           ラベルはASC文字です。

     例 GOTO ABC
       TIME 100
       :ABC
       PEND

     TIMEコマンドを実行せず、ラベルABC(:ABC)まで
     飛んで終了します。


  PEND マクロ終了命令

    概要:この自動送受信マクロを終了させます。
    コマンド:PEND

     例 PEND

     この自動送受信モードを終了させ「MACROが終了しました。」と
     メッセージBOXが出ます。


 <文字列制御コマンド>
  MOVE 
指定した文字列をM_DATAへ格納する

    概要:MDATAに文字をセットします。
    パラメーター1: MDATAの番号(先頭から6番めに2文字記入)
    パラメーター2: 文字(先頭から9番めに記入)

     例 MOVE 00 02"ABC"030D
       MSED 00

     MDATAの番地00にパラメーター文字「SX”ABC”EX CR」をセットし,
     MDATAの00番地の文字列を送信します。


  MADD M_DATAの文字とM_DATA文字を加算する

    概要:MDATAとMDATAの文字を加算します。
    パラメーター1: MDATAの番号(先頭から6番めに2文字記入)加算先
    パラメーター2: MDATAの番号(先頭から9番めに2文字記入)加算元

     例 MOVE 00 "ABC"
       MOVE 01 "123"
       MADD 00 01

     MDATAの番地00にパラメーター文字「”ABC”」をセットし、
     MDATAの番地01にパラメーター文字「”123”」をセットし、
     MDATAの番地00の最終文字からMDATAの番地01の文字を加算します。
     結果としてMDATAの00番地は「“ABC123”」になっています。


  MMID M_DATAの文字の中から指定した文字を取りだしてM_DATAへ格納

    概要:MDATAの中から先頭から何文字目から何文字分をMDATAへ格納します。
    パラメーター1: MDATAの番号(先頭から6番めに2文字記入)元のDATA
    パラメーター2: 先頭文字を指定する2桁の数値(先頭から9番めに2文字記入)
    パラメーター3: 取得する文字数を指定する2桁の数値(先頭から12番めに2文字記入)
    パラメーター4: MDATAの番号(先頭から9番めに2文字記入)格納先

     例 MOVE 00 "1234567890"
       MMID 00 03 04 01

     MDATAの番地00にパラメーター文字「”1234567890”」をセットし、
     MDATAの番地00の文字の先頭から3番目から4文字分をMDATAの番地01へ
     コピーします。
     結果としてMDATAの01番地は「“4567”」になっています。


  MINC M_DATAの文字を10進法でインクリメントする

    概要:MDATAの数文字を10進法でインクリメントします。
    パラメーター1: MDATAの番号(先頭から6番めに2文字記入)

     例 MOVE 00 "000"
       MINC 00

     MDATAの番地00にパラメーター文字「”000”」をセットし、
     MDATAの番地00をインクリメントします。
     結果としてMDATAの00番地は「“001”」になっています。


  HINC M_DATAの文字を16進法でインクリメントする

    概要:MDATAの数文字を16進法でインクリメントします。
    パラメーター1: MDATAの番号(先頭から6番めに2文字記入)

     例 MOVE 00 "000"
       MINC 00

     MDATAの番地00にパラメーター文字「”000”」をセットし、
     MDATAの番地00をインクリメントします。
     結果としてMDATAの00番地は「“001”」になっています。


  MCLR M_DATAをクリアする

    概要:M DATAを内容をクリアします。
    (M DATAとは文字列を記憶するメモリの事)
    パラメーター1: メモリ番号00〜99(先頭から6番め2文字記入)

     例 MCLR 05

      この行を実行されたとき M DATAの05の内容をクリアします。
     備考 M DATAの詳細について
      M DATAのメンバーは下記の内容があります。
      1・256文字の入る文字列
      2・その文字の文字数が入る数値
      *制御文字を使用するため、文字数を指定します。


 <ラベル>
  ラベル 
ジャンプの飛び先

    概要:GOTOやCMPM・CMPLのジャンプ先に使うラベルに使用します。
    書式:「:」を先頭に書きその後ろ3文字がラベルになります。

        例 :ABC


 <記憶メモリ>
  M DATA 
文字列を格納するエリア

       文字列を記憶するメモリでM DATAと呼びます。
    概要:
    文字を記憶するためのメモリで、00〜99の100個あります。
    ひとつのメモリで256文字分の文字が記憶できます。
    使用するコマンド
    MSED・READ・ZRED・CMPM・CMPL・MOVE・MINC・HINC・CHKA・CHKH





【ラインモニター】

2chを使用して通信間のラインモニターが可能です。

1・Com設定で、ラインモニタにチェックを入れます。
2・Ch1のシリアルの設定でフロー制御を無しにします。
3・Ch2も同様にフロー制御を無しにします。
4・下記のようなケーブルを準備し、接続します。
5・OPENします。

結線図


黒色ラインは必ず接続して下さい
赤色ラインは、必要に応じて接続して下さい。




【ダウンロード】

ダウンロードページへ




戻る