Вот тело нитки чтения.
Код
void __fastcall TUSBRead::Execute()
{
int i,curr_buff;
long ReceiveLength;
for(i=0;i<COUNT_READ_BUFF;i++)
{
memset(&Buffers[i].inOverlap,0,sizeof(OVERLAPPED));
Buffers[i].inOverlap.hEvent = CreateEvent(NULL, false, false, "USBIN");
Buffers[i].Context = EndPoint->BeginDataXfer(Buffers[i].Buff,READ_BUFF_SIZE,&Buffers[i].inOverlap);
};
curr_buff = 0;
while(!Terminated)
{
if (!EndPoint->WaitForXfer(&Buffers[curr_buff].inOverlap,1000))
{
//Непонятно что тут делать ???
}
EndPoint->FinishDataXfer(Buffers[curr_buff].Buff,ReceiveLength,&Buffers[curr_buff].inOverlap,Buffers[curr_buff].Context);
Buffers[curr_buff].Context = EndPoint->BeginDataXfer(Buffers[curr_buff].Buff,READ_BUFF_SIZE,&Buffers[curr_buff].inOverlap);
if(ReceiveLength)
{
RxCount += ReceiveLength;
}
if (++curr_buff == COUNT_READ_BUFF) curr_buff = 0;
}
EndPoint->Abort();
for(i=0;i<COUNT_READ_BUFF;i++)
{
EndPoint->FinishDataXfer(Buffers[i].Buff,ReceiveLength,&Buffers[i].inOverlap,Buffers[i].Context);
CloseHandle(Buffers[i].inOverlap.hEvent);
};
}
{
int i,curr_buff;
long ReceiveLength;
for(i=0;i<COUNT_READ_BUFF;i++)
{
memset(&Buffers[i].inOverlap,0,sizeof(OVERLAPPED));
Buffers[i].inOverlap.hEvent = CreateEvent(NULL, false, false, "USBIN");
Buffers[i].Context = EndPoint->BeginDataXfer(Buffers[i].Buff,READ_BUFF_SIZE,&Buffers[i].inOverlap);
};
curr_buff = 0;
while(!Terminated)
{
if (!EndPoint->WaitForXfer(&Buffers[curr_buff].inOverlap,1000))
{
//Непонятно что тут делать ???
}
EndPoint->FinishDataXfer(Buffers[curr_buff].Buff,ReceiveLength,&Buffers[curr_buff].inOverlap,Buffers[curr_buff].Context);
Buffers[curr_buff].Context = EndPoint->BeginDataXfer(Buffers[curr_buff].Buff,READ_BUFF_SIZE,&Buffers[curr_buff].inOverlap);
if(ReceiveLength)
{
RxCount += ReceiveLength;
}
if (++curr_buff == COUNT_READ_BUFF) curr_buff = 0;
}
EndPoint->Abort();
for(i=0;i<COUNT_READ_BUFF;i++)
{
EndPoint->FinishDataXfer(Buffers[i].Buff,ReceiveLength,&Buffers[i].inOverlap,Buffers[i].Context);
CloseHandle(Buffers[i].inOverlap.hEvent);
};
}
Может кто примерчиком поделится, так как манул на либу желает лучшего....
Устройство работает 100% так как есть рабочая софтина писанная нашими программерами.