亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? irdll.cpp

?? 嵌入式wince下進行紅外碼的采集和壓縮,平臺:wince42 xscale pxa225
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"
#include "IrDll.h"
#include "Pkfuncs.h"
#include <Afxwin.h>
extern "C" DWORD RequestSysIrq(DWORD DeviceIrq);
#define SYSINTR_ADVIR	0x48	//中斷地址
#define SYSINTR_ADVIRUP	0x49	//中斷地址
#define SYSINTR_ADVOEM	0x4a	//中斷地址

#define SYSINTR_ADVOEM	0x4a	//中斷地址
#define INT_TIMEOUT		30		//中斷超時,單位毫秒
#define INTER_OF_FRAME	16000		//幀間隔標準,單位微秒

#define USER_WAITTIMES	15		//等待用戶操作的時間(秒)
#define END_TIMES		1000			//1000ms內無信號則退出。
#define TIME_TARGET		1000000		//先假設目標單位為微秒
#define TIME_OUT_TARGET		614402		//先輸出目標單位為1.6276us

#define TIME_MAX		60000		//最大寬度,超過這個寬度的電平都削減為此值
//
#define PRECISION_HIGH	80	//脈沖中高電平的精確度80%
#define PRECISION_PULSE	80	//脈沖寬度的精確度(高電平+低電平)80%
#define PULSE_KIND_MAX	8		//脈沖種類最大數
#define PULSE_MAX	512		//脈沖最大數
#define FRAME_MAX	100		//最大幀數
#define PULSE_FAILURE	20	//20us,認為失敗的標準
#define PULSE_MIN		10	//5個脈沖對

//定義輸出限制
#define OUT_PULSE_MAXKIND	8
#define OUT_PULSE_MAX		120	
#define OUT_START_PULSE		4	//脈沖起始位置
#define OUT_BUF_MIN			(OUT_START_PULSE+4 * OUT_PULSE_MAXKIND + OUT_PULSE_MAX/2)
#define OUT_START_INDEX		(OUT_START_PULSE +  4*OUT_PULSE_MAXKIND)	//脈沖索引起始位置
typedef struct tagPULSE{
	int ushHigh;
	int ushLow;
	int nWidth;
	int lTotalHigh;
	int lTotalLow;
	int nNum;	//本類型脈沖的數目
}Pulse_str,*pPulse_str;
typedef struct tagPULSE_COMPRESS{
	Pulse_str PulseList[PULSE_KIND_MAX];
	char cPulse[PULSE_MAX];							//先以一個byte來作為索引,可以有256個脈沖
	//附加的分析信息
	int nFrame;		//幀數量
	int nFramePos[FRAME_MAX];		//存放幀開始的脈沖索引
	int nPulseNum;			//有效脈沖數量
	int nPulseKindNum;		//有效脈沖種類

}Pulse_Compress_str,*pPulse_Compress_str;
//
int g_nRet;		//
#define IROUT_LENGTH	120
char g_cBuf[IROUT_LENGTH]={
	0x00,0x00,0x24,0x00,
	0x01,0x00,0x2,0x00,
	0x01,0x00,0x2,0x00,
	0x01,0x00,0x2,0x00,
	0x01,0x00,0x2,0x00,
	0x01,0x00,0x2,0x00,
	0x01,0x00,0x2,0x00,
	0x01,0x00,0x2,0x00,
	0x08,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
	0x11,0x00,0x2,0x00,
};
BOOL g_bDioRuning =FALSE;
CWinThread *pThreadIr=NULL;
/*
功能:使用DIO進行數據采集
*/
#define IOCTL_GET_DI	0x1002
#define IOCTL_GET_DO	0x1003
#define IOCTL_SET_DO	0x1005
UINT ThreadIRDIO(char *pbuf,int nLen);
UINT ThreadIR( LPVOID pParam );
//	HANDLE	g_hAdvOEMHandle;

void writebuginfo(WCHAR *p);
int CompressData(int *pbuf,int nlen,char *pout,int noutlen);

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
			g_nRet=ERR_IRDLL_NEVERSTUDY;
			memset(g_cBuf,0,IROUT_LENGTH);
			break;
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}
IRDLL_API void BeginIrStudy()
{
	if(g_bDioRuning)
		return ;
//	printf("begin ir study!");
	g_nRet=ERR_IRDLL_RUNNING;
	g_bDioRuning =TRUE;
	memset(g_cBuf,0,IROUT_LENGTH);
	pThreadIr=AfxBeginThread(ThreadIR,NULL,0);

//	g_nRet=54;
}
IRDLL_API void StopIrStudy()
{
	if(g_bDioRuning)
	{
	//	SetEvent(g_hAdvOEMHandle);
		g_bDioRuning =FALSE;
		DWORD dwExit;
		do{
			if(!GetExitCodeThread(pThreadIr->m_hThread,&dwExit))
				break;
		}while(dwExit==STILL_ACTIVE);
	}else
	{
	}

}

IRDLL_API int GetIrData(char *pbuf,int nlen)
{
	if(g_bDioRuning)
	{
//		printf("return %d!",ERR_IRDLL_RUNNING);
		return ERR_IRDLL_RUNNING;
	}
	if(g_nRet <1)
	{
//		printf("return %d!",g_nRet);
		return g_nRet;
	}
	if(nlen < IROUT_LENGTH)
	{
//		printf("return %d!",ERR_IRDLL_BUFMIN);
		return ERR_IRDLL_BUFMIN;
	}
	memcpy(pbuf,g_cBuf,g_nRet>nlen?nlen:g_nRet);
//	printf("return %d!",g_nRet);
	if(g_nRet>IROUT_LENGTH)
		return ERR_IRDLL_OVERBUF;
	return g_nRet;
}
UINT ThreadIR( LPVOID pParam )
{
//	printf("begin ir Thread!");
	WCHAR wTemp[1024];
	int DataList[PULSE_MAX * 2];
	int i;
	int nret =ThreadIRDIO((char *)DataList,PULSE_MAX*sizeof(int)*2);
	{
	//	printf("study return %d!",g_nRet);
	}
	if(nret <=0)
	{
		g_nRet=nret;
		g_bDioRuning =FALSE;
		return -1;
	}
	g_nRet=CompressData(DataList,nret,g_cBuf,IROUT_LENGTH);
	unsigned short *psh=(unsigned short *)g_cBuf+2;
/*	for(i=0;i<IROUT_LENGTH-3;i+=4)
	{
		if(i<36)
			swprintf(wTemp,L"%d - %d",*(unsigned short*)(g_cBuf+i),*(unsigned short*)(g_cBuf+i+2));
		else
			swprintf(wTemp,L"%02X-%02x-%02x-%02x--",*(g_cBuf+i),*(g_cBuf+i+1),*(g_cBuf+i+2),*(g_cBuf+i+3));
		writebuginfo(wTemp);
	}
*/	for(i=0;i<16;i++,psh++)
	{
		*psh = *psh / 1.6276;
	}
/*	for(i=0;i<IROUT_LENGTH-3;i+=4)
	{
		if(i<36)
			swprintf(wTemp,L"%d - %d",*(unsigned short*)(g_cBuf+i),*(unsigned short*)(g_cBuf+i+2));
		else
			swprintf(wTemp,L"%02X-%02x-%02x-%02x--",*(g_cBuf+i),*(g_cBuf+i+1),*(g_cBuf+i+2),*(g_cBuf+i+3));
		writebuginfo(wTemp);
	}
	writebuginfo(L"=========End ==========");
*/
	g_bDioRuning =FALSE;
	return 1;
}

