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

📄 testhiapi.c

📁 中芯微VC0528测试程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/* Test User's Api                                1.0                    */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*     Vimicro558 User's API		                                 */
/*									 */
/* The last modification date:  02-23-2004                               */
/* REMARKS:  Created initial version 1.0                                 */
/*                                                                       */
/*                Copyright (C) 2004 Vimicro CO.,LTD     		 */
/*************************************************************************/

#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\serial.h"
#include "..\inc\timer.h"
#include "..\inc\IntControl.h"

#include "..\..\vc0528rdk\vim_high_api.h"
#include "V5Hdemo.h"

#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include"vc0528test.h"
//#include "..\inc\picture.h"
#define CBLEN 900
#define DOWNONE 600
char Command_buf[CBLEN];
UINT16 Command_length=0;
UINT8 PreCommand_length=0,DownSum=0;
UINT8 CommandIn=0;
UINT32 Command_para[9],DownFileLength,DownFrameLen;
UINT8 Hpara=0;
UINT8 Para_number=0;
extern UINT16 RGB_buf[240*320*2];
extern UINT8 YUVBuf[0x15000];
extern UINT8 BmpBuf[128*160*2];
extern void V5_SetReg(UINT32 adr, UINT32 val, UINT8 regWType);
extern UINT32 V5_GetReg(UINT32 adr, UINT8 regWType);
extern void V5M_GetMarbAllot(UINT32 *Add);
extern UINT32 Jpeg_Length;
typedef struct _V5H_COMMAND_
{
	char str[200];
	UINT32 ID;
} V5H_Command, *	pV5H_Command;

 typedef enum _V5H_TEST_DOWN
{
	BINGING=0,
	LENGTH,
	CHECKSUM,
	DATA,
	DATAEND
}V5H_TEST_DOWN;
 V5H_TEST_DOWN DownState=BINGING;
 
extern const V5H_Command V5HCommand[];
UINT32 CommandParse(void);
void V5H_DoCommand(UINT32 id);
#ifndef  PYTHON
void RecV5H_Command(UINT8 uOneByte)
{
if(DownState==DATA)
{
	  	Command_buf[Command_length]=uOneByte;
		if(++Command_length>=DownFrameLen)
			{
			CommandIn=1;
			DownState=DATAEND;
			Command_length=0;
			}
}
else if((DownState==CHECKSUM)||(DownState==DATAEND))
{
	  Command_buf[0]=uOneByte;
	  CommandIn=1;
}
else
{
	 if(uOneByte==0x0d||uOneByte==0x0a)
	 	CommandIn=1;  
	  else
	  {
	  	Command_buf[Command_length]=uOneByte;
		if(++Command_length>=CBLEN)
			Command_length=0;
	  }
}


}


#endif
void SendV5H_Command(void)
{

}
extern UINT32 g_band ;
extern void RecV5H_Command(UINT8 uOneByte);
void Init_CommandReceive(void)
{
#ifndef  PYTHON	//InitUart0FroReciveCommand(g_band,(void (*)(UINT8 uOneByte)) Uart_parase);
         SerialIntInit(0,UART_MODE_DEFAULTS ,UART_CTRL_DEFAULTS|UART_CTRL_REV_TOUT_INTR_ON,
               UART_FIFO_DISABLE,g_band, (void (*)(UINT8 uOneByte)) RecV5H_Command, SendV5H_Command);
		Uart_Printf("\nV5H>");
#else
	 SerialIntInit(0,UART_MODE_DEFAULTS ,UART_CTRL_DEFAULTS|UART_CTRL_REV_TOUT_INTR_ON,
               UART_FIFO_DISABLE,g_band, (void (*)(UINT8 uOneByte)) RecV5H_Command, Uart_SendByte);
#endif

}
void Clear_Command(void)
{
	Command_buf[0]=0;
}
void V5H_CommandDeal(void)
{
	if(!CommandIn) return;
	CommandIn=0;
	
	V5H_DoCommand(CommandParse());
	PreCommand_length=Command_length;
	Command_length=0;
	Uart_Printf("\n");
	Uart_Printf("\nV5H>");
}


const V5H_Command V5HCommand[]={

	{"get_file(string)", 1},
	{"down_file(string)", 4},
		
	{"get_marb", 2},
	{"set_marb", 3},
	
	{"V5B_SifI2cReadByte(add)",5},
	{"V5B_SifI2cWriteByte(add, value)",6},
	{"V5B_SifI2cReadWord(add)",105},
	{"V5B_SifI2cWriteWord(add, value)",106},
	
	{"get_reg(addr)", 8},
	{"set_reg(addr,value)", 9},
	
//	{"init_568(MODE)", 10},
//	{"test_register", 11},	
	{"workmode_set(WorkMode)", 12},	
	
	{"preview_mode(MODE,index)", 13},	
	{"preview_exposuretype(TYPE)", 14},		
	{"V5H_Preview_Brightness(Mode,Step)",15},
	{"V5H_Preview_Contrast(Mode,Step)",16},
	{"V5H_Preview_WhiteBalance(Mode,Step)",17},
	{"V5H_Preview_Mirror(mode)",18},
	{"V5H_Preview_Effect(Mode)",19},
	{"V5H_Preview_ExposureMode(mode)", 23},	

	{"V5H_Preview_Zoom(Mode,step)",22},

	{"preview_parameter(Lcd_X,Lcd_Y, Width, Height, )", 20},	
	{"capture_parameter(CapWidth, CapHeight, ThumWidth)", 21},	

	{"V5H_Capture_Quality(Quality)",25},
	
	{"V5H_LCD_WorkMode(Mode,Value)",24},
	{"V5H_Display_Zoom(ZoomStep,jpeg_offsetx,jpeg_offsety)",26},//,Lcd_OffsetX,Lcd_OffsetY,Lcd_Display_W,Lcd_Display_H)",26},


	{"V5H_Capture_Still", 30},	
	{"V5H_Capture_ThumbStill", 31},	
	{"V5HDEMO_CaptureMuliti(frame)",29},
	{"V5HDEMO_CaptureVideo",28},
	{"stop video",52},
	{"V5H_Capture_CompressionRatio(Ratio)",42},
	
	{"V5H_Decode_Jpeg(Width,Height, Mode)",41},
	{"V5H_Display_Jpeg(Lcd_X, Lcd_Y, Display_W, Display_H, Mode)", 32},		
	//{"get_capturelength", 32},		
	{"V5H_LCD_Rctngl(startx,starty,Width,Height)",40},
	{"V5H_LCD_Update(startx,starty,Width,Height)",44},
	{"V5H_LCD_PureColor(startx,starty,Width,Height,color)",45},
	{"V5H_LCD_MIRROR(MODE,LAYER)",43},
	{"V5H_LCD_Panel(Panel)",46},
	{"V5H_TEST",47},
	{"V5H_GET_REG_LIST(MODULE)",48},
	{"V5HDEMO_Encode(int Width,int Height)",49},
	{"V5HDEMO_CaptureAVI",50},
	{"V5HDEMO_DisplayVideo(Lcd_X, Lcd_Y, Display_W, Display_H)",51},
		
	
	{"sensor output(index)",60},
	{"usb_enter", 53}
};

UINT32 CommandParse(void)
{
	UINT16 number=0,i;
	char string[100];
	char *ptr;
	if(!Command_length) Command_length=PreCommand_length;
	memcpy(string,Command_buf,Command_length);string[Command_length]='\0';
	ptr=strchr(string,'?');	
	number=sizeof(V5HCommand)/sizeof(V5H_Command);
	if(ptr )//help
	{
		if(ptr==string) //?--full help
		{
			for(i=0;i<number;i++)
			{
				Uart_Printf( (char *)V5HCommand[i].str);
				Uart_Printf( "\n");
			}
		}
		else//*?--part help
		{
			*ptr='\0';
			for(i=0;i<number;i++)
			{	
				if(strstr(V5HCommand[i].str,string))
				{
					Uart_Printf( (char *)V5HCommand[i].str);
					Uart_Printf( "\n");
				}
			}

		}
		return 0;
	}
//---------get parameter-----------------------------------------------
	ptr=strchr(string,'(');
	ptr++;
	if(ptr)
	{
		if(strchr(ptr,'x')||strchr(ptr,'X'))
			Hpara=1;
		else
			Hpara=0;	
		if(Hpara)
			Para_number=sscanf(ptr, "%x,%x,%x,%x,%x,%x,%x,%x,%x", &Command_para[0],&Command_para[1],&Command_para[2],&Command_para[3],&Command_para[4],&Command_para[5],&Command_para[6],&Command_para[7],&Command_para[8]);
		else
			Para_number=sscanf(ptr, "%d,%d,%d,%d,%d,%d,%d,%d,%d", &Command_para[0],&Command_para[1],&Command_para[2],&Command_para[3],&Command_para[4],&Command_para[5],&Command_para[6],&Command_para[7],&Command_para[8]);
			//Para_number=sscanf("12, 13)" ,"%d ,%d,%d ,%d", &Command_para[0],&Command_para[1],&Command_para[2],&Command_para[3]);	
		//Uart_Printf("\nPara_number=%d",Para_number);
	}

//--------------------------------------------------------------------
	ptr=strchr(string,'(');
	*ptr='\0';
	for(i=0;i<number;i++)
	{
		if(strstr(V5HCommand[i].str,string))
			return V5HCommand[i].ID;
	}
	return 0;
}

