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

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

?? communication.c

?? 基于ARM嵌入式系統應用開發實例,生物識別代碼
?? C
字號:
/**************************************************************************************************
 * FILENAME
 *     flash.c
 *
 * VERSION
 *     1.0
 *
 * DESCRIPTION
 *     This file contains the timer initial routine and timer ISR.
 *
 * DATA STRUCTURES
 *     None
 *
 * FUNCTIONS
 *     1. 
 *     2. 
 *
 * HISTORY
 *     10/28/2003		 Ver 1.0 Created by Hank Ji
 *
 * REMARK
 *     None
 *     
 *************************************************************************************************/
#include <stdio.h>
#include "740defs.h"

#define C_communication
#include "ist.h"


/************************************************/
/*	Name: 	Fun_pc_com							*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			communication with pc				*/
/************************************************/
bool Fun_pc_com(void)
{
  uint16 temp1;

//get head char  
  pcdata.head = Fun_UART_getchar(); 	
  RevData[0] = pcdata.head;

//get other ascii and end char  
  temp1 = Fun_UART_getdata(RevData);
  if(temp1 == 0)
  {
    nops;
    return False;			//receive fail
  }
  
  pcdata.command = RevData[1];
  pcdata.size = (RevData[2]*256) + RevData[3];
  pcdata.error = RevData[temp1 - 2];
  pcdata.parity = RevData[temp1 - 1];
  pcdata.end = RevData[temp1];
  
  if(pcdata.size != (temp1-6))
  {
    RevData[2] = 0;
    RevData[3] = 0;
    RevData[4] = ERR_SIZE;
    RevData[5] = check_sum(RevData,4);
    RevData[6] = PCCOM_END;
    
    Fun_UART_senddata(RevData,6,0);
	return False;
  }

  if(pcdata.error != 0)
  {
    RevData[2] = 0;
    RevData[3] = 0;
    RevData[4] = ERR_ERR;
    RevData[5] = check_sum(RevData,4);
    RevData[6] = PCCOM_END;
    
    Fun_UART_senddata(RevData,6,0);
	return False;
  }

  if(pcdata.parity != check_sum(RevData,(temp1-2)))
  {
    RevData[2] = 0;
    RevData[3] = 0;
    RevData[4] = ERR_PARITY;
    RevData[5] = check_sum(RevData,4);
    RevData[6] = PCCOM_END;
    
    Fun_UART_senddata(RevData,6,0);
	return False;
  }
  
  switch(pcdata.command)
  {
    case CMD_TEST:
        Fun_pccom_test();
        break;
    case CMD_GET_IMAGE:
        Fun_pccom_getimage();
        break;
    case CMD_GET_SYS:
        Fun_pccom_getsys();
        break;
    case CMD_GET_IO:
        Fun_pccom_getio();
        break;
    case CMD_SET_IO:
        Fun_pccom_setio();
        break;
    case CMD_POWER_OFF:
        Fun_pccom_poweroff();
        break;
	case CMD_SEND_IMG_BEGIN:
 		Fun_SEND_IMG_BEGIN();
 		break;
	case CMD_SEND_IMG_NEXT:
 		Fun_SEND_IMG_NEXT();
 		break;
	case CMD_SEND_IMG_AGAIN:
 		Fun_SEND_IMG_AGAIN();
 		break;
	case CMD_SEND_IMG_END:
 		Fun_SEND_IMG_END();
 		break;
	case CMD_TEST_SYSTEM:
		Fun_test_system();
		break;
	case CMD_TEST_IMAGE:
		Fun_test_image();
		break;
    default:
        break;
  }

  return True;
}


/************************************************/
/*	Name: 	Fun_test_system						*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			Read Image and transfer to pc		*/
/************************************************/
void Fun_test_system(void)
{
  RevData[4] = ERR_NONE;

  
  if(Fun_test_flash())
  {
  	  RevData[4] |= ERR_FLASH;

  }
  
  RevData[2] = 0;
  RevData[3] = 0;
  RevData[5] = check_sum(RevData,4);
  RevData[6] = PCCOM_END;
  Fun_UART_senddata(RevData,6,0);
}



