Visual Basic を使った転送ソフトの開発
●転送ソフトの開発
制御プログラムは、PCのRS-232Cポート(COM ポート)から 9600bps、8bit、non parity、1 stop bit、フロー制御なしで送信されてきます。
制御プログラムの先頭は、「はじめロボット」を表す信号、16、0、が送信されます。ミュウロボ制御基板は、この信号を受け取ると転送のスタートと判断し、「おわりロボット」を表す信号、19、が来るまで制御プログラムとしてPICのEEPROMに保存します。EEPROMの書き込みには時間がかかる為、信号と信号の間には0.1秒程度の待ち時間が必要です。
これらの点を注意すればCOMポートを制御できるプログラム言語(CやVBなど)を使って転送ソフトを開発できます。
下は転送プログラムとその転送信号です。ミュウロボ命令Codeと合わせてご覧ください。

//ドリトルのプログラム
ロボ太=シリアルポート!作る。
ロボ太:転送命令=「!はじめロボット
0 前進
リミットスイッチ
10 後退
おわりロボット」。
ロボ太! ”com1"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。

//myurobo.exeのプログラム
前進,0
リミットスイッチ
後退,10
このプログラムの転送信号 1602(前進)、0112(リミットスイッチ)、8(後退)、1019

●カスタムコントロールの組み込み
Visual Basicを使って転送ソフトを作る場合、2つのOCX(MSCOMM32.OCXとCOMDLG32.OCX)コントロールを組み込む必要があります。
MSCOMM32.OCXはCOMポート用のコミュニケーションコントロール。COMDLG32.OCXはファイル操作用のコモンダイヤログコントロールです。
プロジェクト->コンポーネントをクリックまたはツールバーで右クリックしてコンポーネントをクリック、下の2つにチェックを入れるとツールボックスに組み込まれます。

これをフォームに貼り付けます。(左がMSComm1、右がCommonDialog1)

●COMポートの設定と使い方
Form_LoadイベントにCOMポートの初期設定(9600bps、8bit、non parity、1 stop bit、フロー制御なし)を行いポートをオープンします。

Private Sub Form_Load()
  MSComm1.CommPort = 1
  MSComm1.Settings = "9600,N,8,1"
  MSComm1.Handshaking = comNone
  MSComm1.PortOpen = True

バイナリーデータをCOMポートに出力するためのプロシジャ。
※Chr()関数を使って出力することも可能ですが一部のコードがバケるので必ずbyte配列を使います。
'----------------------------
' RS-323C 1byte binary出力
'----------------------------
Sub sendrs(cd As Byte)
  Dim com(0) As Byte

  com(0) = cd
  MSComm1.Output = com
End Sub

最初に「はじめロボット」を表す信号、16、0、を送信。最後に「おわりロボット」を表す信号、19、を送信。
信号と信号の間には0.1秒のウエイトを入れる。
'----------------------------
'転送ボタンを押した時の処理
'----------------------------
Private Sub Cmd_snd_Click()
  sendrs 16
  wait100
  sendrs 0
  wait100

  'ここでミュウロボCode変換・データ出力の処理を行います。

  'sendrs 2  '例:前進を1.5秒の場合
  'wait100
  'sendrs 15

  wait100
  sendrs 19
End Sub

'-------------------
' 0.1秒のウエイト
'-------------------
Sub wait100()
  Dim t As Single
  
  t = Timer + 0.1
  Do While t > Timer
'    wait
  Loop
End Sub

リモート内のボタンはMouseDown・MouseUpイベントを使います。
前進ボタンの場合、押した時、2(前進)、離した時、0(停止)、が送信されます。
'----------------------------
'前進ボタンを押した時の処理
'----------------------------
Private Sub Cmd_fw_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  sendrs 2
End Sub

'----------------------------
'前進ボタンを離した時の処理
'----------------------------
Private Sub Cmd_fw_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  sendrs 0
End Sub

●コモンダイヤログボックス
CommonDialog1を使って転送プログラムの読込や保存を行います。

'----------------------------
'読込ボタンを押した時の処理
'----------------------------
Private Sub Cmd_open_Click()
  Dim txt1 As String, txt2 As String

  CommonDialog1.CancelError = False
  CommonDialog1.Flags = cdlOFNHideReadOnly
  CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" & "テキスト ファイル (*.txt)|*.txt|"
  CommonDialog1.FilterIndex = 2
  CommonDialog1.ShowOpen
  If Len(CommonDialog1.FileName) > 0 Then
    Open CommonDialog1.FileName For Input As #1
    Line Input #1, txt1
    Do While Not EOF(1)
      txt1 = txt1 & vbCrLf
      Line Input #1, txt2
      txt1 = txt1 & txt2
    Loop
    Txt_edit.Text = txt1
    Txt_edit.SelStart = Len(txt1)
    Txt_edit.SetFocus
    Close #1
  End If
End Sub

'----------------------------
'保存ボタンを押した時の処理
'----------------------------
Private Sub Cmd_save_Click()
  On Error GoTo saveexit

  CommonDialog1.CancelError = True
  CommonDialog1.Flags = cdlOFNOverwritePrompt
  CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" & "テキスト ファイル (*.txt)|*.txt|"
  CommonDialog1.FilterIndex = 2
  CommonDialog1.ShowSave
  If Len(CommonDialog1.FileName) > 0 Then
    Open CommonDialog1.FileName For Output As #1
    Print #1, Txt_edit.Text
    Close #1
  End If
saveexit:
End Sub