亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? info.cpp

?? 通過delphi USB控件讀寫數據
?? CPP
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Info.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TInfoForm *InfoForm;
//---------------------------------------------------------------------------
__fastcall TInfoForm::TInfoForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

char *BoolToString(bool B)
{
  if(B)
    return("True");
  else
    return("False");
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::CollectBtnInfo(WORD Val, char *Title, char *TitleBar)
{
  int I;
  int Ret;
  WORD N;
  AnsiString UsagePageText;
  AnsiString UsageText;
  AnsiString LinkUsagePageText;
  AnsiString LinkUsageText;
  AnsiString S;
  // more than enough Caps structures to read
  THIDPButtonCaps BtnCaps[256];

  N = 256;
  Dev->ReportTypeParam = Val;
  Ret = Dev->GetButtonCaps(BtnCaps, N);
  if(Ret == HIDP_STATUS_SUCCESS)
  {
    InfoMemo->Lines->Add("");
    InfoMemo->Lines->Add(Title);
    InfoMemo->Lines->Add(TitleBar);
    for(I = 0; I < N; I++)
    {
      UsageAndUsagePageText(BtnCaps[I].UsagePage,     BtnCaps[I].Usage,     &UsagePageText,     &UsageText);
      UsageAndUsagePageText(BtnCaps[I].LinkUsagePage, BtnCaps[I].LinkUsage, &LinkUsagePageText, &LinkUsageText);
      InfoMemo->Lines->Add("");
      InfoMemo->Lines->Add(S.sprintf("%u)", I));
      InfoMemo->Lines->Add(S.sprintf("UsagePage:         %s (0x%04X)", UsagePageText, BtnCaps[I].UsagePage));
      InfoMemo->Lines->Add(S.sprintf("ReportID:          %u",          BtnCaps[I].ReportID));
      InfoMemo->Lines->Add(S.sprintf("IsAlias:           %s",          BoolToString(BtnCaps[I].IsAlias)));
      InfoMemo->Lines->Add(S.sprintf("BitField:          %u",          BtnCaps[I].BitField));
      InfoMemo->Lines->Add(S.sprintf("LinkCollection:    %u",          BtnCaps[I].LinkCollection));
      InfoMemo->Lines->Add(S.sprintf("LinkUsage:         %s (0x%04X)", LinkUsageText, BtnCaps[I].LinkUsage));
      InfoMemo->Lines->Add(S.sprintf("LinkUsagePage:     %s (0x%04X)", LinkUsagePageText, BtnCaps[I].LinkUsagePage));
      InfoMemo->Lines->Add(S.sprintf("IsRange:           %s",          BoolToString(BtnCaps[I].IsRange)));
      InfoMemo->Lines->Add(S.sprintf("IsStringRange:     %s",          BoolToString(BtnCaps[I].IsStringRange)));
      InfoMemo->Lines->Add(S.sprintf("IsDesignatorRange: %s",          BoolToString(BtnCaps[I].IsDesignatorRange)));
      InfoMemo->Lines->Add(S.sprintf("IsAbsolute:        %s",          BoolToString(BtnCaps[I].IsAbsolute)));
      if(BtnCaps[I].IsRange)
      {
        InfoMemo->Lines->Add(S.sprintf("UsageMin:      %d UsageMax:      %d", BtnCaps[I].UsageMin,      BtnCaps[I].UsageMax));
        InfoMemo->Lines->Add(S.sprintf("StringMin:     %d StringMax:     %d", BtnCaps[I].StringMin,     BtnCaps[I].StringMax));
        InfoMemo->Lines->Add(S.sprintf("DesignatorMin: %d DesignatorMax: %d", BtnCaps[I].DesignatorMin, BtnCaps[I].DesignatorMax));
        InfoMemo->Lines->Add(S.sprintf("DataIndexMin:  %d DataIndexMax:  %d", BtnCaps[I].DataIndexMin,  BtnCaps[I].DataIndexMax));
      }
      else
      {
        InfoMemo->Lines->Add(S.sprintf("Usage:             %s (0x%04X)", UsageText, BtnCaps[I].Usage));
        InfoMemo->Lines->Add(S.sprintf("StringIndex:       %u",          BtnCaps[I].StringIndex));
        InfoMemo->Lines->Add(S.sprintf("DesignatorIndex:   %u",          BtnCaps[I].DesignatorIndex));
        InfoMemo->Lines->Add(S.sprintf("DataIndex:         %u",          BtnCaps[I].DataIndex));
      }
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::CollectValueInfo(WORD Val, char *Title, char *TitleBar)
{
  int I;
  int Ret;
  WORD N;
  AnsiString UsagePageText;
  AnsiString UsageText;
  AnsiString LinkUsagePageText;
  AnsiString LinkUsageText;
  AnsiString S;
  // more than enough Caps structures to read
  THIDPValueCaps ValCaps[256];

  N = 256;
  Dev->ReportTypeParam = Val;
  Ret = Dev->GetValueCaps(ValCaps, N);
  if(Ret == HIDP_STATUS_SUCCESS)
  {
    InfoMemo->Lines->Add("");
    InfoMemo->Lines->Add(Title);
    InfoMemo->Lines->Add(TitleBar);
    for(I = 0; I < N; I++)
    {
      UsageAndUsagePageText(ValCaps[I].UsagePage,     ValCaps[I].Usage,     &UsagePageText,     &UsageText);
      UsageAndUsagePageText(ValCaps[I].LinkUsagePage, ValCaps[I].LinkUsage, &LinkUsagePageText, &LinkUsageText);
      InfoMemo->Lines->Add("");
      InfoMemo->Lines->Add(S.sprintf("%u)", I));
      InfoMemo->Lines->Add(S.sprintf("UsagePage:         %s (0x%04X)", UsagePageText, ValCaps[I].UsagePage));
      InfoMemo->Lines->Add(S.sprintf("ReportID:          %u",          ValCaps[I].ReportID));
      InfoMemo->Lines->Add(S.sprintf("IsAlias:           %s",          BoolToString(ValCaps[I].IsAlias)));
      InfoMemo->Lines->Add(S.sprintf("BitField:          %u",          ValCaps[I].BitField));
      InfoMemo->Lines->Add(S.sprintf("LinkCollection:    %u",          ValCaps[I].LinkCollection));
      InfoMemo->Lines->Add(S.sprintf("LinkUsage:         %s (0x%04X)", LinkUsageText, ValCaps[I].LinkUsage));
      InfoMemo->Lines->Add(S.sprintf("LinkUsagePage:     %s (0x%04X)", LinkUsagePageText, ValCaps[I].LinkUsagePage));
      InfoMemo->Lines->Add(S.sprintf("IsRange:           %s",          BoolToString(ValCaps[I].IsRange)));
      InfoMemo->Lines->Add(S.sprintf("IsStringRange:     %s",          BoolToString(ValCaps[I].IsStringRange)));
      InfoMemo->Lines->Add(S.sprintf("IsDesignatorRange: %s",          BoolToString(ValCaps[I].IsDesignatorRange)));
      InfoMemo->Lines->Add(S.sprintf("IsAbsolute:        %s",          BoolToString(ValCaps[I].IsAbsolute)));
      InfoMemo->Lines->Add(S.sprintf("HasNull:           %s",          BoolToString(ValCaps[I].HasNull)));
      InfoMemo->Lines->Add(S.sprintf("BitSize:           %u",          ValCaps[I].BitSize));
      InfoMemo->Lines->Add(S.sprintf("ReportCount:       %u",          ValCaps[I].ReportCount));
      InfoMemo->Lines->Add(S.sprintf("UnitsExp:          %u",          ValCaps[I].UnitsExp));
      InfoMemo->Lines->Add(S.sprintf("Units:             %u",          ValCaps[I].Units));
      InfoMemo->Lines->Add(S.sprintf("LogicalMin:        %d",          ValCaps[I].LogicalMin));
      InfoMemo->Lines->Add(S.sprintf("LogicalMax:        %d",          ValCaps[I].LogicalMax));
      InfoMemo->Lines->Add(S.sprintf("PhysicalMin:       %d",          ValCaps[I].PhysicalMin));
      InfoMemo->Lines->Add(S.sprintf("PhysicalMax:       %d",          ValCaps[I].PhysicalMax));
      if(ValCaps[I].IsRange)
      {
        InfoMemo->Lines->Add(S.sprintf("UsageMin:      %d UsageMax:      %d", ValCaps[I].UsageMin,      ValCaps[I].UsageMax));
        InfoMemo->Lines->Add(S.sprintf("StringMin:     %d StringMax:     %d", ValCaps[I].StringMin,     ValCaps[I].StringMax));
        InfoMemo->Lines->Add(S.sprintf("DesignatorMin: %d DesignatorMax: %d", ValCaps[I].DesignatorMin, ValCaps[I].DesignatorMax));
        InfoMemo->Lines->Add(S.sprintf("DataIndexMin:  %d DataIndexMax:  %d", ValCaps[I].DataIndexMin,  ValCaps[I].DataIndexMax));
      }
      else
      {
        InfoMemo->Lines->Add(S.sprintf("Usage:             %s (0x%04X)", UsageText, ValCaps[I].Usage));
        InfoMemo->Lines->Add(S.sprintf("StringIndex:       %u",          ValCaps[I].StringIndex));
        InfoMemo->Lines->Add(S.sprintf("DesignatorIndex:   %u",          ValCaps[I].DesignatorIndex));
        InfoMemo->Lines->Add(S.sprintf("DataIndex:         %u",          ValCaps[I].DataIndex));
      }
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::FormShow(TObject *Sender)
{
  AnsiString S;

  InfoMemo->Lines->Clear();
  if(Dev->VendorName != NULL)
    InfoMemo->Lines->Add(S.sprintf("\"%S\" \"%S\" VID=0x%04X PID=0x%04X",
      Dev->VendorName, Dev->ProductName, Dev->Attributes.VendorID, Dev->Attributes.ProductID));
  else
    InfoMemo->Lines->Add(S.sprintf("VID=0x%04X PID=0x%04X",
      Dev->Attributes.VendorID, Dev->Attributes.ProductID));
  if(Dev->SerialNumber != NULL)
    InfoMemo->Lines->Add(S.sprintf("SerialNumber=%s", Dev->SerialNumber));
  if(Dev->Caps.InputReportByteLength > 0)
    InfoMemo->Lines->Add(S.sprintf("Input Report Size=%d", Dev->Caps.InputReportByteLength-1));
  else
    InfoMemo->Lines->Add("Input Report Size=0");
  if(Dev->Caps.OutputReportByteLength > 0)
    InfoMemo->Lines->Add(S.sprintf("Output Report Size=%d", Dev->Caps.OutputReportByteLength-1));
  else
    InfoMemo->Lines->Add("Output Report Size=0");
  if(Dev->Caps.FeatureReportByteLength > 0)
    InfoMemo->Lines->Add(S.sprintf("Feature Report Size=%d", Dev->Caps.FeatureReportByteLength-1));
  else
    InfoMemo->Lines->Add("Feature Report Size=0");
  CollectBtnInfo(HidP_Input,     "Button Input",   "============");
  CollectBtnInfo(HidP_Output,    "Button Output",  "=============");
  CollectBtnInfo(HidP_Feature,   "Button Feature", "==============");
  CollectValueInfo(HidP_Input,   "Value Input",    "===========");
  CollectValueInfo(HidP_Output,  "Value Output",   "============");
  CollectValueInfo(HidP_Feature, "Value Feature",  "=============");
}
//---------------------------------------------------------------------------

void __fastcall TInfoForm::SaveClick(TObject *Sender)
{
  if(SaveDialog->Execute())
    InfoMemo->Lines->SaveToFile(SaveDialog->FileName);
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜在线视频| 国产精品一区二区三区四区| 亚洲国产精品99久久久久久久久| 日韩一区二区免费在线电影| 91精品一区二区三区久久久久久| 欧美视频你懂的| 制服丝袜在线91| 日韩精品一区二区三区四区视频| 欧美精品一区二区三区很污很色的| 日韩精品一区二区三区老鸭窝| 日韩精品一区二区三区在线播放 | 日韩一区在线免费观看| 亚洲欧美日韩中文播放 | 亚洲影视在线观看| 亚洲福利国产精品| 蜜臀精品一区二区三区在线观看| 精品一区二区三区在线播放视频| 国产成人高清视频| 在线观看不卡一区| 欧美一区二区在线看| 久久久久久夜精品精品免费| 一区在线播放视频| 免费的成人av| 99国产欧美另类久久久精品| 欧美伦理影视网| 国产情人综合久久777777| 亚洲欧美在线高清| 免费观看日韩电影| 91在线porny国产在线看| 666欧美在线视频| 欧美激情综合网| 亚洲一区二区三区不卡国产欧美| 精品一区二区三区免费| 色偷偷久久人人79超碰人人澡 | 99久久婷婷国产| 欧美美女一区二区三区| 欧美韩国日本不卡| 午夜电影一区二区三区| gogogo免费视频观看亚洲一| 在线成人免费视频| 亚洲欧美日韩国产中文在线| 久久国产精品99久久人人澡| 在线精品亚洲一区二区不卡| 日本一区二区免费在线观看视频| 亚洲高清免费观看高清完整版在线观看| 狠狠色狠狠色综合系列| 欧美日本一区二区三区四区| 国产日韩综合av| 久久99九九99精品| 欧美日韩国产美女| 亚洲欧美国产高清| 国产精品18久久久久久久久 | 91精品国产综合久久精品图片| 中文在线资源观看网站视频免费不卡 | 欧美亚日韩国产aⅴ精品中极品| 久久久久久日产精品| 日本不卡一二三| 欧美撒尿777hd撒尿| 国产精品超碰97尤物18| 国产一区二区成人久久免费影院| 欧美日韩电影一区| 香蕉av福利精品导航| av电影一区二区| 国产精品美女视频| 国产一区在线视频| 久久网站热最新地址| 理论电影国产精品| 精品欧美一区二区久久| 麻豆精品久久精品色综合| 在线不卡a资源高清| 午夜视频在线观看一区二区三区| 色狠狠色狠狠综合| 亚洲影院免费观看| 制服视频三区第一页精品| 午夜电影网亚洲视频| 欧美精品一二三| 青青青伊人色综合久久| 日韩丝袜美女视频| 国产一区二三区| 欧美国产亚洲另类动漫| 99精品视频在线观看| 亚洲女厕所小便bbb| 91行情网站电视在线观看高清版| 一区二区三区精品在线观看| 欧美日韩视频第一区| 老司机精品视频一区二区三区| 欧美一区二区三区啪啪| 精品一区二区在线观看| 中文字幕乱码亚洲精品一区| 成人v精品蜜桃久久一区| ...xxx性欧美| 欧美日韩成人激情| 极品少妇一区二区| 国产精品国产三级国产a| 欧洲人成人精品| 日本aⅴ亚洲精品中文乱码| 久久久久国色av免费看影院| 99精品在线观看视频| 日韩电影一二三区| 国产亚洲精品精华液| 91国在线观看| 国模一区二区三区白浆| 亚洲欧洲国产日本综合| 欧美一卡2卡三卡4卡5免费| 国产成人三级在线观看| 一区二区三区国产豹纹内裤在线| 日韩免费视频线观看| 成人小视频在线观看| 午夜精品成人在线| 亚洲国产精品v| 日韩一区二区电影| 91视频观看视频| 国产综合久久久久久久久久久久| 亚洲欧美偷拍卡通变态| 精品国产成人在线影院| 在线视频你懂得一区二区三区| 美国三级日本三级久久99 | 日韩午夜激情免费电影| 99热国产精品| 精品无人码麻豆乱码1区2区 | 欧美日韩一区精品| 国产福利精品导航| 秋霞电影一区二区| 亚洲国产视频直播| 国产精品网站一区| 精品国产成人在线影院| 欧美猛男超大videosgay| 99精品视频在线观看| 国产福利精品一区二区| 麻豆一区二区三区| 亚洲大片在线观看| 亚洲精品美国一| 中文av字幕一区| 国产视频一区二区三区在线观看| 欧美二区在线观看| 欧美日韩情趣电影| 欧美影院一区二区三区| 91在线精品一区二区三区| 国产福利精品一区| 国产成人亚洲综合a∨婷婷图片| 男人的j进女人的j一区| 日日夜夜精品免费视频| 亚洲va在线va天堂| 午夜在线电影亚洲一区| 亚洲午夜久久久久久久久电影院| 亚洲欧洲精品天堂一级| 欧美国产日本韩| 国产农村妇女精品| 国产精品欧美一区喷水| 国产精品色呦呦| 国产精品网站在线观看| 日韩美女久久久| 亚洲精品成a人| 亚洲最大成人综合| 亚洲国产aⅴ成人精品无吗| 亚洲一区电影777| 亚洲国产成人va在线观看天堂| 亚洲美女视频在线| 亚洲一二三四久久| 日本欧美肥老太交大片| 精品中文av资源站在线观看| 国产在线一区观看| 国产一区欧美二区| 成年人网站91| 欧美午夜精品久久久久久超碰| 欧美日韩久久久| 日韩视频在线永久播放| 久久香蕉国产线看观看99| 国产精品色呦呦| 亚洲小说春色综合另类电影| 麻豆高清免费国产一区| 国产精品中文字幕欧美| 成人国产在线观看| 欧美写真视频网站| 精品欧美一区二区在线观看| 中文字幕免费一区| 亚洲国产日韩精品| 激情文学综合丁香| 色狠狠一区二区三区香蕉| 欧美一区二区三区视频免费播放| 久久精品人人做人人爽人人| 亚洲免费av在线| 免费美女久久99| 91麻豆免费看| 精品国产乱码久久久久久久久 | 91麻豆精品国产91久久久资源速度 | 日韩电影一区二区三区四区| 国产电影一区在线| 欧美丝袜丝nylons| 国产婷婷色一区二区三区| 亚洲一区二区三区在线看| 国内不卡的二区三区中文字幕 | 91精彩视频在线| 久久看人人爽人人| 亚洲第一成年网| 成年人国产精品| 久久奇米777| 欧美a一区二区| 色国产综合视频| 国产精品污www在线观看|