bool Fun_test_flash(void)
{
  uint8 chs = 0;
  uint8 chs1 = 0;
  uint32 i;
  	//check boot
  for(i=0;i<0xfff;i++)
  {
     chs = chs +  VPchar(Flash_baseaddr+i);
  }
  
  if(chs != VPchar(Flash_baseaddr+0xfff))return False;
  	//check download
  chs = 0;
  for(i=0x1000;i<0x2fff;i++)
  {
     chs = chs +  VPchar(Flash_baseaddr+i);
  }
  
  if(chs != VPchar(Flash_baseaddr+0x2fff))return False;
  	//check main
  chs = 0;
  for(i=0x3000;i<0x2afff;i++)
  {
     chs = chs +  VPchar(Flash_baseaddr+i);
  }
  
  if(chs != VPchar(Flash_baseaddr+0x2afff))return False;
  	//check parameter page
  chs = 0;
  for(i=0x2ff00;i<0x2ff7f;i++)
  {
     chs = chs +  VPchar(Flash_baseaddr+i);
  }
  
  for(i=0x2ff80;i<0x2ffff;i++)
  {
     chs1 = chs1 +  VPchar(Flash_baseaddr+i);
  }

  if(chs != VPchar(Flash_baseaddr+0x2ff7f))
  {
     if(chs1 != VPchar(Flash_baseaddr+0x2ffff))return False;
  }
  
  return True;
}
/************************************************/
/*	Name: 	Fun_test_image						*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			Read Image and transfer to pc		*/
/************************************************/
void Fun_test_image(void)
{
  uint32 i;
  uint8 dat = RevData[4];
  
  if(Fun_Sensor_init())
  {
	  Led_greenoff;

	  RevData[2] = 0;
  	  RevData[3] = 0;
	  RevData[4] = ERR_TEST_IMAGE;
	  RevData[5] = check_sum(RevData,4);
	  RevData[6] = PCCOM_END;
	  Fun_UART_senddata(RevData,6,0);
	  return;
  }

  if(Fun_capture_image(ImageBuffer)==True)
  {
     for(i=0;i<MIN_IMAGE_SIZE;i++)
     {
	   if(ImageBuffer[i] != dat)
	   {
  	     RevData[4] = ERR_TEST_IMAGE;
  	     break;
	   }
     }
     RevData[4] = ERR_NONE;
  }
  else
  {
   	 RevData[4] = ERR_TEST_IMAGE;
  }  
  
  RevData[2] = 0;
  RevData[3] = 0;
  RevData[5] = check_sum(RevData,4);
  RevData[6] = PCCOM_END;
  Fun_UART_senddata(RevData,6,0);
}

/************************************************/
/*	Name: 	Fun_SEND_IMG						*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			Read Image and transfer to pc		*/
/************************************************/
void Fun_SEND_IMG_BEGIN(void)
{
  uint8 i;
  
  Led_greenon;
  
  if(Fun_Sensor_init())
  {
	  Led_greenoff;

	  RevData[2] = 0;
  	  RevData[3] = 0;
	  RevData[4] = ERR_RDIMG_ERR;
	  RevData[5] = check_sum(RevData,4);
	  RevData[6] = PCCOM_END;
	  Fun_UART_senddata(RevData,6,0);
	  return;
  }

  if(Fun_capture_image(ImageBuffer))
  {
	  Led_greenoff;

	  RevData[2] = 0;
  	  RevData[3] = 0;
	  RevData[4] = ERR_RDIMG_ERR;
	  RevData[5] = check_sum(RevData,4);
	  RevData[6] = PCCOM_END;
	  Fun_UART_senddata(RevData,6,0);
	  return;
  }

  Led_greenoff;

  Imag_data_size = 0;

  RevData[2] = 0;
  RevData[3] = 0x80;

  for(i=0;i<128;i++)
  {
    RevData[i+4] = ImageBuffer[Imag_data_size +i];
  }
  
  RevData[132] = 0;
  RevData[133] = check_sum(RevData,131);
  RevData[134] = PCCOM_END;

  Fun_UART_senddata(RevData,134,0);
  return;
}

