⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 C++ Buider下控制USB设备的例程。目标板为C8051F开发板
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h>
#include <time.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "HexMemo"
#pragma resource "*.dfm"
TForm1 *Form1;
USBDriver USB;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 void __fastcall TForm1::DisconnectFromUSBDevice(void)
{
    if(Form1->hUSB_Read != INVALID_HANDLE_VALUE)
    {
        CloseHandle(Form1->hUSB_Read);
        Form1->hUSB_Read = INVALID_HANDLE_VALUE;
    }

    if(Form1->hUSB_Write != INVALID_HANDLE_VALUE)
    {
        CloseHandle(Form1->hUSB_Write);
        Form1->hUSB_Write = INVALID_HANDLE_VALUE;
    }
}

//----------------------------------------------------------------------------
bool __fastcall TForm1::ConnectToUSBDevice(void)
{
    if(Form1->hUSB_Read != INVALID_HANDLE_VALUE) CloseHandle(Form1->hUSB_Read);
    if(Form1->hUSB_Write != INVALID_HANDLE_VALUE) CloseHandle(Form1->hUSB_Write);

    Form1->hUSB_Read = USB.OpenMyDevPipe(USB_READPIPE);
    if(Form1->hUSB_Read == INVALID_HANDLE_VALUE)
    {
        MessageDlg("USB device fail!! (read)\n\nReset hardware and try again", mtWarning, TMsgDlgButtons() << mbOK, 0);

        return false;
    }

    Form1->hUSB_Write = USB.OpenMyDevPipe(USB_WRITEPIPE);
    if(Form1->hUSB_Write == INVALID_HANDLE_VALUE)
    {
        MessageDlg("USB Device Fail!! (write)\n\nReset hardware and try again", mtWarning, TMsgDlgButtons() << mbOK, 0);
        return false;
    }
    return true;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ConnectToUSBDevice();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 DisconnectFromUSBDevice();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
unsigned char buf[USB_BUFSIZE+1];
buf[0] = 1;
buf[1] = 1;

USB.SendToDevice(Form1->hUSB_Write, buf, USB_BUFSIZE);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 if(Form1->hUSB_Read != INVALID_HANDLE_VALUE)
    {
        CloseHandle(Form1->hUSB_Read);
        Form1->hUSB_Read = INVALID_HANDLE_VALUE;
    }

    if(Form1->hUSB_Write != INVALID_HANDLE_VALUE)
    {
        CloseHandle(Form1->hUSB_Write);
        Form1->hUSB_Write = INVALID_HANDLE_VALUE;
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
unsigned char buf[USB_BUFSIZE+1];
buf[0] = 0;
buf[1] = 0;

USB.SendToDevice(Form1->hUSB_Write, buf, USB_BUFSIZE);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{
 


unsigned char buf[USB_BUFSIZE+1];
buf[0] = 0;
buf[1] = 0;


USB.SendToDevice(Form1->hUSB_Write, buf, USB_BUFSIZE);


}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{

  int xxx;
  unsigned char buf[USB_BUFSIZE+1];
  xxx=USB.ReadFromDevice(Form1->hUSB_Write, buf, USB_BUFSIZE);
  HexMemo1->EditBuffer(buf,64,false);

  Edit1->Text = IntToStr(xxx);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -