#include <windows.h>
#include "../STLWinUsb.h"
#include <cassert>
using namespace std;
void CALLBACK UsbDeviceNotify(PTCHAR devicePath, DeviceChangeType_t dct, WORD vid, WORD pid)
{
wprintf(L"UsbDeviceNotify: devicePath:%ws,DeviceChangeType_t:%10ws,vid:0x%.4x,pid:0x%.4x\n", devicePath,
dct== DeviceChangeType_t::Arrival?L"add":L"remove",
(int)vid,
(int)pid);
}
void CALLBACK EpInDataReceive(UINT8 endPointAddr, UINT8* buf, UINT32 bufferLen)
{
printf("DataReceive:len:%0.4d\n",bufferLen);
for (size_t i = 0; i < bufferLen; i++)
{
printf("%0.2x,", buf[i]);
if ((i+1) % 10 == 0)
{
printf("\n");
}
}
printf("\n");
}
int main()
{
printf("entry main!\n");
auto devs = STLWinUsbInfo::GetDevicesPath(DeviceType_t::UsbRawDevice, 0x28e9, 0x018A);
STLWinUsbInfo::StartDeviceNotify(DeviceType_t::UsbRawDevice, UsbDeviceNotify);
auto mydevice0Info = devs.at(0);
STLWinUsb usb(mydevice0Info, 8192);
auto openResult=usb.Open();
if (openResult == false)
{
auto err = usb.LastError();
_CrtDbgBreak();
}
STLWinUsbInEndPointer ep_in(&usb, 0x81, 8192, EpInDataReceive);
//ep_in.Start();
STLWinUsbOutEndPointer ep_out(&usb, 0x01);
int sendcount= 5;
while (sendcount--)
{
UINT8 sendBytes[4] = { 0x64,0x00,0xd0,0x47 };
auto sent = ep_out.Write(sendBytes, 4);
Sleep(1000);
}
STLWinUsbInfo::StopDeviceNotify();
return 0;
}