///////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////
UINT32 V5H_MarbAdd[30];
 unsigned char g_outputsize=0;
void V5H_DoCommand(UINT32 id)
{
	char string[30],checksum=0;
	char *ptr;
	UINT32 i,length=0;

	UINT16 W,H,value16;
	
	switch(id)
	{
		case 1://get file
			ptr=strchr(Command_buf,'(');
			if(!ptr) return;
			memcpy(string,ptr,20);	string[20]='\0';
			ptr=strchr(string,')');
			if(!ptr) return;
			*ptr='\0';
			ptr=V5HDEMO_GetFile(string,&length);
			if(!ptr) return;
			if(!length)
				{
				Uart_Printf("NoPic\n");
				return;
				}
			for(i=0;i<length;i++) checksum+=ptr[i];
			Uart_Printf("check_sum=%d\n",checksum);
			Delay(50);
			Uart_Printf("file_length=%d\n",length);		
			Delay(50);
			for(i=0;i<length;i++)
				Uart_SendByte(ptr[i]);
			Delay(50);			
			Uart_Printf("\n");	
			break;
		case 4://down file
			ptr=strchr(Command_buf,'(');
			if(!ptr) return;
			memcpy(string,ptr,20);	string[20]='\0';
			ptr=strchr(string,')');
			if(!ptr) return;
			
			Command_length=0;
			ptr=Command_buf;
			*ptr='\0';
			
			ptr=V5HDEMO_DownFile(string);
			if(!ptr) return;
			length=0;
			DownState=LENGTH;
			
			while(1)
				{
				if(CommandIn)
					{
					CommandIn=0;
					switch(DownState)
						{
						case LENGTH:
							//DownFileLength=*(UINT32 *)Command_buf;
							Command_length=0;
							sscanf(Command_buf,"%d",&DownFileLength);
							DownFrameLen=DOWNONE;
							DownState=DATA;
							break;
						case DATA:
						case DATAEND:
							DownState=CHECKSUM;
							for(i=0;i<DownFrameLen;i++)
								{
								ptr[length]=Command_buf[i];
								DownSum+=Command_buf[i];
								length++;
								}
							//Uart_Printf("CHECKSUM\n");
							Command_length=0;
							//DownState=CHECKSUM;
							break;
						case CHECKSUM:
							if(DownSum!=Command_buf[0])
								{
								Uart_Printf("check_sum_error\n");
								DownState=DATA;
								Command_length=0;
								length-=(DownFrameLen);
							//	return ;
								}
							else
								{
								Uart_Printf("check_sum_right\n");
								DownSum=0;
								Command_length=0;
								if(length>=DownFileLength)
									{
									DownFrameLen=DOWNONE;
									DownState=BINGING;
									return;
									}
								else if((DownFileLength-length)<DOWNONE)
									{
									DownFrameLen=DownFileLength-length;
									DownState=DATA;
									}
								else
									DownState=DATA;
								}
							break;
						default:
							break;
						}
					}
				}

			break;
		case 2://get marb
			Uart_Printf("\nget_Marb");
			//V5M_GetMarbAllot(&V5H_MarbAdd[0]);
			Uart_Printf("B0_StartAddress=%x\n",V5H_MarbAdd[0]);//b0 add

⌨️ 快捷键说明

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