void Fun_SEND_IMG_NEXT(void)
{
  uint8 i;

  Imag_data_size = Imag_data_size + 128;  
  
  RevData[2] = 0;
  RevData[3] = 0x80;

  for(i=0;i<128;i++)
  {
    RevData[i+4] = ImageBuffer[Imag_data_size + i];
  }

  RevData[132] = 0;
  RevData[133] = check_sum(RevData,131);
  RevData[134] = PCCOM_END;
  
  Fun_UART_senddata(RevData,134,0);
}

void Fun_SEND_IMG_AGAIN(void)
{
  uint8 i;
  
  RevData[2] = 0;
  RevData[3] = 0x80;

  for(i=0;i<128;i++)
  {
    RevData[i+4] = ImageBuffer[Imag_data_size +i];
  }
  
  RevData[132] = 0;
  RevData[133] = check_sum(RevData,131);
  RevData[134] = PCCOM_END;

  Fun_UART_senddata(RevData,134,0);
}

void Fun_SEND_IMG_END(void)
{
  uint8 i;
  Imag_data_size = Imag_data_size + 128;  
  
  RevData[2] = 0;
  RevData[3] = 0x80;

  for(i=0;i<128;i++)
  {
    RevData[i+4] = ImageBuffer[Imag_data_size +i];
  }

  RevData[132] = 0;
  RevData[133] = check_sum(RevData,131);
  RevData[134] = PCCOM_END;
  
  Fun_UART_senddata(RevData,134,0);
  Flag_get_image = True;
}



/************************************************/
/*	Name: 	Fun_pccom_test						*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			communication with pc				*/
/************************************************/
void Fun_pccom_test(void)
{
   Fun_UART_senddata(RevData,6,0);
}

/************************************************/
/*	Name: 	Fun_pccom_getimage					*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			capture image with pc				*/
/************************************************/
void Fun_pccom_getimage(void)
{}

/************************************************/
/*	Name: 	Fun_pccom_getsys					*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			capture image with pc				*/
/************************************************/
void Fun_pccom_getsys(void)
{
	Fun_rd_parameter(); 	
	RevData[2] = 0;
	RevData[3] = MAX_SYSINF_LENGTH;
	RevData[4] = flash_buffer[Sys_inf_offset];
	RevData[5] = flash_buffer[Sys_inf_offset+1];
	RevData[6] = flash_buffer[Sys_inf_offset+2];
	RevData[7] = flash_buffer[Sys_inf_offset+3];
	RevData[8] = flash_buffer[Sys_inf_offset+4];
	RevData[9] = ERR_NONE;
	RevData[10] = check_sum(RevData,(MAX_SYSINF_LENGTH+4));
	RevData[11] = PCCOM_END;;
	
  if(Fun_UART_senddata(RevData,11,0));
}

/************************************************/
/*	Name: 	Fun_pccom_getio						*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			capture image with pc				*/
/************************************************/
void Fun_pccom_getio(void)
{
  uint8 ioinf=0;
  uint32 x;

  
  x = POW_STATUS;
  if(x==1) 
  {
	ioinf = ioinf | 0x40;
  }
  
//  x = KEY_DEL_ALL;
  x = GPIO_DATAIN;
  x = (x>>18);
  x = x&0x01;
//  (GPIO_DATAIN & (0x00000001 << 18))
  if(x != KEYVAL_DEL_ALL)  	//delete all user branch	
  {
	ioinf = ioinf | 0x80;
  }

  x = KEY_VALUE;
  if(x != KEYVAL_ADD)
  {
	ioinf = ioinf | 0x10;
  }

  if(x != KEYVAL_DEL)
  {
	ioinf = ioinf | 0x20;
  }

  if(x != KEYVAL_OK)
  {
	ioinf = ioinf | 0x08;
  }

  x = DIGTAL_SW;
  ioinf = ioinf | x;
  
  RevData[2] = 0;
  RevData[3] = 1;
  RevData[4] = ioinf;
  RevData[5] = ERR_NONE;
  RevData[6] = check_sum(RevData,5);
  RevData[7] = PCCOM_END;;
  
  if(Fun_UART_senddata(RevData,7,0));
}


