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

📄 usb.cpp

📁 ezusb fx2,驱动类fpga和usb的顶层驱动
💻 CPP
字号:
#include "usb.h"
#include "ezusbsys.h"
#include "WINDEF.h"

#include "stdafx.h"
#include "main.h"
#include "devioctl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define MAX_DRIVER_NAME  255

extern HANDLE m_hDevice;
BYTE  data[8192];             //定义 接收从51中读出的块的 变量 qiulibo
bool threadController=0;
DWORD lenBytes=0;
unsigned int count=0;
///////////////////////////////////////////////////////////////////////
HWND hWindow;           
//PointP* m_PointList;    
short MinValue,MaxValue;
long m_InnerUHScreen;   
long m_InnerDHScreen;   
long m_InnerLWScreen;   
long m_InnerRWScreen;   

bool g_KeepGoing = false;   
bool g_Transfering = false; 







/*********************打开设备*********************/
HANDLE WINAPI EzusbOpen()
{
	//AFX_MANAGE_STATE(AfxGetStaticModuleState());
	
    char    pcDriverName[MAX_DRIVER_NAME] = "";
	HANDLE hDevice=NULL;
	for(int i =0; i<32; i++)
	{
		sprintf(pcDriverName, "Ezusb-%d", i);
		if (bOpenDriver (&hDevice, pcDriverName) == TRUE)
		{
			//AfxMessageBox(pcDriverName);
			break;
		}
	}
    if(i==32)
		return NULL;
	return hDevice;
}


/**************************不知道 ********************************/
/*CUSBApp::CUSBApp()
{
}*/

/////////////////////////////////////////////////////////////////////////////
// The one and only CUSBApp object

//CUSBApp theApp;

/***************************初始化设备*******************************/
CUSBApp initialization

BOOL CUSBApp::InitInstance()
{
	AfxEnableControlContainer();
    HANDLE hObject = CreateMutex(NULL,FALSE,"CHINAYCLL");
	if(GetLastError() == ERROR_ALREADY_EXISTS)
	{
		CloseHandle(hObject);
		AfxMessageBox("程序已经运行!");
		return FALSE;
	}
}



/****************************读设备endpoint**********************************/
BOOL EzusbShortdataIn(HANDLE hDevice, BYTE *data, DWORD &lenBytes)
{
	BULK_TRANSFER_CONTROL bulkControl;
	bulkControl.pipeNum=0x03;                              //管道号,原来是0x02
	BOOLEAN bResult= FALSE;
   
	unsigned short temp,TempMax,TempMin;

    bResult = DeviceIoControl (hDevice,
		IOCTL_EZUSB_BULK_READ,                              //io控制,读块 qiulibo
		&bulkControl,
		sizeof (BULK_TRANSFER_CONTROL),
		data,
		8192,
		&lenBytes,
		NULL);

	
		    for (int i=0;i<(unsigned int)(lenBytes/16);i++)
			{
				
                temp=data[4*i]+(data[4*i+1])*16;
				//if(temp>4096) temp=2048; 
				m_PointList[count++].y = temp;
				if (count==256) count=0;
			}
			
			TempMax=TempMin=m_PointList[0].y;
            for (i=1;i<256;i++)
			{				
                if(m_PointList[i].y>TempMax)
					TempMax=m_PointList[i].y;
                else if(m_PointList[i].y<TempMin)
					TempMin=m_PointList[i].y;
			}
			
			MaxValue=TempMax+100;
			MinValue=TempMin-100;

			CRect r;
	        r.SetRect(m_InnerLWScreen , m_InnerUHScreen, m_InnerRWScreen , m_InnerDHScreen);
	        InvalidateRect(r,TRUE); 


	return bResult;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -