Например TDA7294

Форум РадиоКот • Просмотр темы - JvHidControllerClass компонент HID
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 26, 2024 12:12:51

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: JvHidControllerClass компонент HID
СообщениеДобавлено: Пт июн 17, 2016 18:41:17 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Ср май 21, 2008 21:19:02
Сообщений: 22
Рейтинг сообщения: 0
Здравствуйте, уважаемые!!! подскажите кто работал с данным компонентом на с++ builder 6
как принимать данные от устройства?
написал не большой тест
Код:
//----------

#include <vcl.h>
#pragma hdrstop

#include "HID_test.h"
//----------
#pragma package(smart_init)
#pragma link "JvHidControllerClass"
#pragma resource "*.dfm"
TForm1 *Form1;
//----------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//----------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 ListBox1->Clear();
}
//----------

void __fastcall TForm1::JvHidDeviceController1DeviceChange(TObject *Sender)
{
    if (DevList == NULL){
        // создать список устройств
        DevList = new TList();
    }
    else{
        // освободить список устройств от всех записей указателей на устройства
        for (int i = 0; i < DevList->Count; i++)
            ((TJvHidDevice *)DevList->Items[i])->Free();
        // очистка списка устройств
        DevList->Clear();
    }

    // очистка компонента ListBox от старых записей названий или идентификаторов устройств
    ListBox1->Clear();

    Form1->Caption  = "";
    // перечисление всех HID устройств, подключенных к шине USB
    JvHidDeviceController1->Enumerate();


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

bool __fastcall TForm1::JvHidDeviceController1Enumerate(
      TJvHidDevice *HidDev, const int Idx)
{
    AnsiString S;

    // добавление названия или идентификаторов устройства в компонент ListBox
    if (HidDev->ProductName != NULL)
        ListBox1->Items->Add("Подключено устройство:  "
        + HidDev->ProductName);
    else
        ListBox1->Items->Add(S.sprintf("Device VID=%04X PID=%04X",
        HidDev->Attributes.VendorID, HidDev->Attributes.ProductID));

    // получение указателя на устройство
    JvHidDeviceController1->CheckOutByIndex(Dev, Idx);

    // добавление указателя на устройство в список устройств
    DevList->Add(Dev);

    // инкремент индекса записи
    ListBox1->ItemIndex ++;

    // получение указателя на устройство из списка устройств
    TJvHidDevice *Dev = (TJvHidDevice *)DevList->Items[ListBox1->ItemIndex];

    S = "Gersa v2.1";
    if (HidDev->ProductName == S){
        CurrentDevice = Dev;                    // активное HID устройство
        // число байтов для записи в HID устройство
        ToWrite = CurrentDevice->Caps.OutputReportByteLength;
        Form1->Caption = HidDev->ProductName;   // название устройства

        if(CurrentDevice != NULL)
            CurrentDevice->OnData = NULL;
        if(CurrentDevice->HasReadWriteAccess)
           CurrentDevice->OnData = ShowRead;
        else
            CurrentDevice->OnData = NULL;

    }
    return(true);
}
//----------

void __fastcall TForm1::ShowRead(TJvHidDevice *HidDev,
      BYTE ReportID, const void *Data, unsigned __int16 Size)
{
    char *P;

    P = (char *) Data;

    CurrentDevice->ReadFile(BufIn, 4, BytesRead);
    ListBox1->Items->SetText(BufIn);
}
//----------
void __fastcall TForm1::JvHidDeviceController1DeviceData(
      TJvHidDevice *HidDev, BYTE ReportID, const Pointer Data, WORD Size)
{
          char *P;

    P = (char *) Data;
   if(CurrentDevice != NULL)
   {

     ListBox1->Items->Add(P[0]+P[1]+P[2]+P[3]);

   }

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

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  BufOut[0] = 0x01;       // ? ??????? HID ?????????? REPORT_ID = 0x77
    BufOut[1] = 'R';
    BufOut[2] = 'c';
    BufOut[3] = '\0';

    if(CurrentDevice != NULL)
        CurrentDevice->WriteFile(BufOut, ToWrite, Written);
}
//----------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
     BufOut[0] = 0x01;       // ? ??????? HID ?????????? REPORT_ID = 0x77
    BufOut[1] = 'S';
    BufOut[2] = 'n';
    BufOut[3] = '\0';

    if(CurrentDevice != NULL)
        CurrentDevice->WriteFile(BufOut, ToWrite, Written);
}
//----------

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

     ListBox1->Items->Add(IntToStr(BytesRead));
}
//----------

void __fastcall TForm1::JvHidDeviceController1DeviceDataError(
      TJvHidDevice *HidDev, DWORD Error)
{
 MessageDlg("?????? ?????? ?? HID. GetLastError=" +
        IntToStr(GetLastError), mtError, TMsgDlgButtons() << mbOK, 0);
}
//----------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  Timer1->Interval=50;
  Timer1->Enabled;

   /*
    if(CurrentDevice != NULL)
    {
    CurrentDevice->ReadFile(BufIn, 4, BytesRead);
    if(BufIn=="")  {ListBox1->Items->SetText("mm\n");}
    else
    {
     ListBox1->Items->Add(BufIn[0]+BufIn[1]+BufIn[2]+BufIn[3]);
    }
    }
    */
}
//----------


устройство определяется, передача работает(МК принимает данные как надо),а с приемом засада (не вижу данных от МК):o


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y