/************************************************/
/*	Name: 	Fun_pccom_setio						*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			capture image with pc				*/
/************************************************/
void Fun_pccom_setio(void)
{
  uint8 temp;
  temp = RevData[4];
  temp = temp &0x01;
  if(temp != 0)
  {
    Led_redon;
  }
  else
  {
    Led_redoff;
  }
  
  temp = RevData[4];
  temp = temp &0x02;
  if(temp != 0)
  {
    Led_greenon;
  }
  else
  {
    Led_greenoff;
  }
  
  temp = RevData[4];
  temp = temp &0x04;
  if(temp != 0)
  {
    Lock_open;
  }
  else
  {
    Lock_close;
  }

  RevData[2] = 0;
  RevData[3] = 0;
  RevData[4] = ERR_NONE;
  RevData[5] = check_sum(RevData,4);
  RevData[6] = PCCOM_END;;
  
  if(Fun_UART_senddata(RevData,6,0));
}

/************************************************/
/*	Name: 	Fun_pccom_poweroff					*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			capture image with pc				*/
/************************************************/
void Fun_pccom_poweroff(void)
{
  RevData[2] = 0;
  RevData[3] = 1;
  RevData[4] = 1;
  RevData[5] = ERR_NONE;
  RevData[6] = check_sum(RevData,5);
  RevData[7] = PCCOM_END;;
  
  if(Fun_UART_senddata(RevData,7,0));

  Fun_delay_10ms(100);
  while(1)
  {
    Power_off;
  }
}

