Ejemplo n.º 1
0
// Function Name: display_init
// Author: Drew Schuster
// Called by: main
// Purpose: Initializes the display
// Calling convention: display_init();
// Conditions at exit: Display will be initialized, text can now be displayed
// Date Started: March 14th
// Update History: 	See Github repository at https://github.com/dr3wster/We-are-Wireless-Audio
void display_init(void)
{
  //Reset pin for the LED display
  PINSEL6 &= 0xFFFFFCFF;
  FIO3DIR = 1 << 4 ; //pin configured as output
  FIO3SET =1<<4; //pin goes High


  //Let's setup the volume input pins! P3[2-4]
  PINSEL6 &=		 0xFFFFFC0F ;	 // Configure all 3 pins as I/O

  
  while (clock_1s ==0);
  clock_1s=0;
  FIO3CLR =1<<4 ; // pin goes Low.
  while (clock_1s ==1);
  while (clock_1s ==0);
  clock_1s=0;
  //set nReset to high
  FIO3SET =1<<4; //pin goes High
  while (clock_1s==1);
  while (clock_1s==0);
  clock_1s=0;
  sendchar3(0x55);
  in = getkey3();
  if (in != 6)
  {	   
    //We have a problem, ack was not received properly!
  }

    
  /*Initialization complete*/
  //Set a black background
  sendchar3(0x42);
  sendchar3(0x00); 
  sendchar3(0x00); 
  in = getkey3();
  

}
Ejemplo n.º 2
0
//接收反馈数据缓冲
int FINGERPRINT_Recevice_Data(int ucLength)
{
	int i=0;
	int ch;
	int timeout = 0;
	while(1) {	 
		if(timeout++ >= 1000000000) {
			return -1;
		} 
		ch = getkey3();		
		if(ch != -1) {	
			UART_RECEVICE_BUFFER[i] = ch;
			i++;
			if(i==ucLength){
				break;
			}
		} 
	}


	return 	UART_RECEVICE_BUFFER[9];
}
Ejemplo n.º 3
0
/*------------------ FINGERPRINT命令字 --------------------------*/
//接收反馈数据缓冲
int FINGERPRINT_Recevice_Data(int ucLength)
{
	int i=0;
	int ch;
	int timeout = 0;
	while(1) {	 
		if(timeout++ >= 1000000000) {
			return -1;
		} 
		ch = getkey3();		
		if(ch != -1) {	
			UART_RECEVICE_BUFFER[i] = ch;
			i++;
			if(i==ucLength){
				break;
			}
		} 
	}


	return 	UART_RECEVICE_BUFFER[9];
}


//读模块系统基本参数
int ZAZ_SetSysPara(void)
{
	int i;
	for(i=0;i<6;i++) //发送包头 
	{
		SER_PutChar3(ZAZ_Pack_Head[i]);
	}

	for(i=0;i<8;i++){
		SER_PutChar3(ZAZ_Set_Syspara[i]);

	}

	FINGERPRINT_Recevice_Data(12);

	return 0; 

}

int * ZAZ_ReadSysPara(void)
{
	int i;
	int ret[17];
	for(i=0;i<6;i++) //发送包头 
	{
		SER_PutChar3(ZAZ_Pack_Head[i]);
	}
	for(i=0;i<6;i++) //发送命令 0x1d
	{
		SER_PutChar3(ZAZ_Read_SysPara[i]);
	}

	FINGERPRINT_Recevice_Data(28);
	for(i=0;i<17;i++){
		ret[i]=	UART_RECEVICE_BUFFER[i+9];
	}

	return ret;
}

static int FINGERPRINT_Cmd_Get_Img(void)
{
	int i;

	for(i=0;i<6;i++) //发送包头
	{  
		SER_PutChar3(ZAZ_Pack_Head[i]);
	}

	for(i=0;i<6;i++) //发送命令 0x1d
	{
		SER_PutChar3(ZAZ_Get_Img[i]);
	}

	return 0;
}

//录入指纹图像
int ZAZ_GetImag(void)
{
	int ret;
	do{	
		FINGERPRINT_Cmd_Get_Img(); //获得指纹图像
		ret=FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码
	}while(ret!=ZAZ_OK);	

	return ret;
}



static void FINGERPRINT_Img_To_Buffer(int BufferID)
{
	unsigned long temp = 0;
	int i;
	ZAZ_Img_To_Buffer[4]=BufferID;

	for(i=0;i<5;i++)   //计算校验和
		temp = temp + ZAZ_Img_To_Buffer[i];

	ZAZ_Img_To_Buffer[5]=(temp & 0xFF00) >> 8; //存放校验数据
	ZAZ_Img_To_Buffer[6]= temp & 0x00FF;

	for(i=0;i<6;i++)    //发送包头
		SER_PutChar3(ZAZ_Pack_Head[i]);   

	for(i=0;i<7;i++)
		SER_PutChar3(ZAZ_Img_To_Buffer[i]);


}