UINT ThreadIRDIO(char *pbuf,int nLen)
{

	HANDLE hCurThread=GetCurrentThread();
	int nPiority = GetThreadPriority(hCurThread);
	DWORD dwQuant=CeGetThreadQuantum(hCurThread);
	int Index=0,nValue,nOld;
	//打開DIO
	HANDLE hDio=NULL;
	DWORD nDi=0,dwTemp;
	LARGE_INTEGER lnFreq,lnTemp,lnPulseList[PULSE_MAX*2];
	memset(lnPulseList,0,sizeof(LARGE_INTEGER)*PULSE_MAX*2);

	hDio = CreateFile(TEXT("DIO1:"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if(hDio == INVALID_HANDLE_VALUE)
	{
	//	printf("Dio driver fail");
		return -1;
	}

//接收GPIO來啟動測試
		DWORD   gSysIntr = 0,dwStat=0;
	HANDLE	hAdvOEMHandle;
	int i,nTimeOut=0,nLastTimeOut=0;
//	LARGE_INTEGER lnFreq,lnPulseList[PULSE_MAX*2];
//	memset(lnPulseList,0,sizeof(LARGE_INTEGER)*PULSE_MAX*2);
	
	// Initial interrupt event
	hAdvOEMHandle = CreateEvent(NULL,FALSE,FALSE,NULL);
	if( hAdvOEMHandle == NULL )
	{	
		g_bDioRuning=FALSE;
		return ERR_IRDLL_CREATEEVENT;
	}

	// Register system interrupt SYSINTR_ADVOEM
	gSysIntr=RequestSysIrq(SYSINTR_ADVIR);
	
	// ensure this interrupt has been disabled
	InterruptDisable(gSysIntr);

	CeSetThreadPriority(hCurThread,0);
	CeSetThreadQuantum(hCurThread,0);
	// This initialization register an event and enable the interrupt
	if (InterruptInitialize( gSysIntr, hAdvOEMHandle, NULL, 0) )
	{
		while(1)
		{
			RETAILMSG (1, (TEXT("Wait for Interrupt !!\r\n")));
			dwStat = WaitForSingleObject( hAdvOEMHandle, USER_WAITTIMES*1000);
			//	CloseHandle(hAdvOEMHandle);
			if( WAIT_OBJECT_0 == dwStat )   
			{
				break;
			}else
			{
				SetThreadPriority(hCurThread,nPiority);
				CeSetThreadQuantum(hCurThread,dwQuant);
				return ERR_IRDLL_OVERTIME;
			}
		}
	}else
	{
		SetThreadPriority(hCurThread,nPiority);
		CeSetThreadQuantum(hCurThread,dwQuant);
	//	CloseHandle(g_hAdvOEMHandle);
		return -1;
	}
//	printf("----------------------------------start\n");//add by gaoj test
	DeviceIoControl(hDio,IOCTL_GET_DI,&nDi,sizeof(DWORD),&nValue,sizeof(int),&dwTemp,NULL);
	nOld=nValue;		
	QueryPerformanceCounter(lnPulseList+Index);
	Index++;
	while(g_bDioRuning)
	{
		DeviceIoControl(hDio,IOCTL_GET_DI,&nDi,sizeof(DWORD),&nValue,sizeof(int),&dwTemp,NULL);
		if(nOld != nValue)
		{
			QueryPerformanceCounter(lnPulseList+Index);
			if(Index !=0)
			{
				lnPulseList[Index].QuadPart=(lnPulseList[Index].QuadPart +lnTemp.QuadPart)/2;
			}

			nOld = nValue;
			Index++;
			if(Index >= PULSE_MAX*2)
				break;
			QueryPerformanceCounter(&lnTemp);
			continue ;
		}
		QueryPerformanceCounter(&lnTemp);
	//	if(Index ==0)
	//	{
	//		if((lnTemp.QuadPart - lnPulseList[Index].QuadPart) /3686 >10000)
	//		{//等待10秒沒有響應
	//			printf("not action====");
	//			break;
	//		}
	//	}else 
			if(Index >=1 && (lnTemp.QuadPart - lnPulseList[Index-1].QuadPart) /3686 >2000)
		{//等待2秒
			QueryPerformanceCounter(lnPulseList+Index);
			Index++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级二级| 亚洲欧美aⅴ...| 国产精品麻豆网站| 日韩高清中文字幕一区| av动漫一区二区| 久久这里只精品最新地址| 亚洲一区二三区| av一区二区久久| 精品粉嫩超白一线天av| 天天影视网天天综合色在线播放| 国产不卡一区视频| 精品国产一区二区亚洲人成毛片| 亚洲综合成人在线| kk眼镜猥琐国模调教系列一区二区| 日韩精品一区在线观看| 亚洲国产精品麻豆| 色欧美片视频在线观看在线视频| 久久精品欧美日韩| 极品少妇xxxx精品少妇偷拍| 欧美日本乱大交xxxxx| 亚洲视频你懂的| 成人三级伦理片| 久久久久久久国产精品影院| 轻轻草成人在线| 欧美丰满嫩嫩电影| 午夜一区二区三区在线观看| 9色porny自拍视频一区二区| 欧美国产日韩精品免费观看| 国产成人三级在线观看| 久久久久一区二区三区四区| 久久99久久精品欧美| 日韩手机在线导航| 精品一区二区国语对白| 精品欧美乱码久久久久久| 久久精品国内一区二区三区| 日韩亚洲欧美在线观看| 久久国产精品99精品国产 | 制服丝袜中文字幕一区| 亚洲一线二线三线视频| 欧美在线一二三| 亚洲123区在线观看| 欧美二区三区91| 久久激情五月激情| 久久综合狠狠综合| 成人精品在线视频观看| 国产精品久久久久aaaa| 一本久久综合亚洲鲁鲁五月天| 亚洲精品一二三四区| 欧美日韩你懂的| 紧缚捆绑精品一区二区| 国产日韩av一区| 欧美日韩国产影片| 亚洲1区2区3区视频| 欧美岛国在线观看| 成人性视频网站| 一区二区三区四区av| 9191久久久久久久久久久| 久国产精品韩国三级视频| 欧美激情中文字幕| 欧美日韩一区二区在线观看| 麻豆91在线看| 日韩理论片在线| 欧美一区二区三区在线看| 国产精品99久久久久久有的能看| 国产精品久久久久桃色tv| 欧美午夜理伦三级在线观看| 久久狠狠亚洲综合| 中文字幕一区二| 欧美一区二区三区思思人| 国产一区二区三区久久久| 亚洲激情五月婷婷| 欧美电影免费提供在线观看| 99精品久久只有精品| 蜜桃久久av一区| 伊人婷婷欧美激情| 2023国产一二三区日本精品2022| 91香蕉视频mp4| 捆绑紧缚一区二区三区视频| 亚洲人成小说网站色在线| 日韩欧美国产综合一区 | 国产精品视频线看| 欧美日韩国产片| 粉嫩蜜臀av国产精品网站| 亚洲成av人影院| 国产精品久久久久久久蜜臀| 欧美一区二区视频网站| 91原创在线视频| 国产精品一区二区久久精品爱涩| 亚洲高清在线视频| 亚洲欧美自拍偷拍色图| 欧美电影免费观看高清完整版在线观看 | 久久久久久亚洲综合影院红桃| 色综合天天综合给合国产| 极品美女销魂一区二区三区| 国产麻豆精品久久一二三| 亚洲网友自拍偷拍| 国产精品福利一区二区三区| 精品国产91久久久久久久妲己| 在线亚洲一区观看| 99久久精品费精品国产一区二区| 久久精品国产在热久久| 亚洲国产va精品久久久不卡综合 | 一区二区三区美女| 国产欧美日韩视频一区二区| 日韩视频一区二区三区在线播放| 91福利在线免费观看| 91亚洲国产成人精品一区二三| 精品一区二区综合| 日韩avvvv在线播放| 亚洲第一福利视频在线| 亚洲精品第1页| 一区二区三区欧美在线观看| 1024精品合集| 亚洲日本在线天堂| 伊人夜夜躁av伊人久久| 亚洲免费在线观看| 一区二区免费在线| 一区二区三区精品在线| 洋洋av久久久久久久一区| 亚洲三级在线看| 夜夜亚洲天天久久| 日本亚洲三级在线| 蜜桃在线一区二区三区| 精品在线亚洲视频| 国产夫妻精品视频| av成人老司机| 日本电影亚洲天堂一区| 欧美亚洲日本一区| 91精品久久久久久蜜臀| 91精品国产色综合久久不卡蜜臀| 欧美久久一区二区| 精品国产网站在线观看| 国产日韩成人精品| 一区二区三区在线影院| 亚洲午夜久久久久久久久电影网| 亚洲一区自拍偷拍| 秋霞电影网一区二区| 国产麻豆精品在线观看| 大尺度一区二区| 欧美影院一区二区| 91麻豆精品国产91久久久更新时间 | 欧美一区二区免费观在线| 精品久久久久久久人人人人传媒 | 美女国产一区二区| 国产精品香蕉一区二区三区| 99re66热这里只有精品3直播 | 亚洲图片欧美一区| 久久超碰97人人做人人爱| 成人美女视频在线观看| 欧美亚洲一区二区三区四区| 日韩欧美国产午夜精品| 国产精品九色蝌蚪自拍| 日韩在线a电影| 成人国产精品免费观看动漫| 91高清视频免费看| 久久伊人蜜桃av一区二区| 亚洲四区在线观看| 久久激情五月婷婷| 欧美亚洲愉拍一区二区| 精品国产乱码久久久久久久久| 亚洲欧美视频在线观看| 蜜臀a∨国产成人精品| 97精品国产97久久久久久久久久久久| 欧美高清dvd| 亚洲免费观看在线观看| 久久精品国产一区二区三| 色婷婷精品久久二区二区蜜臀av | 免费xxxx性欧美18vr| 99精品一区二区| 精品国精品国产尤物美女| 亚洲在线观看免费| 国产精品1024| 日韩午夜电影在线观看| 一区二区三区四区不卡在线| 国产成人夜色高潮福利影视| 欧美一区二区三区免费大片 | 亚洲午夜激情网页| 成人精品gif动图一区| 日韩一区二区三区四区| 亚洲图片自拍偷拍| 99精品久久99久久久久| 国产人成一区二区三区影院| 青草国产精品久久久久久| 色婷婷精品久久二区二区蜜臀av | 精品国产麻豆免费人成网站| 亚洲制服丝袜一区| 91亚洲精品久久久蜜桃| 亚洲国产成人自拍| 国模娜娜一区二区三区| 久久精品日产第一区二区三区高清版 | 99久久久久久| 久久婷婷久久一区二区三区| 免费国产亚洲视频| 欧美巨大另类极品videosbest| 亚洲激情自拍视频| 色哟哟一区二区三区| 日韩理论片在线| 99re在线精品| 亚洲精品va在线观看| 91蜜桃视频在线|