📄 usbdevicecommand.cpp
字号:
#include "stdafx.h"
#include <mmsystem.h>
#include "ISP1581_demoDlg.h"
#include "UsbDeviceCommand.h"
#include "headstruct.h"
#include "EasyISP1581Ex.h"
#define MAX 1024
UINT BulkReadPipe(void * pParam)
{
char temp [80],cc[80];
int nResult=0;
int nBytes = 0;
ULONG repeat, loopcounter = 0;
UINT totaltoTx=0, toTxNow=0, exitFlag=0;
struct CThreadParam * threadParam;
CISP1581_demoDlg* testDlg;
unsigned char pcIoBuffer[1024];
DWORD curtime;
int nflag=0;
threadParam=(struct CThreadParam *)pParam;
testDlg = threadParam->testDlg;
repeat = threadParam->repeattimes;
testDlg->m_readtransfer_info.nreadbytes=0;
if(threadParam->buffersize>0)
{
do
{
if(nflag==0)
curtime=timeGetTime();
exitFlag=0;
nResult=Ex_Vender_ScanOrPrint(0x01,threadParam->buffersize);
if(nResult!=0)
{
wsprintf (cc, "Requesting data transfer on ");
strcat( cc, threadParam->pipe_name);
strcat( cc, " failed! Aborted.");
testDlg->MessageBox((LPCSTR)cc, "Test Error");
break;
}
totaltoTx = threadParam->buffersize;
do
{
if(totaltoTx>MAX)
{
totaltoTx = totaltoTx -MAX;
toTxNow =MAX;
}
else
{
toTxNow = totaltoTx;
exitFlag=1;
}
nBytes=Ex_ReadData(2,pcIoBuffer,toTxNow,1000);
if(nBytes==-1||nBytes==0)
break;
}while(exitFlag==0);
if (nBytes>0)
{
testDlg->m_readtransfer_info.bytecount += threadParam->buffersize;
testDlg->m_readtransfer_info.nreadbytes+=threadParam->buffersize;
}
else
{
threadParam->bInThread = FALSE;
testDlg->m_calreadtime.bInThread=FALSE;
break;
}
loopcounter++;
//::SendMessage(testDlg->m_hWnd,WM_UPDATEMESSAGE,1,(LPARAM)curtime);
if(testDlg->m_readtransfer_info.nreadbytes>=MAX)
{
testDlg->UpdateReadInfo(curtime);
testDlg->m_readtransfer_info.nreadbytes=0;
nflag=0;
}
else
nflag=1;
}while((threadParam->bInThread == TRUE) && (loopcounter < repeat));
}
else
threadParam->bInThread = FALSE;
if (loopcounter == repeat)
{
threadParam->bInThread = FALSE;
testDlg->m_calreadtime.bInThread=FALSE;
testDlg->EnableButton(true,false,true,false);
testDlg->EnableEdit(true,true,true,true);
}
return 0;
}
UINT BulkWritePipe(void * pParam)
{
char temp [80],cc[80];
BOOLEAN bResult = FALSE;
int nResult=0;
int nBytes = 0;
int nflag=0;
ULONG repeat, loopcounter = 0;
UINT totaltoTx=0, toTxNow=0, exitFlag=0;
struct CThreadParam * threadParam;
CISP1581_demoDlg* testDlg;
unsigned char pcIoBuffer[1024];
for(int kk=0;kk<1024;kk++)
pcIoBuffer[kk]=kk;
DWORD curtime;
threadParam=(struct CThreadParam *)pParam;
testDlg = threadParam->testDlg;
repeat = threadParam->repeattimes;
testDlg->m_writetransfer_info.nwritebytes=0;
if((repeat>0) &&((threadParam->buffersize)>0))
do {
exitFlag=0;
if(nflag==0)
curtime=timeGetTime();
nResult=Ex_Vender_ScanOrPrint(0x00,threadParam->buffersize);
if(nResult!=0)
{
threadParam->bInThread = FALSE;
wsprintf (cc, "Requesting data transfer on ");
strcat( cc, threadParam->pipe_name);
strcat( cc, " failed! Aborted.");
testDlg->MessageBox((LPCSTR)cc, "Test Error");
break;
}
totaltoTx = threadParam->buffersize;
do
{
if(totaltoTx>MAX)
{
totaltoTx = totaltoTx -MAX;
toTxNow =MAX;
}
else
{
toTxNow = totaltoTx;
exitFlag=1;
}
nBytes=Ex_WriteData(3,pcIoBuffer,toTxNow,1000);
if(nBytes==-1||nBytes==0)
break;
}while(exitFlag==0);
if (nBytes>0)
{
testDlg->m_writetransfer_info.bytecount += threadParam->buffersize;
testDlg->m_writetransfer_info.nwritebytes += threadParam->buffersize;
}
else
{
threadParam->bInThread = FALSE;
testDlg->m_calwritetime.bInThread=FALSE;
break;
}
loopcounter++;
//::SendMessage(testDlg->m_hWnd,WM_UPDATEMESSAGE,2,(LPARAM)curtime);
if(testDlg->m_writetransfer_info.nwritebytes>=MAX)
{
testDlg->UpdateWriteInfo(curtime);
testDlg->m_writetransfer_info.nwritebytes=0;
nflag=0;
}
else
nflag=1;
} while((threadParam->bInThread == TRUE) && (loopcounter < repeat));
if (loopcounter == repeat)
{
threadParam->bInThread = FALSE;
testDlg->m_calwritetime.bInThread=FALSE;
testDlg->EnableButton(true,false,true,false);
testDlg->EnableEdit(true,true,true,true);
}
return 0;
}
UINT ControlIn(void * pParam)
{
BOOLEAN bResult = FALSE;
ULONG nBytes = 0;
unsigned char version=0;
struct CThreadParam * threadParam;
CISP1581_demoDlg* testDlg;
threadParam=(struct CThreadParam *)pParam;
testDlg = threadParam->testDlg;
testDlg->ResetList();
if(Ex_Vender_Read(version)==0)
{
if(version==0x21)
{
testDlg->SetWindowText(" DP-1581");
testDlg->EnableButton(true,false,true,false);
testDlg->EnableEdit(true,true,true,true);
}
else if(version==0x22)
{
testDlg->SetWindowText(" USBPACK 2.0");
testDlg->EnableButton(true,false,true,false);
testDlg->EnableEdit(true,true,true,true);
}
else
{
testDlg->SetWindowText("Unknown Board");
testDlg->EnableButton(false,false,false,false);
return 0;
}
}
else
{
testDlg->SetWindowText("No Board Attached ");
testDlg->EnableButton(false,false,false,false);
return 0;
}
testDlg->ResetList();
testDlg->InsertList();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -