Windows AppでEZ-USBのI/Oを制御 2006.06.29(木)〜![]()
著作者 中野 良知 作成開始 2006.06.12(月) 第一版完 2006.06.29(木)
概要 Windows AppからEZ-USBマイコンの汎用ポートを制御します。 目次 1. 内容 2. 開発ツール 3. プロジェクトの立ち上げ 3.1. 作成と保存 3.2. ファイルの追加 4. GUIの作成 4.1. テキストボックスと釦を配置 4.2. 「終了」メニューの追加 4.2.1. 「終了」プログラムを作成 5. usingの追加 6. EZ-USBマイコンの初期化 7. Bポートに出力 8. Cポートから入力 9. 動作の概要 9.1. エンドポイント 9.2. コマンドデータ 9.2.1. 出力コマンド 9.2.2. 入力コマンド 9.2.3. 指定先の定義 9.2.4. その他のコマンド(参考) 9.3. EZ_USBマイコンの処理 9.4. コマンドの処理 10. 参考資料 1. 内容 テキストボックス1に記述した1バイトの16進数を、EZ-USBマイコンのポートBに出力 します。 さらに、ポートCの入力データをテキストボックス2に表示します。 実行中のGUI画面使用するEZ-USBマイコンは、オプティマイズ製のボードキットです。
2. 開発ツール Windows Appの開発ツールは Micosoft Visual C# 2005 Express Edition(無償版)を 使用します。 同開発ツールの入手とインストール方法は、VC#でCNCのページをご覧下さい。 3. プロジェクトの立ち上げ 新しくEZ_IOプロジェクトを作成し、ファイルを追加します。 3.1. 作成と保存 1) Visual C# 2005 Express Edition を起動します。 2) スタートページで「ファイル」の「新しいプロジェクト」をクリックします。
テンプレートリストが表示されます。 3)「Windowsアプリケーション」テンプレートを選択します。 4) プロジェクト名に「EZ_IO」を記述します。
5)「OK」をクリックします。 EZ_IOのプロジェクト画面(統合開発環境またはIDE)が表示されます。
6)「ファイル」の「すべて保存」をクリックし、開いたプロジェクトの保存ダイア ログボックスにプロジェクトの保存先を記述します。
7)「上書き保存OK」をクリックします。 EZ_IOフォルダーにプロジェクトが保存されます。 3.2. ファイルの追加 1) EZ_IOのフォルダーに 1. EzUSB.cs 2. UsbSub.cs 3. Regmon.bix をコピーします。 保存先例 D:\VisualStudio2005\Projects\EZ_IO\EZ_IO 2) EZ_IOのプロジェクト画面の「プロジェクト」「既存項目の追加」を順にクリック します。 1. EzUSB.cs 2. UsbSub.cs を選択し追加します。
追加されたファイルを確認します。
4. GUIの作成 フォームにテキストボックスと釦をそれぞれ2個づつ配置します。 さらに「ファイル」メニューとそのサブメニューとして「終了」メニューを追加しま す。 4.1. テキストボックスと釦を配置
EZ_IOのプロジェクト画面の左端にある、「ツールボックス」をクリックし、 「TextBox」コントロールを選択し、フォームへドラッグ&ドロップします。 「Button」コントロールを選択し、フォームへドラッグ&ドロップします。 それぞれ2回づつ行います。
上の段は、textBox1とbutton1。 下の段は、textBox2とbutton2です。 4.2. 「終了」メニューの追加 EZ_IOのプロジェクト画面の左端にある、「ツールボックス」をクリックし、 「menuStrip」コントロールを選択し、フォームへドラッグ&ドロップします。
フォームにメニューバーが表示され、プロジェクト画面の下の方に「menuStrip1」 が追加されます。 「ここへ入力」をクリックし「終了」と入力します。
4.2.1. 「終了」プログラムを作成 「終了」メニューをクリックした時に実行するプログラムを記述します。 「終了」メニューを左ダブルクリックします。
コードが表示されます。
プログラムコード ”Application.Exit();” を記述します。 記述例
EZ_IOのプロジェクト画面のメニューバーにある「ビルド」をクリックし、 「ソリューションのビルド」を選択します。
EZ_IOのプロジェクト画面の下側のエラーメッセージが0を確認します。
EZ_IOのプロジェクト画面のメニューバーにある「デバッグ」をクリックし、 「デバッグ開始」を選択します。
プログラム実行中の画面です。
「終了」メニューをクリックすると、アプリケーションが終了し、 EZ_IOのプロジェクト画面に戻ります。 5. usingの追加 EZ_IOのプロジェクト画面の[Form1.cs]タグをクリックしコードを表示します。 using System.IO; using UsbSub; を追加します。
6. EZ-USBマイコンの初期化 EZ_IOアプリケーションが起動したときに、EZ-USBマイコンへ実行プログラムをロー ドします。 デザインフォーム内をダブルクリックします。(参考:赤枠の周辺)
コードを記述します。
FileStream fs = File.OpenRead( "D:\\VisualStudio2005\\Projects\\EZ_IO\\EZ_IO\\Regmon.bix"); の部分は、Regmon.bix をコピーしたフォルダーを指定します。 PCとEZ-USBマイコンキット間がUSBケーブルで接続されていることを確認します。
「ソリューションのビルド」を実施し、「デバッグ」を実行します。 数秒後にアプリケーションのフォームが表示されます。
テキストボックス1に「ロード完了」が表示されれば正常です。 「終了」メニューをクリックすると、アプリケーションが終了し、 EZ_IOのプロジェクト画面に戻ります。 7. ポートBに出力 EZ-USBマイコンのポートBに、テキストボックス1に入力した16進数の値を出力する プログラムを作成します。
button1コントロールを左ダブルクリックします。 コードが表示されます。
出力プログラムを記述します。
EZ-USBボードのコネクター端子B9(PORTB0)と端子B13(GND)間にLEDと抵抗(470Ω) を直列に接続します。
![]()
「ソリューションのビルド」を実施し、「デバッグ」を実行します。 数秒後にアプリケーションのフォームが表示されます。 テキストボックス1(上)に半角の数字で"01"を入力し、[button1]をクリックします。 LEDが点灯します。
テキストボックス1(上)に半角の数字で"00"を入力し、[button1]をクリックします。 LEDが消灯します。
「終了」メニューをクリックすると、アプリケーションが終了し、 EZ_IOのプロジェクト画面に戻ります。 8. ポートCから入力 EZ-USBマイコンのポートCから入力したデータを、テキストボックス2に16進数で表示 するプログラムを作成します。
button2コントロールを左ダブルクリックします。 コードが表示されます。
入力プログラムを記述します。
EZ-USBボードのコネクター端子B9〜B2(PORTB0〜B7)と端子A2〜A9(PORTC0からC7)を それぞれリード線で接続します。
(リード線はクロスします。)
「ソリューションのビルド」を実施し、「デバッグ」を実行します。 数秒後にアプリケーションのフォームが表示されます。 テキストボックス1(上)に半角の数字で"16"を入力し、[button1]をクリックします。 [button2]をクリックすると、テキストボックス2(下)に"16"が表示されます。
「終了」メニューをクリックすると、アプリケーションが終了し、 EZ_IOのプロジェクト画面に戻ります。 9. 動作の概要 PCからEZ-USBマイコンのI/Oを制御する方法の概要を説明します。 9.1. エンドポイント PCとEZ-USBマイコン間のデータの授受は、エンドポイントと呼ばれるデータバッファ ーを介して行われます。 PCとエンドポイント間をつなぐ仮想的な通信路をパイプと 呼びます。 PCからEZ-USBマイコンのポートに出力するために、エンドポイントのOUTEP1を使用し ます。 EZ-USBマイコンのポートからPCに入力するために、エンドポイントのINEP7を使用し ます。 各エンドポイントは、最大64バイトです。 データは、非周期的で大量のデータを転送する、バルク転送タイプを使用します。 PC側 EZ-USB側 ┌────┐ パイプ ┌────┐ ┌────┐ │ 出力 ├───→────┤ OUTEP1 ├→─┤出力処理├→○ ポート └────┘ └────┘ └────┘ ┌────┐ パイプ ┌────┐ ┌────┐ │ 入力 ├───←────┤ INEP1 ├←─┤入力処理├←○ ポート └────┘ └────┘ └────┘ ├←──────→┤ USBケーブル パイプは、共通の信号線を時分割で使用します。 9.2. コマンドデータ 1組のコマンドデータは2バイト又は3バイトで構成されます。 エンドポイントの容量以内ならば、複数組のコマンドデータを出力エンドポイントに 転送できます。 コマンドデータを受信したEZ-USBマイコンは、ポーリングにより受信完了を検知しま す。 受信完了を検知すると、出力エンドポイント内のコマンドを解析し、指定先へ データを出力したり、指定先からデータを入力します。 9.2.1. 出力コマンド 3バイトで構成されます。 1バイト目 2バイト目 3バイト目 ┌──────┬──────┬──────┐ │出力コマンド│ 指定先 │ 出力データ │ └──────┴──────┴──────┘ シンボル名 値 用途 -----------------+---------+--------------------------------------- EZR_WRITE 0x02 汎用ポートへ書き込み 9.2.2. 入力コマンド 2バイトで構成されます。 1バイト目 2バイト目 ┌──────┬──────┐ │入力コマンド│ 指定先 │ └──────┴──────┘ シンボル名 値 用途 -----------------+---------+--------------------------------------- EZR_READ 0x03 汎用ポートから読み込み 9.2.3. 指定先の定義 シンボル名 値 用途 -----------------+---------+--------------------------------------- _PORTACFG 0x93 PORT A コンフィグレーションレジスター _PORTBCFG 0x94 PORT B コンフィグレーションレジスター _PORTCCFG 0x95 PORT C コンフィグレーションレジスター _OUTA 0x96 PORT A 出力レジスター _OUTB 0x97 PORT B 出力レジスター _OUTC 0x98 PORT C 出力レジスター _PINSA 0x99 PORT A 入力レジスター _PINSB 0x9A PORT B 入力レジスター _PINSC 0x9B PORT C 入力レジスター _OEA 0x9C PORT A ディレクション切換えレジスター _OEB 0x9D PORT B ディレクション切換えレジスター _OEC 0x9E PORT C ディレクション切換えレジスター 9.2.4. その他のコマンド(参考) PC側とEZ-USB側のプログラムでコマンドの値と処理内容を決めておくことで、さまざ まな機能を実現する事が出来ます。 シンボル名 値 用途 -----------------+---------+--------------------------------------- SFR_WRITE 0x00 マイコンのレジスターへ書き込み SFR_READ 0x01 マイコンのレジスターを読み込み *1 EZR_WRITE 0x02 汎用ポートへ書き込み *2 EZR_READ 0x03 汎用ポートから読み込み ROM_WRITE 0x04 FLASH ROMへ書き込み(AVR WRITER用) AVR_WRITE 0x05 FLASH ROMバッファーへ書き込み(AVR WRITER用) AVR_READ 0x06 FLASH ROMバッファーの読み込み(AVR WRITER用) ERR_INF_CLR 0x07 FLASH ROM書き込みエラークリア(AVR WRITER用) GET_ERR_INF 0x08 FLASH ROM書き込みエラー取得(AVR WRITER用) PAGE_WRITE 0x09 FLASH ROMバッファーページ書き込み(AVR WRITER用) 今回のAppで使用するコマンドは*1と*2です。 9.3. EZ_USBマイコンの処理 PCから受信したコマンドを解析し指示された処理を実行します。 9.4. コマンドの処理 コマンドの受信を完了すると、1バイト目の値により2バイト又は3バイトのコマンド処 理を受信した全データについて繰り返し実行します。 (受信完了) ↓ ├←─────────────────────┐ ↓ 入力コマンド │ <1バイト目?>→────────────────────┐ ↓ 出力コマンド │ │ (出力) │ │ ↓ │ │ 2バイト目で指定されたポートへ │ │ 3バイト目の値を出力 │ │ ↓ No(次のコマンドを解析) │ │ <受信バイト数処理完? >→─────────────┤ │ ↓ Yes ↑ │ (終了) │ │ │ │ ┌────────────────────────┘ ↓ │ (入力) │ ↓ │ 2バイト目で指定されたポートから │ データ入力 │ ↓ │ データをINEP1へ格納 │ ↓ No(次のコマンドを解析) │ <受信バイト数処理完? >→─────────────┘ ↓ Yes (終了) 10. 参考資料 1) EzUSB.cs USB関連のAPI参照プログラムは、 ┬─ オプティマイズ └┬─ MINI EZ-USB └┬─ ★ホストアプリ └┬─ "ソースコード一式" (ページの巻末) └─ cusb.c をC#用に編集しました。 2) Regmon.bix EZ-USBマイコンで実行するプログラムのソースコードは、 ┬─ オプティマイズ └┬─ MINI EZ-USB └┬─ ★FWの開発 └── "FWはここ" (ページの巻末) にあります。 入手したソースコードを「Keil uVision」でコンパイルして Regmon.bix を生成しました。 コンパイルの方法はサイプレス EZ-USBのプログラム開発手順を参考にして下さい。 プロジェクト名はRegmonで作成しました。 3) プロジェクトファイル書庫 EZ_IOプロジェクトファイルを圧縮したものが下記にあります。 EZ_IO.lzh
ページのTopへ
サイトのTopへ
法律条項 この資料により生じたいかなる障害や損害に対し、著者は全てを免責されるものとします。 この資料は、著作権法の下で保護され、入手先、著者、日付、法律条項を含んだ場合に複製が可能です。