⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbdevicecommand.cpp

📁 51单片机众多优秀的开发源程序:ZLG7290例程*ZLG7290汇编例程*蜂鸣器音乐例程*蜂鸣器响例程*读EEPROM并显示例程*16×2LCD模块例程*128×64点阵LCD模块例程*直连KEY和
💻 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 + -