void main(void)
{
int i;
Init();
while(TRUE){
USB_Receive();
SendCount = RecvCount;
for (i = 0; i < RecvCount; i++)
SendBuffer[i] = RecvBuffer[i];
USB_Send();
}
}
またこのmain関数の前に、次の4つのグローバル変数が宣言されています。
BYTE xdata RecvBuffer[128]; BYTE xdata SendBuffer[128]; WORD RecvCount; WORD SendCount;このうち、Init()は初期化をする関数ですので、最初に記述しておきます。 その後、処理の本体に入りますが、 USB_Receive()が、パソコンからUSB経由で送られてきたデータを 受信する関数で、その受信データが配列RecvBuffer[]に、 またその長さ(バイト数)がRecvCountに入ります。
逆にUSB_Send()は、パソコンに対してUSB経由でデータを送る関数で、 配列SendBuffer[]の中のデータを、0番目から順に、 SendCountバイトだけ送信をします。
この場合は、パソコンから受信したデータを、そのままパソコンに 送り返していることになります。
これを参考に、行わせたい処理をmain関数内に記述し、 main.Uv2をダブルクリックしてuVision2を起動後、 build(F7)を行ってプログラムをコンパイルします。
この中にある次のVisualStudioプロジェクトアイコンをダブルクリックすると、
VisualStudioが起動します。
上記のダイアログが表示されますので、「OK」を押します。
左側のウィンドウ「ソリューションエクスプローラ」内の、
Hostの三角マークをクリックすると、
main.cが見つかります。
この中のmain.cが、データの送受信とそれに伴う処理を記述するべき
ソースファイルです。
main関数は次のようになっています。(一部のみ抜粋して記載)
#define SIZE 32
int main( int argc, char *argv[] )
{
if (USB_Open()){
fprintf(stderr, "Cannot open Ez-USB\n"); exit(1);
}
for (i = 0; i < 4; i++) {
for (j = 0; j < SIZE; j++) {
s1[j] = i + j * 2;
s2[j] = 0;
}
USB_Send(s1, SIZE);
l = USB_Receive(s2, SIZE);
for (j = 0; j < l; j++) {
if ((j % 16) == 0) fprintf(stderr, "\n%04x", j);
fprintf(stderr, " %02x", s2[j]);
}
}
USB_Close();
}
最初にあるUSB_Open()は初期化の関数ですので、最初に記述しておきます。
(この例のように、初期化に失敗した場合に、メッセージ表示などの処理を
記述しておくのはよい方法です。)
その後、送信するべきデータを配列s1[]の中に用意し (この例ではs1[j]にi+j*2を代入しています)、 その準備がそろったら、USB_Send()で、マイコンに向けて USB経由でデータを送信しています。 このとき、送信したいバイト数を、第2引数として与えています。
その後、USB_Receive()で、マイコンからUSB経由で送られてきた データを受信しています。 この関数の第2引数では「受信したいバイト数」(この場合はSIZE=32バイト)を 与えますが、「実際に受信されたバイト数」が戻り値となりますので、 その値を変数lに代入しておきます。 そして受信したデータを、順に整形して表示しています。
最後にUSB_Close()で、USB通信の終了処理を行います。
プログラムの記述が完了したら、 「ビルド」メニューの「ソリューションのビルド」でコンパイルを行います。
パソコン側のプログラムのコンパイルが無事終了したら、
まずEZ-USB ControlPanelでマイコン側のプログラムを転送して実行し、
その後、パソコン側のプログラムを実行させます。
パソコン側のプログラムは、
「デバッグ」メニューの「デバッグなしで開始」で実行します。
ビルドするかどうかを確認してきた場合は「はい(Y)」とします。
cmd.exeが起動してプログラムを実行します。
.csv」にする