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

📄 vc0528test.c

📁 中芯微VC0528测试程序
💻 C
字号:
/*
 *  Com.c
 *
 *  Copyright (C) 2004 Vimicro Corporation
 *  
 *  This file is the demo for RDK/DRIVER testing
 */


#include "Com.h"
#include "vc0528test.h"
#include"..\..\vc0528rdk\vim_common.h"
#include "..\inc\bmp.h"
#include "..\..\vc0528demo\inc\thin_usr.h"
#include "..\..\vc0528demo\inc\fat_thin.h"

/*   使用示范代码
    1,实现串口收数和发数API
*/
//UINT32 (*pReceiveCom)(UINT8* pbDptr)----->Get_UartRec(UINT8* ptr)
//void (*pSendCom)(UINT8* pbDptr, UINT32 dNum)--->void Send_Uart(UINT8* pbDptr, UINT32 dNum)

UINT8 rec_buffer[100];
UINT8 *precbuff=rec_buffer;
UINT8 *preadbuff=rec_buffer;
UINT16 RGB_buf[240*320];

F_FILE *g_file;

#ifdef PYTHON
void RecV5H_Command(UINT8 uOneByte)  //将此函数放到串口接收中断即可
{
	*precbuff++=uOneByte;
	if((precbuff-rec_buffer)>=100)
		precbuff=rec_buffer;	

}
#endif

UINT32 Get_UartRec(UINT8* ptr)
{
	if(preadbuff!=precbuff)
	{
		*ptr++=*preadbuff++;
		if((preadbuff-rec_buffer)>=100)
			preadbuff=rec_buffer;
		return 1;
	}
	else
		return 0;

}

void Send_Uart(UINT8* pbDptr, UINT32 dNum)
{
	while(dNum--)
		 Uart_SendByte(*pbDptr++);
}

/*
//将下面的代码放到MAIN.C中,注意之前先初始化UART
Com_Init(Get_UartRec, Send_Uart);   
while(1)
{
	Test_Process();
}	
*/

void test578_LCDIF_BypassLcdRed(UINT16 startx,UINT16 starty,UINT16 width,UINT16 height)
{
	UINT16 i,j;
	VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_BYPASS);

	for(i=starty;i<starty+height;i++)
	{
		*(volatile UINT16*)(0x8000000) = 0x21;
		*(volatile UINT16*)(0x8000200) = 0x100*i+startx; 
		*(volatile UINT8*)(0x8000000) = 0x22;
		for(j=startx;j<startx+width;j++)
		{
			*(volatile UINT16*)(0x8000200) = 0xf800;
		}
	}
}

#define BUFLEN 0x160000

UINT32 g_BufLen = 1;
UINT32 g_BufLen2 = 0;
UINT32 g_BufId = 0;
UINT32 g_picnum = 1;

extern UINT8 JpegBuf[0x160000];
extern UINT8 YUVBuf[0x15000];
extern UINT8 BmpBuf[128*160*2];
extern UINT8 ThumbBuf[0x1000];
UINT8  *g_TestBuffer=JpegBuf;
char g_TestBuffer2[20480];