/************************************************/
/*	Name: 	check_sum							*/
/*	In:		None								*/
/*	Out:	None								*/
/*	Description: 								*/
/*			calculate check sum					*/
/************************************************/
uint8 check_sum(uint8 *pData,uint16 Num)		//
{
  uint8 sum=0;
  uint16 i;
  for(i=1;i<=Num;i++)
  {
    sum = sum + pData[i];
  }

  return sum;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟一区二区三区| 欧美日韩在线精品一区二区三区激情 | 国产日韩精品一区| 亚洲综合男人的天堂| 国产精品综合一区二区三区| 欧美午夜精品免费| 国产精品久久久久影视| 黄色日韩三级电影| 欧美理论片在线| 亚洲麻豆国产自偷在线| 国产不卡高清在线观看视频| 欧美一区二区三区在线观看 | 日本一区二区动态图| 美女高潮久久久| 欧美日韩一区二区三区不卡| 国产精品电影一区二区| 丰满放荡岳乱妇91ww| 亚洲色图在线视频| 国产一区二区中文字幕| 日韩一区二区三| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线精品国精品国产尤物884a| 亚洲视频一区二区在线| 成人做爰69片免费看网站| 国产免费成人在线视频| 粉嫩蜜臀av国产精品网站| 亚洲精品在线三区| 韩国视频一区二区| 精品欧美一区二区三区精品久久 | 国产高清无密码一区二区三区| 欧美不卡一区二区三区四区| 日本少妇一区二区| 日韩视频在线你懂得| 日本不卡高清视频| 日韩一区二区三区免费观看| 美美哒免费高清在线观看视频一区二区 | 三级影片在线观看欧美日韩一区二区| 精品国产一区二区三区久久久蜜月 | 91视频91自| 亚洲男人的天堂在线观看| 99国产精品久久久久久久久久久| 中文字幕亚洲电影| 色狠狠综合天天综合综合| 亚洲影院免费观看| 欧美日韩国产综合一区二区三区| 五月天中文字幕一区二区| 91精品欧美久久久久久动漫| 久久国产欧美日韩精品| 久久亚洲综合av| 成人久久18免费网站麻豆 | 欧美偷拍一区二区| 日韩av一区二区三区四区| 久久久精品综合| 91免费观看国产| 日本亚洲电影天堂| 久久精品人人做| 欧美亚洲免费在线一区| 久久99最新地址| 亚洲三级在线免费观看| 欧美一区二区三区啪啪| 国产精品12区| 亚洲五码中文字幕| 日韩精品一区二区在线观看| 国产91对白在线观看九色| 亚洲精品日韩一| 精品剧情在线观看| 在线看不卡av| 国产盗摄视频一区二区三区| 亚洲裸体xxx| 久久久综合网站| 欧美影院午夜播放| 国产精品一区二区久久不卡| 一区二区三区中文字幕电影 | 久久电影网站中文字幕| 成人欧美一区二区三区1314| 日韩亚洲欧美高清| 99久久久国产精品| 国产专区综合网| 日本中文字幕一区二区视频 | 久久久精品tv| 欧美这里有精品| 成人免费视频一区二区| 理论电影国产精品| 亚洲伊人伊色伊影伊综合网| 国产亚洲欧美日韩俺去了| 69av一区二区三区| 一本一道久久a久久精品| 国产精品亚洲一区二区三区在线| 亚洲成人资源在线| 亚洲激情五月婷婷| 国产精品网站一区| 精品国产免费一区二区三区四区| 欧美亚洲一区三区| 91在线一区二区| 风间由美性色一区二区三区| 久久精品国产999大香线蕉| 成人免费看黄yyy456| 日韩国产在线一| 一区二区三国产精华液| 亚洲婷婷综合久久一本伊一区| 欧美激情一区在线| 国产亚洲成年网址在线观看| 精品少妇一区二区| 日韩欧美国产麻豆| 7777精品伊人久久久大香线蕉| 在线一区二区三区四区| 成人精品视频网站| www.欧美日韩| 99久久夜色精品国产网站| caoporn国产精品| 成人精品电影在线观看| 国产精品资源站在线| 国产在线日韩欧美| 国产精品一区二区视频| 国产精品资源在线观看| 国产成都精品91一区二区三| 国产精品一品二品| 丁香一区二区三区| 成人网在线播放| 一本色道久久综合亚洲aⅴ蜜桃| 一本大道综合伊人精品热热| 色婷婷精品大视频在线蜜桃视频| 99在线精品一区二区三区| heyzo一本久久综合| 一本到高清视频免费精品| 91豆麻精品91久久久久久| 欧美天堂一区二区三区| 日韩一区二区三区四区五区六区| 日韩精品一区二区在线观看| 久久久久久久一区| 一区视频在线播放| 亚洲一区二区三区三| 青青草国产精品亚洲专区无| 蜜臀99久久精品久久久久久软件| 精品一区二区三区视频在线观看 | 精品久久久久久久久久久院品网| 精品国一区二区三区| 中文字幕欧美日韩一区| 亚洲一二三四在线观看| 免费国产亚洲视频| 粉嫩13p一区二区三区| 91国在线观看| 欧美大片免费久久精品三p| 国产日本亚洲高清| 亚洲一区二区3| 激情五月激情综合网| 91视频免费观看| 日韩一区二区三区电影在线观看| 日本一区二区三区四区| 舔着乳尖日韩一区| 国产99久久久久久免费看农村| 欧美制服丝袜第一页| 国产人妖乱国产精品人妖| 亚洲精品日产精品乱码不卡| 久久爱www久久做| 色噜噜狠狠色综合中国| 久久久久久一级片| 亚洲va欧美va人人爽午夜 | 美女视频一区二区| 99精品视频一区二区三区| 日韩欧美在线综合网| 亚洲精品免费一二三区| 国产精品白丝av| 欧美日韩高清在线播放| 中文字幕永久在线不卡| 黑人精品欧美一区二区蜜桃| 91福利社在线观看| 欧美国产禁国产网站cc| 免播放器亚洲一区| 日本韩国视频一区二区| 国产精品色眯眯| 韩日欧美一区二区三区| 91精品欧美久久久久久动漫| 亚洲人成7777| 成人毛片在线观看| 久久女同性恋中文字幕| 久久精品久久99精品久久| 欧美综合色免费| 亚洲精品ww久久久久久p站| 丰满亚洲少妇av| 久久蜜臀精品av| 国内成人自拍视频| 欧美成人伊人久久综合网| 日韩成人免费电影| 欧美日韩五月天| 亚洲影院理伦片| 色婷婷综合久久久| 亚洲精品免费在线播放| 一本色道a无线码一区v| 亚洲视频一区在线| 91在线免费看| 中文字幕在线播放不卡一区| 国产成人在线看| 国产日韩高清在线| 风间由美一区二区三区在线观看| 中文字幕国产一区二区| 不卡的av电影在线观看| 国产精品护士白丝一区av| 97久久精品人人做人人爽| 国产精品国产精品国产专区不蜜 |