//图像生成特征存于BufferID中
int ZAZ_GenChar(int BufferID)
{
	int ret=0;
	FINGERPRINT_Img_To_Buffer(BufferID); //发送命令 将图像转换成 特征码 存放在 CHAR_buffer
	ret=FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码
	return ret;

}


//将BUFFER1 跟 BUFFER2 中的特征码合并成指纹模版
int ZAZ_RegModel(void)
{
	int i;    
	int ret=0;
	for(i=0;i<6;i++) //包头
	{
		SER_PutChar3(ZAZ_Pack_Head[i]);
	}  

	for(i=0;i<6;i++)  //命令合并指纹模版
	{
		SER_PutChar3(ZAZ_Reg_Model[i]); 
	}
	ret=FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码

	return ret;
}

//接收后续数据包
// /***start: 2 adder: 4  pid: 1 length: 2 data: 128 sum: 2  共139个字节  发送7个数据包 1个结束数据包****/
static int Subsequent_Recevice_Data()
{
	int ch;
	static int n=0;
	int cnt;
	int DATA_LONG=0;
	int Subsequent_RECEVICE_HEAD[6]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF};
	int Subsequent_PID[2]={0x02,0x08};
	int NUM=0;
	BUFFER_NUM=0;

	while(1){
		ch=getkey3();
		if(ch!=-1){
			Subsequent_RECEVICE_BUFFER[BUFFER_NUM] = ch;
			//	SER_PutChar2(Subsequent_RECEVICE_BUFFER[BUFFER_NUM]); 
			if(BUFFER_NUM >= 1111){
				break;
			}
			BUFFER_NUM++;
		}
	}

	while(1){
		if((Subsequent_RECEVICE_BUFFER[NUM]==Subsequent_RECEVICE_HEAD[0])&&(Subsequent_RECEVICE_BUFFER[NUM+1]==Subsequent_RECEVICE_HEAD[1])&&(Subsequent_RECEVICE_BUFFER[NUM+2]==Subsequent_RECEVICE_HEAD[2])&&(Subsequent_RECEVICE_BUFFER[NUM+3]==Subsequent_RECEVICE_HEAD[3])&&(Subsequent_RECEVICE_BUFFER[NUM+4]==Subsequent_RECEVICE_HEAD[4])&&(Subsequent_RECEVICE_BUFFER[NUM+5]==Subsequent_RECEVICE_HEAD[5])){		
			NUM+=6;
			if(Subsequent_RECEVICE_BUFFER[NUM]==Subsequent_PID[0]){
				Subsequent_RECEVICE_LENGTH[0]=Subsequent_RECEVICE_BUFFER[++NUM];
				Subsequent_RECEVICE_LENGTH[1]=Subsequent_RECEVICE_BUFFER[++NUM];
				DATA_LONG=Subsequent_RECEVICE_LENGTH[0];
				DATA_LONG=DATA_LONG << 8 | Subsequent_RECEVICE_LENGTH[1];
				DATA_LONG -= 2;
				cnt=0;
				while(cnt < DATA_LONG){	  	
					Subsequent_RECEVICE_DATA[n]=Subsequent_RECEVICE_BUFFER[++NUM];
					n++;
					cnt++;
				} 
				Subsequent_RECEVICE_SUM[0]=Subsequent_RECEVICE_BUFFER[++NUM];
				Subsequent_RECEVICE_SUM[1]=Subsequent_RECEVICE_BUFFER[++NUM];

			}else if(Subsequent_RECEVICE_BUFFER[NUM]==Subsequent_PID[1]){

				Subsequent_RECEVICE_LENGTH[0]=Subsequent_RECEVICE_BUFFER[++NUM];
				Subsequent_RECEVICE_LENGTH[1]=Subsequent_RECEVICE_BUFFER[++NUM];
				DATA_LONG=Subsequent_RECEVICE_LENGTH[0];
				DATA_LONG=DATA_LONG << 8 | Subsequent_RECEVICE_LENGTH[1];
				DATA_LONG -= 2;
				cnt=0;
				while(cnt < DATA_LONG){	  	
					Subsequent_RECEVICE_DATA[n]=Subsequent_RECEVICE_BUFFER[++NUM];				 	
					n++;
					cnt++;
				} 
				Subsequent_RECEVICE_SUM[0]=Subsequent_RECEVICE_BUFFER[++NUM];
				Subsequent_RECEVICE_SUM[1]=Subsequent_RECEVICE_BUFFER[++NUM];

				break;

			}
		}

		NUM++;
	}


	return 0;
}