void CaptureCallback(UINT8 Status, UINT32 Byte_Length)
{
	switch (Status)
	{
	case VIM_HAPI_ONEFRAME_END:
		break;
	case VIM_HAPI_CAPTURE_END:
		Beep(1);
		Delay(50);
		Beep(0);
		g_BufLen=Byte_Length;

		//Uart_Printf("\n568 ISR_MarbEncDone!CapFileLength=%x",Byte_Length);
		//Uart_Printf("\n568 ISR_MarbEncDone!V5H_Capture_GetFrmCount=%d",V5H_Capture_GetFrmCount());
		break;
	//case V5H_FIFO_FULL:
		//Uart_Printf("\n568 ISR_MarbFifoCnt!CapFileLength=%x",Byte_Length);
		//break;
	case VIM_HAPI_BUF_ERROR:
		g_BufLen=0;
		//Uart_Printf("\n568 ISR_Buf error,ID%d",Byte_Length);
		break;
	}
}
void Test_Process(void)
{
	UINT16 ID;
	UINT32 i;
	UINT8 temp;
	const char name[200];
	if(Com_Check())
	{
		if(Com_GetMainID()==FILE_COMMAND)
		{
			ID=Com_GetFuncID();
			//Com_GetFuncPara();
			switch(ID)
			{
				case FILE_UPLOAD_COMMAND:
					//memset(g_TestBuffer,0x2,10240);
					g_BufId = dPara[1];
					if(g_BufId > 1)
					{
						dPara[0] = 0x10;	// buffer Id Error
						Com_ReturnValue(1);
					}
					else
					{
						if(g_BufId == 0)
						{
							dPara[0] = 0x0;
							dPara[1] = g_BufLen;
							Com_ReturnValue(2);
							Delay(500);
							Com_UploadFile((UINT8 *)g_TestBuffer,dPara[1]);
						}
						else if (g_BufId == 1)
						{
							dPara[0] = 0x0;
							dPara[1] = g_BufLen2;
							Com_ReturnValue(2);
							Delay(500);
							Com_UploadFile((UINT8 *)g_TestBuffer2,dPara[1]);								
						}
					}
					break;
				case FILE_DOWNLOAD_COMMAND:
					//memset(g_TestBuffer,0x1,10240);
					g_BufId = dPara[1];
					if(g_BufId > 1)
					{
						dPara[0] = 0x10;	// buffer Id Error
						Com_ReturnValue(1);
					}
					else
					{
						if(g_BufId == 0)
						{
							g_BufLen = dPara[0];
							dPara[0] = 0x0;
							Com_ReturnValue(1);
							g_TestBuffer=JpegBuf;
							Com_DownloadFile(g_TestBuffer,g_BufLen);
						}
						else
						{
							g_BufLen2 = dPara[0];
							dPara[0] = 0x0;
							Com_ReturnValue(1);
							Com_DownloadFile((UINT8 *)g_TestBuffer2,g_BufLen2);								
						}
					}
					Delay(1);
					break;
			}		
		}
		else if(Com_GetMainID()==COMMAND578)
		{
			ID=Com_GetFuncID()	;
			//Com_GetFuncPara();
			switch(ID)
			{
			case cV858_HIF8_WRITE:
				Com_ReturnValue(0);
				VIM_HIF_SetReg8(dPara[0],dPara[1]);
				break;
			case cV858_HIF8_READ:
				dPara[0]=VIM_HIF_GetReg8(dPara[0]);
				//dPara[0]=8;
				Com_ReturnValue(1);
				break;
			case cV858_HIF16_WRITE:
				Com_ReturnValue(0);
				VIM_HIF_SetReg16(dPara[0],dPara[1]);
				break;
			case cV858_HIF16_READ:
				//dPara[0]=16;
				dPara[0]=VIM_HIF_GetReg16(dPara[0]);						
				Com_ReturnValue(1);						
				break;	
			case cV858_HIF32_WRITE:
				Com_ReturnValue(0);
				VIM_HIF_SetReg32(dPara[0],dPara[1]);
				break;
			case cV858_HIF32_READ:
				//dPara[0]=32;
				dPara[0]=VIM_HIF_GetReg32(dPara[0]);
				Com_ReturnValue(1);						
				break;	
			//file operate
			case cVIM_OPEN_FILE_WRITE:
				sprintf(name,"%d.jpg",g_picnum);
				g_file=f_open(name,"w+");
				if(g_file)
					dPara[0]=0;
				else
					dPara[0]=1;
				Com_ReturnValue(1);	
				break;
			case cVIM_OPEN_FILE_READ:
				if( g_picnum>37)
					g_picnum=0;
				sprintf(name,"%d.jpg",g_picnum);
				g_file=f_open(name,"r+");
				if(g_file)
					dPara[0]=0;
				else
					dPara[0]=1;
				Com_ReturnValue(1);	
				break;
			case cVIM_CLOSE_FILE:
				if(g_BufLen)
					dPara[0]=f_close(g_file);
				else
					dPara[0]=28;
				g_picnum++;
				Com_ReturnValue(1);	
				break;
			case cV578_HAPI_SetWordMode:
				dPara[0]=(UINT32)VIM_HAPI_SetWorkMode((VIM_HAPI_WORKMODE)dPara[0]);
				Com_ReturnValue(1);	
				break;	
			case cV578_LCDIF_BypassLcdRed:
				test578_LCDIF_BypassLcdRed(dPara[0],dPara[1],dPara[2],dPara[3]);	
				Com_ReturnValue(0);
				break;	
			case cV578_HAPI_DrawLcdRctngl:
				if((dPara[3]==40)&(dPara[4]==30))
					g_TestBuffer=(UINT8  *)rgb40x30;
				else if((dPara[3]==64)&(dPara[4]==48))
					g_TestBuffer=(UINT8  *)rgb64x48;
				else
					g_TestBuffer=(UINT8  *)BMP1;
				dPara[0]=VIM_HAPI_DrawLCDRctngl((VIM_HAPI_LAYER)dPara[0],dPara[1],dPara[2],dPara[3],dPara[4],(HUGE  UINT8 *)g_TestBuffer);//(UINT8 *)RGB_buf);
				Com_ReturnValue(1);	
				break;
	
			case cV578_HAPI_UpdateLcd:
				dPara[0]=VIM_HAPI_UpdateLCD((VIM_HAPI_LAYER)dPara[0],dPara[1],dPara[2],dPara[3],dPara[4]);
				Com_ReturnValue(1);	
				break;	
			case cVIM_HAPI_SelectLCDPanel:
				dPara[0] = VIM_HAPI_SelectLCDPanel(dPara[0]);
				Com_ReturnValue(1);							
				break;
			case cVIM_HAPI_DrawLCDPureColor:
				dPara[0] = VIM_HAPI_DrawLCDPureColor(dPara[0],dPara[1],dPara[2],dPara[3],dPara[4],dPara[5]);
				Com_ReturnValue(1);
				break;
			case cVIM_HAPI_SetLCDColordep:
				dPara[0] = VIM_HAPI_SetLCDColordep(dPara[0]);
				Com_ReturnValue(1);						
				break;
			case cVIM_HAPI_SetLCDMirror:
				dPara[0] = VIM_HAPI_SetLCDMirror(dPara[0],dPara[1]);
				Com_ReturnValue(1);						
				break;
			case cVIM_HAPI_SetLCDSize:
				dPara[0] = VIM_HAPI_SetLCDSize(dPara[0],dPara[1],dPara[2],dPara[3],dPara[4]);
				Com_ReturnValue(1);							
				break;		
			case cV578_HAPI_SetLcdWorkMode:
				dPara[0]=VIM_HAPI_SetLCDWorkMode((VIM_HAPI_LCDWORKMODE)dPara[0],dPara[1]);
				Com_ReturnValue(1);	
				break;
			case cV578_I2cWriteByte:
				dPara[0] = VIM_SIF_I2cWriteByte((UINT8)dPara[0],dPara[1]);
				Com_ReturnValue(1);	
				break;
			case cV578_I2cReadByte:
				dPara[0] = VIM_SIF_I2cReadByte((UINT8)dPara[0],&temp);
				dPara[1] = temp;
				Com_ReturnValue(2);	
				break;
			case cV578_HAPI_SetCaptureParameter:
				dPara[0] = VIM_HAPI_SetCaptureParameter((UINT16)dPara[0],(UINT16)dPara[1]);
				Com_ReturnValue(1);	
				break;
			case cV578_HAPI_SetPreviewParameter:
				dPara[0] = VIM_HAPI_SetPreviewParameter((UINT16)dPara[0],(UINT16)dPara[1],(UINT16)dPara[2],(UINT16)dPara[3]);
				Com_ReturnValue(1);	
				break;
			case cV578_HAPI_SetPreviewMode:
				dPara[0] = VIM_HAPI_SetPreviewMode((VIM_HAPI_PREVIEW_MODE)dPara[0]);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_CaptureStill:
				if(dPara[0]==VIM_HAPI_ROM_SAVE)
					g_TestBuffer=(UINT8 *)g_file;
				else
					g_TestBuffer=JpegBuf;
				g_BufLen=0;
				if(dPara[1]==0)
				{
					dPara[0] = VIM_HAPI_CaptureStill((UINT8)dPara[0],g_TestBuffer,BUFLEN,0);
					g_BufLen=VIM_HAPI_GetCaptureLength();
					Beep(1);
					Delay(50);
					Beep(0);
				}
				else
					dPara[0] = VIM_HAPI_CaptureStill((UINT8)dPara[0],g_TestBuffer,BUFLEN,CaptureCallback);							
				Com_ReturnValue(1);	
				break;

			case cVIM_INT_USB:
				MassStorage_Init();
				break;
			case cVIM_HAPI_SetCaptureVideoInfo:
				if(dPara[0]==VIM_HAPI_ROM_SAVE)
					g_TestBuffer=(UINT8 *)g_file;
				else
					g_TestBuffer=JpegBuf;
				dPara[0]=VIM_HAPI_SetCaptureVideoInfo((UINT8)dPara[0],(UINT8)dPara[1],(UINT8)dPara[2]);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_StartCaptureVideo:
				dPara[0]=VIM_HAPI_StartCaptureVideo(g_TestBuffer,BUFLEN,CaptureCallback);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_StopCapture:
				dPara[0]=VIM_HAPI_StopCapture();
				Com_ReturnValue(1);	
				break;	
			//form here testing by Amanda Deng
			case cVIM_HAPI_ReadyToDisplay:
				if(dPara[0]==VIM_HAPI_ROM_SAVE)
					g_TestBuffer=(UINT8 *)g_file;
				else
					g_TestBuffer=JpegBuf;
				dPara[0] = VIM_HAPI_ReadyToDisplay((VIM_HAPI_SAVE_MODE)dPara[0],g_TestBuffer,dPara[1],(UINT16)dPara[2],(UINT16)dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
				//UINT16    VIM_HAPI_ReadyToDisplay (  SaveMode,  jpegBuf,  length,  LcdOffsetX,  LcdOffsetY,  DisplayWidth,  DisplayHeight)
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_DisplayOneFrame:
				dPara[0] =VIM_HAPI_DisplayOneFrame(NULL,0);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_Display_Jpeg:
				if(dPara[0]==VIM_HAPI_ROM_SAVE)
					g_TestBuffer=(UINT8 *)g_file;
				else
					g_TestBuffer=JpegBuf;
				dPara[0] = VIM_HAPI_Display_Jpeg((VIM_HAPI_SAVE_MODE)dPara[0],g_TestBuffer,dPara[1],(UINT16)dPara[2],(UINT16)dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
				//UINT16    VIM_HAPI_Display_Jpeg (  SaveMode,  jpegBuf,  length,  LcdOffsetX,  LcdOffsetY,  DisplayWidth,  DisplayHeight)
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_DisplayPan:
				//UINT16 VIM_HAPI_DisplayPan( LcdOffsetX,  LcdOffsetY,   JpegOffsetX,   JpegOffsetY,  DisplayWidth,   DisplayHeight);
				dPara[0] = VIM_HAPI_DisplayPan((UINT16)dPara[0],(UINT16)dPara[1],(UINT16)dPara[2],(UINT16)dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_SetThumbParameter:
				dPara[0] =VIM_HAPI_SetThumbParameter((UINT16)dPara[0],(UINT16)dPara[1]);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_Decode_Jpeg:
				if(dPara[0]==VIM_HAPI_ROM_SAVE)
					g_TestBuffer=(UINT8 *)g_file;
				else
					g_TestBuffer=JpegBuf;
				//UINT16 VIM_HAPI_Decode_Jpeg(  SaveMode,  DecodeMode, jpegBuf,  pDest,   jpeglength,   Destlength,  Target_Width,  Target_Height);
				switch (dPara[1])
				{
					case VIM_DECODE_RESIZE_TO_RGB:
					case VIM_DECODE_WITHFRAME_TO_RGB:
						dPara[0] = VIM_HAPI_Decode_Jpeg((VIM_HAPI_SAVE_MODE)dPara[0],(UINT8)dPara[1],g_TestBuffer,BmpBuf,dPara[2],dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
						break;
					case VIM_DECODE_RESIZE_TO_YUV:
					case VIM_DECODE_WITHFRAME_TO_YUV:
						dPara[0] = VIM_HAPI_Decode_Jpeg((VIM_HAPI_SAVE_MODE)dPara[0],(UINT8)dPara[1],g_TestBuffer, YUVBuf,dPara[2],dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
						break;
				}
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_YuvToRgb:
				//UINT16 VIM_HAPI_YuvToRgb( pYUV,  pRgb,  Source_Width,  Source_height,  Method);
				dPara[0] = VIM_HAPI_YuvToRgb(YUVBuf,BmpBuf,(UINT16)dPara[0],(UINT16)dPara[1],VIM_CON_UYVY_565);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_SetPreviewZoom:
				dPara[0] = VIM_HAPI_SetPreviewZoom((UINT16)dPara[0],(UINT16)dPara[1]);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_SetCaptureQuality:
				dPara[0] = VIM_HAPI_SetCaptureQuality((UINT16)dPara[0]);
				Com_ReturnValue(1);	
				break;
			case cVIM_HAPI_CaptureThumbStill:
				VIM_HAPI_CaptureThumbStill(VIM_HAPI_RAM_SAVE,JpegBuf,ThumbBuf,0x160000,0);
				g_Reverse=0;
				VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_16BIT);
				VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B0_LAYER,0,0,(UINT16)dPara[0],(UINT16)dPara[1],ThumbBuf);
				//VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B1_LAYER,0,30,40,30,ThumbBuf);
				VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,(UINT16)dPara[0],(UINT16)dPara[1]);
				Delay(10);
				dPara[0]=0;
				VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_15BIT);
				Com_ReturnValue(1);	
				break;

			}
		}
	}
}

⌨️ 快捷键说明

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