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

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

?? fiscal.c

?? 一款收款機C源代碼!因為是幾年前的代碼了
?? C
字號:
///////////////////////////////////////////////////////////////////////////////
// 									fiscal.c
//
// Copyright (c) 2004, WeiHua Technology Co., Ltd.
// All rights reserved.
//
// Created by:		Chen Huahai		2004-10-15
//
// Desription: NE-2 (Turkey) fiscal operation
///////////////////////////////////////////////////////////////////////////////
#include "ECRSYS.h"
#include "ftype.h"
#include "data.h"
#include "sysdata.h"

#if	SW_VER == SW_NE2
#define	FIRM_CODE_BASE			1
#define	FIRM_CODE_LEN			12
#define	FIRM_CODE_EMPTY		0xff

// only for debug
#define	TURKEY_CHAR_MAX		10
const byte m_TurkeyCharacterTable[TURKEY_CHAR_MAX] = {
	0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a
	};

///////////////////////////////////////////////////////////////////////////////
// Descript:	check fm exist and fm head & tail
// Return:		true / false
///////////////////////////////////////////////////////////////////////////////
bool CheckFmExist(void)
{
	if (Fm_Exist() == true)
	{
		if ((Fm_ReadByte(FM_HEAD_ADDR) == FM_HEAD_INFO) && 
			 (Fm_ReadByte(FM_TAIL_ADDR) == FM_TAIL_INFO))
		{
			return true;
		}
	}
	return false;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	check firm code whether not preset
// Return:		true / false
///////////////////////////////////////////////////////////////////////////////
bool CheckFirmCodeNotPreset(void)
{
	dword addr;

	for (addr = FIRM_CODE_BASE; addr < (FIRM_CODE_BASE + FIRM_CODE_LEN); addr++)
	{
		if (Fm_ReadByte(addr) != FIRM_CODE_EMPTY)
		{
			return false;
		}
	}
	return true;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	check the front of firm code(Turkey Characters) that user input
//					whether valid
// In para:		byte* userInput
// Return:		true / false
///////////////////////////////////////////////////////////////////////////////
bool CheckFrontOfFirmCodeValid(byte* userInput)
{
	byte turkeyChar1, turkeyChar2;
	byte i;
	
	if (numcnt == 4)
	{
		bool turkeyChar1Valid = false;
		bool turkeyChar2Valid = false;
		
		turkeyChar1 = (userInput[0] << 4) + userInput[1];
		turkeyChar2 = (userInput[2] << 4) + userInput[3];
		for (i=0; i<TURKEY_CHAR_MAX; i++)
		{
			if (m_TurkeyCharacterTable[i] == turkeyChar1)
			{
				turkeyChar1Valid = true;
			}
			if (m_TurkeyCharacterTable[i] == turkeyChar2)
			{
				turkeyChar2Valid = true;
			}
		}
		if ((turkeyChar1Valid == true) && (turkeyChar2Valid == true))
		{
			return true;
		}
	}
	return false;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	firm code (serial number) program
// 	[P] - [ABCD] - [PO] - [DDDDDDDD] - [SUBTTL] - [CHECK] - [SUBTTL/CASH]
//		ABCD:	the code for characters, use the Turkey character table.
///////////////////////////////////////////////////////////////////////////////
void FirmCodeProgram(void)
{
	byte firmCode[FIRM_CODE_LEN+1];
	
	if (CheckFmExist() != true)
	{
		errorType(ERR_FM_NOT_EXIST);
		return;
	}
	if (CheckFirmCodeNotPreset() != true)
	{
		errorType(ERR_FIRM_CODE_PRESET);
		return;
	}
	if (numcnt != 4)
	{
		errorType(ERR_INPUT_DIGIT);
		return;
	}
	if (CheckFrontOfFirmCodeValid(In_Buff) != true)
	{
		errorType(ERR_INVALID_TURKEY_CHAR);
		return;
	}
	firmCode[0] = (In_Buff[0] << 4) + In_Buff[1];
	firmCode[1] = (In_Buff[2] << 4) + In_Buff[3];
	firmCode[2] = ' ';
	firmCode[3] = ' ';

	// wait user input 8 digit and check it
	while (true)
	{
		if (GetIn() == NG)
		{
			continue;
		}
     	// check user whether quit
      if ((GetMainMode() != CurrMode) || (InCmd == KD_CASH))
      {
      	return;
      }
      switch (InCmd)
      {
      case KD_SUBTTL:
      	if ((numcnt == 8) && (lnum == 0))
      	{
      		errorType(ERR_FIRM_CODE_ZERO);
      	}
      	else if (numcnt == 8)
      	{
      		byte i;
      		for (i=0; i<8; i++)
      		{
      			firmCode[4+i] = In_Buff[i] + '0';
      		}
      		firmCode[FIRM_CODE_LEN] = '\0';

				// print it and wait user affirm
      		Prn_InsStr("FIS NO: ", 1, NM_FONT_PRN, FLUSH_LEFT);
      		Prn_InsStr(firmCode, MAX_PRN_LEN, NM_FONT_PRN, FLUSH_RIGHT);
      		Prn_Str(1);
      		Prn_InsStr("Are you Sure ?", MAX_PRN_LEN/2, NM_FONT_PRN, FLUSH_MID);
      		Prn_Str(1);
				prn_Stamp();
				
				while (Key_Poll_Chk() == FALSE);
				if (GetKey() == KD_CHECK)
				{
					// write to fm, print and display result.
					if (Fm_WriteStr(FIRM_CODE_BASE, firmCode, FIRM_CODE_LEN) == OK)
					{
		      		Prn_InsStr("FIS NO Setup Success!", 1, NM_FONT_PRN, FLUSH_LEFT);
		      		Prn_Str(1);
		      		Prn_InsStr("FIS NO: ", 1, NM_FONT_PRN, FLUSH_LEFT);
		      		Prn_InsStr(firmCode, MAX_PRN_LEN, NM_FONT_PRN, FLUSH_RIGHT);
		      		Prn_Str(1);
						prn_Stamp();
						Clr_Dsp_Data();
						disp_Char_Str("FIS NO OK!", 0);	// only for debug
						bellcnt = 0xfe;
						while (Key_Poll_Chk() == FALSE);
						GetKey();
					}
					else
					{
						errorType(ERR_FM_WRITE);
					}
				}
				return;
      	}
      	else
      	{
				errorType(ERR_INPUT_DIGIT);
      	}
      	break;
      default:
      	bellcnt = 100;
      	break;
     	}
	   Clr_Dsp_Data();
	   RightDisp(0L, 0);
	}
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	preset fm head & tail
// Return:		true / false
///////////////////////////////////////////////////////////////////////////////
bool PresetFmHeadTail(void)
{
	if (Fm_Exist() == true)
	{
		if ((Fm_WriteByte(FM_HEAD_ADDR, FM_HEAD_INFO) == OK) && 
			 (Fm_WriteByte(FM_TAIL_ADDR, FM_TAIL_INFO) == OK))
		{
			if (CheckFmExist() == true)
			{
				return true;
			}
		}
	}
	return false;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	read firm code from fm
// Out Param:	byte* firmCode (FIRM_CODE_LEN)
// Return:		true / false
///////////////////////////////////////////////////////////////////////////////
bool ReadFirmCode(byte* firmCode)
{
	if (CheckFmExist() == true)
	{
		Fm_ReadStr(firmCode, FIRM_CODE_BASE, FIRM_CODE_LEN);
		return true;
	}
	return false;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	enter fiscal mode
///////////////////////////////////////////////////////////////////////////////
void FiscalStart(void)
{
	if (CheckFmExist() != true)
	{
		errorType(ERR_FM_NOT_EXIST);
		return;
	}
	if (CheckFirmCodeNotPreset() == true)
	{
		errorType(ERR_FIRM_CODE_NOT_PRESET);
		return;
	}
	// check whether fiscal mode now
	// check fm fiscal mode area whether blank
	// prompt and wait user assure
	// write fm fiscal mode area (need write "code info" ???)	// only for debug
	// prompt user fiscal start success
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人体做爰大胆视频| 欧美日韩国产高清一区| 久久精品国产精品亚洲综合| 一区二区三区欧美久久| 亚洲激情第一区| 一区二区三区国产精品| 亚洲黄色免费网站| 性欧美疯狂xxxxbbbb| 视频一区视频二区中文| 日韩va亚洲va欧美va久久| 裸体一区二区三区| 国产一区在线视频| 成人av电影免费在线播放| 色一情一乱一乱一91av| 7878成人国产在线观看| 欧美一级久久久久久久大片| 2017欧美狠狠色| 国产精品视频在线看| 亚洲精品videosex极品| 五月天精品一区二区三区| 久久国产精品无码网站| 国产成人午夜片在线观看高清观看| 懂色av一区二区夜夜嗨| 色哟哟精品一区| 日韩欧美成人激情| 中文字幕字幕中文在线中不卡视频| 亚洲专区一二三| 国产真实精品久久二三区| www.亚洲精品| 欧美年轻男男videosbes| 久久综合给合久久狠狠狠97色69| 国产免费观看久久| 婷婷成人综合网| 成人午夜激情影院| 在线电影院国产精品| 中文一区二区完整视频在线观看| 亚洲午夜在线视频| 国产成人午夜片在线观看高清观看| 日本乱人伦一区| 久久久久久免费毛片精品| 亚洲黄色性网站| 盗摄精品av一区二区三区| 在线不卡免费av| 最近中文字幕一区二区三区| 精品无人区卡一卡二卡三乱码免费卡 | 欧美肥胖老妇做爰| 国产嫩草影院久久久久| 日日夜夜精品视频免费| 91在线免费视频观看| 日韩午夜小视频| 亚洲午夜视频在线| www.性欧美| 日韩美女在线视频| 五月天中文字幕一区二区| 99re成人精品视频| 欧美韩国日本不卡| 国产一区二区三区在线观看免费 | 色综合久久中文综合久久牛| 精品嫩草影院久久| 婷婷国产在线综合| 91福利国产精品| 国产精品免费av| 国产麻豆精品theporn| 91精品国产高清一区二区三区蜜臀| 亚洲视频中文字幕| 99国产精品久久久久久久久久久| 精品久久久三级丝袜| 男女激情视频一区| 91精品国产一区二区三区蜜臀| 樱花影视一区二区| 91一区二区三区在线播放| 国产精品白丝在线| 99re亚洲国产精品| 亚洲男人天堂一区| 色老综合老女人久久久| 一区二区成人在线视频| 在线观看日韩国产| 婷婷开心久久网| 欧美一区二区私人影院日本| 日本女人一区二区三区| 欧美电影免费观看高清完整版在 | 亚洲国产日韩a在线播放性色| 91尤物视频在线观看| 亚洲免费av在线| 欧洲一区二区av| 亚洲观看高清完整版在线观看| 欧美日韩午夜在线视频| 亚洲成在线观看| 日韩女优av电影在线观看| 国产一区二区三区观看| 中文文精品字幕一区二区| 91丝袜国产在线播放| 一个色在线综合| 91精品国产综合久久福利软件 | 在线精品视频免费播放| 亚洲1区2区3区4区| 欧美电影免费观看完整版| 国产精品系列在线观看| 亚洲婷婷综合色高清在线| 欧美性猛交xxxxxxxx| 美女视频黄频大全不卡视频在线播放| 精品日韩一区二区三区| 99久久久国产精品| 日本午夜一区二区| 中文字幕免费不卡| 欧美午夜精品理论片a级按摩| 日本亚洲三级在线| 国产精品无码永久免费888| 欧美视频在线一区二区三区 | 亚洲视频一区二区免费在线观看| 欧美色视频一区| 国产精品一区二区在线观看网站| 国产精品久久久久久久久免费樱桃| 欧美性大战xxxxx久久久| 久久精品国内一区二区三区| 亚洲桃色在线一区| 精品剧情在线观看| 色老汉一区二区三区| 狠狠色狠狠色综合系列| 一区二区免费看| 国产欧美一区二区精品久导航| 在线观看免费视频综合| 国产精品538一区二区在线| 一区二区三区不卡视频在线观看| 久久久久久麻豆| 欧美一级xxx| 欧洲一区二区三区在线| 成人综合日日夜夜| 国内精品久久久久影院薰衣草| 亚洲成人免费电影| 综合自拍亚洲综合图不卡区| 久久人人爽爽爽人久久久| 欧美日韩国产在线播放网站| av中文字幕不卡| 国产精品99久久久| 国产在线不卡一卡二卡三卡四卡| 天天做天天摸天天爽国产一区 | 久久精品国产亚洲高清剧情介绍| 亚洲综合在线五月| 国产精品国产成人国产三级| 久久天天做天天爱综合色| 欧美一卡二卡在线| 欧美日韩亚洲综合一区二区三区 | 3atv一区二区三区| 欧美系列一区二区| 99久久综合国产精品| 国产精品一级在线| 国内精品免费**视频| 国产一区二区成人久久免费影院| 日韩激情视频在线观看| 日本sm残虐另类| 免费在线观看视频一区| 老司机一区二区| 精品一区二区三区欧美| 美女网站一区二区| 国产一区视频网站| 国产精品一区二区久久不卡| 国产福利一区二区三区在线视频| 国产精品一区二区视频| 国产69精品一区二区亚洲孕妇| 高清国产午夜精品久久久久久| 成人激情动漫在线观看| 92国产精品观看| 欧美在线免费观看亚洲| 欧美精品日韩综合在线| 91精品国产91久久久久久最新毛片 | 99综合电影在线视频| 色综合咪咪久久| 欧美日韩1区2区| 日韩欧美一级二级三级久久久| 日韩免费观看2025年上映的电影| 久久综合久久久久88| 国产精品久久久久毛片软件| 一区二区三区高清不卡| 日韩一区欧美二区| 国产激情一区二区三区桃花岛亚洲| 成人精品一区二区三区中文字幕| 91搞黄在线观看| 日韩色在线观看| 综合电影一区二区三区 | 波多野结衣中文字幕一区二区三区 | 成人性视频免费网站| 色94色欧美sute亚洲线路二| 8x8x8国产精品| 国产欧美一区二区三区在线看蜜臀| 亚洲色图20p| 日产国产欧美视频一区精品| 国产精品123| 欧美日韩一级黄| 久久久久青草大香线综合精品| 一区二区三区四区亚洲| 久久精品久久精品| 91久久精品午夜一区二区| 精品国产一区二区三区av性色| 中文字幕在线视频一区| 奇米精品一区二区三区四区 | 精品国产网站在线观看| 亚洲女子a中天字幕| 国产一区在线不卡| 欧美日韩一区高清|