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

📄 poskb.c

📁 一款收款机C源代码!因为是几年前的代码了
💻 C
📖 第 1 页 / 共 3 页
字号:
///////////////////////////////////////////////////////////////////////////////
// 									poskb.c
//
// Copyright (c) 2004, WeiHua Technology Co., Ltd.
// All rights reserved.
//
// Created by:		
// Modified by: 	Chen Huahai		2004-09-03
//
// Desription: 
///////////////////////////////////////////////////////////////////////////////
#include "ecrsys.h"
#include "keydef.h"
#include "data.h"
#include "ftype.h"
#include "sysdata.h"
#include "lcd2.h"
#include "lcd_pop.h"
#include "font.h"
#include "program.h"
#include <string.h>

void Get_Bar_Char(char *dst, byte *srcbar);

/*
///////////////////////////////////////////////////////////////////////////////
 POS键盘:
 	键盘定义: 
 	键值获取与转换:
 	键值预设:
 	PC软件键值预设:
 	串口功能设置与转换:
 	DPLU初始化,设置和销售.
 	

///////////////////////////////////////////////////////////////////////////////
*/

/*
///////////////////////////////////////////////////////////////////////////////
										修改记录
	更新: 2004.10.21

	0. 增加文件: ps2.c, poskb.h, poskb.c

	1. ecrsys.h
		#define  MAX_KEY_CNT          38
		==>>
		#define	MAX_EXTEND_KEY			128
		#define  MAX_KEY_CNT          (38 + MAX_EXTEND_KEY)

		#define  FF_KEY_NUM        	62+1
		==>>
		#define  FF_KEY_NUM        	(62+1+MAX_EXTEND_KEY)

		#define  FF_KEY_NUM        	56+1
		==>>
		#define  FF_KEY_NUM        	(56+1+MAX_EXTEND_KEY)
		
		增加了一个 MAX_KEY_WD1	宏定义
	1.1 print.c 
		把MAX_KEY_CNT改成了MAX_KEY_WD1
	
	2. key.c
		const char Deft_Key_Tabl[MAX_KEY_CNT]	后面追加:

	   ,
		KD_DPLU001,	KD_DPLU02,	KD_DPLU03,	KD_DPLU04,	KD_DPLU05,	KD_DPLU06,	KD_DPLU07,	KD_DPLU08,	
			KD_FEED,		KD_RCPT_ON,	KD_RA,		KD_PO,		KD_OPEN,		KD_SUSPEND,	KD_TNSFER,	KD_NS,
		KD_DPLU09,	KD_DPLU10,	KD_DPLU11,	KD_DPLU12,	KD_DPLU13,	KD_DPLU14,	KD_DPLU15,	KD_DPLU16,	
			KD_TAXSFT1,	KD_TAXSFT2,	KD_TAX_EMP,	KD_PCASH1,	KD_PCASH2,	KD_PCASH3,	KD_PCASH4,	KD_MISC,
		KD_DPLU17,	KD_DPLU18,	KD_DPLU19,	KD_DPLU20,	KD_DPLU21,	KD_DPLU22,	KD_DPLU23,	KD_DPLU24,	
			KD_DPSF,    KD_RM,		KD_PER1,		KD_PER2,		KD_CLEAR,	KD_XTIME,  	KD_CELRK,	KD_CHARGE,
		KD_DPLU25,	KD_DPLU26,	KD_DPLU27,	KD_DPLU28,	KD_DPLU29,	KD_DPLU30,	KD_DPLU31,	KD_DPLU32,	
			KD_DP4,		KD_DP8,		KD_PER3,  	KD_PLU,		KD_7,    	KD_8,    	KD_9,  		KD_CHECK,
		KD_DPLU33,	KD_DPLU34,	KD_DPLU35,	KD_DPLU36,	KD_DPLU37,	KD_DPLU38,	KD_DPLU39,	KD_DPLU40,	
			KD_DP3,     KD_DP7,		KD_REFUND,	KD_EC, 		KD_4,    	KD_5,    	KD_6,  		KD_SUBTTL,
		KD_DPLU41,	KD_DPLU42,	KD_DPLU43,	KD_DPLU44,	KD_DPLU45,	KD_DPLU46,	KD_DPLU47,	KD_DPLU48,	
			KD_DP2,     KD_DP6,		KD_AMOUNT,	KD_TRS_VOID,KD_1,    	KD_2,    	KD_3,  		KD_CASH,
		KD_DPLU49,	KD_DPLU50,	KD_DPLU51,	KD_DPLU52,	KD_DPLU53,	KD_DPLU54,	KD_DPLU55,	KD_DPLU56,	
			KD_DP1,     KD_DP5,		KD_VOID,   	KD_T0,  		KD_0,    	KD_D0,   	KD_DEC,		KD_CASH

	3. key.c
		const char  key_logic[MAX_KEY_CNT] =		后面追加:

		   ,
		   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
		   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
		   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
		   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
		   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,
		   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,
		   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
		   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff

	4. key.c
		void key_matrx_init(void) 最后增加:
   		PS2_GetFeedCode();

	5. key.c
		KeyScan() 函数最后,增加:
			if (PS2_ChkKeyIn(&work) == OK)
			{
				key_rngset(work);
			}
	6. key.c
		const char Modify_Key_Tabl[FF_KEY_NUM] 最后增加:
			,
			KD_DPLU001,	KD_DPLU02,	KD_DPLU03,	KD_DPLU04,	KD_DPLU05,	KD_DPLU06,
			KD_DPLU07,	KD_DPLU08,	KD_DPLU09,	KD_DPLU10,	KD_DPLU11,	KD_DPLU12,
			KD_DPLU13,	KD_DPLU14,	KD_DPLU15,	KD_DPLU16,	KD_DPLU17,	KD_DPLU18,
			KD_DPLU19,	KD_DPLU20,	KD_DPLU21,	KD_DPLU22,	KD_DPLU23,	KD_DPLU24,
			KD_DPLU25,	KD_DPLU26,	KD_DPLU27,	KD_DPLU28,	KD_DPLU29,	KD_DPLU30,
			KD_DPLU31,	KD_DPLU32,	KD_DPLU33,	KD_DPLU34,	KD_DPLU35,	KD_DPLU36,
			KD_DPLU37,	KD_DPLU38,	KD_DPLU39,	KD_DPLU40,	KD_DPLU41,	KD_DPLU42,
			KD_DPLU43,	KD_DPLU44,	KD_DPLU45,	KD_DPLU46,	KD_DPLU47,	KD_DPLU48,
			KD_DPLU49,	KD_DPLU50,	KD_DPLU51,	KD_DPLU52,	KD_DPLU53,	KD_DPLU54,
			KD_DPLU55,	KD_DPLU56,	KD_DPLU57,	KD_DPLU58,	KD_DPLU59,	KD_DPLU60,
			KD_DPLU61,	KD_DPLU62,	KD_DPLU63,	KD_DPLU64,	KD_DPLU65,	KD_DPLU66,
			KD_DPLU67,	KD_DPLU68,	KD_DPLU69,	KD_DPLU70,	KD_DPLU71,	KD_DPLU72,
			KD_DPLU73,	KD_DPLU74,	KD_DPLU75,	KD_DPLU76,	KD_DPLU77,	KD_DPLU78,
			KD_DPLU79,	KD_DPLU80,	KD_DPLU81,	KD_DPLU82,	KD_DPLU83,	KD_DPLU84,
			KD_DPLU85,	KD_DPLU86,	KD_DPLU87,	KD_DPLU88,	KD_DPLU89,	KD_DPLU90,
			KD_DPLU91,	KD_DPLU92,	KD_DPLU93,	KD_DPLU94,	KD_DPLU95,	KD_DPLU96,
			KD_DPLU97,	KD_DPLU98,	KD_DPLU99,	KD_DPLU100,	KD_DPLU101,	KD_DPLU102,
			KD_DPLU103,	KD_DPLU104,	KD_DPLU105,	KD_DPLU106,	KD_DPLU107,	KD_DPLU108,
			KD_DPLU109,	KD_DPLU110, KD_DPLU111, KD_DPLU112, KD_DPLU113, KD_DPLU114,
			KD_DPLU115, KD_DPLU116, KD_DPLU117, KD_DPLU118, KD_DPLU119, KD_DPLU120,
			KD_DPLU121, KD_DPLU122, KD_DPLU123, KD_DPLU124, KD_DPLU125, KD_DPLU126,
	 		KD_DPLU127, KD_DPLU128

	7. key.c
		const char Prn_Key_Tabl[FF_KEY_NUM][11+1] 最后增加:
			,
			"DPLU01",	"DPLU02",	"DPLU03",	"DPLU04",	"DPLU05",	"DPLU06",
			"DPLU07",	"DPLU08",	"DPLU09",	"DPLU10",	"DPLU11",	"DPLU12",
			"DPLU13",	"DPLU14",	"DPLU15",	"DPLU16",	"DPLU17",	"DPLU18",
			"DPLU19",	"DPLU20",	"DPLU21",	"DPLU22",	"DPLU23",	"DPLU24",
			"DPLU25",	"DPLU26",	"DPLU27",	"DPLU28",	"DPLU29",	"DPLU30",
			"DPLU31",	"DPLU32",	"DPLU33",	"DPLU34",	"DPLU35",	"DPLU36",
			"DPLU37",	"DPLU38",	"DPLU39",	"DPLU40",	"DPLU41",	"DPLU42",
			"DPLU43",	"DPLU44",	"DPLU45",	"DPLU46",	"DPLU47",	"DPLU48",
			"DPLU49",	"DPLU50",	"DPLU51",	"DPLU52",	"DPLU53",	"DPLU54",
			"DPLU55",	"DPLU56",	"DPLU57",	"DPLU58",	"DPLU59",	"DPLU60",
			"DPLU61",	"DPLU62",	"DPLU63",	"DPLU64",	"DPLU65",	"DPLU66",
			"DPLU67",	"DPLU68",	"DPLU69",	"DPLU70",	"DPLU71",	"DPLU72",
			"DPLU73",	"DPLU74",	"DPLU75",	"DPLU76",	"DPLU77",	"DPLU78",
			"DPLU79",	"DPLU80",	"DPLU81",	"DPLU82",	"DPLU83",	"DPLU84",
			"DPLU85",	"DPLU86",	"DPLU87",	"DPLU88",	"DPLU89",	"DPLU90",
			"DPLU91",	"DPLU92",	"DPLU93",	"DPLU94",	"DPLU95",	"DPLU96",
			"DPLU97",	"DPLU98",	"DPLU99",	"DPLU100",	"DPLU101",	"DPLU102",
			"DPLU103",	"DPLU104",	"DPLU105",	"DPLU106",	"DPLU107",	"DPLU108",
			"DPLU109",	"DPLU110", 	"DPLU111", 	"DPLU112", 	"DPLU113", 	"DPLU114",
			"DPLU115", 	"DPLU116", 	"DPLU117", 	"DPLU118", 	"DPLU119", 	"DPLU120",
			"DPLU121", 	"DPLU122", 	"DPLU123", 	"DPLU124", 	"DPLU125", 	"DPLU126",
	 		"DPLU127", 	"DPLU128"

	8. keydef.h
		增加:
		#include "poskb.h"										// Hard PLU define

	9. serial.c
		将原来的
			byte Uart_SetBaudRate(byte port, word baud);
		分解成:
			byte Uart_SetBaudRate(byte port, word baud);
			byte Uart_SaveBaudRate(byte port, word baud);

		并修改protest.c, serial.c, program.c中的Uart_SetBaudRate()相关语句.
		并在ftype.h中增加Uart_SaveBaudRate()的声明.
	
	10. program.c
		(1) void FFkey_Update(void) 最后增加:
				PS2_GetFeedCode();
		
		(2) 在progmain()的 case KD_CASH: 中增加:
            else if (lnum == 8000)
            {
            }
            else if (lnum == 8001)
            {
            	PS2_SetPortFunc(1);
            }
            else if (lnum == 8002)
            {
            }
            else if (lnum == 8010)
            {
            	PS2_GetKBScanCode();					// 获取POS键盘扫描码.
            }
	
	11. pc_comm.c
		(1) 在		case KEY_LAYOUT_DWN: 之后增加:
			case KB_POS_LAYOUT_DWN:
				Do_KB_POS_Layout_Dwn();		// POS Keyboard layout down-load
				break;
		(2) 在		case	KEY_LAYOUT_UP:	之后增加:
			case KB_POS_LAYOUT_UP:
				Do_KB_POS_Layout_Up();		// POS Keyboard layout up-load
				break;
		(3) 替换两个函数,
				void Do_Key_Layout_Dwn(void);
				void Do_Key_Layout_Up(void);
			并增加两个函数,
				void Do_KB_POS_Layout_Up(void);
				void Do_KB_POS_Layout_Dwn(void);
			在pc_comm.h增加上述两个函数声明及以下宏定义.
				#define	KB_POS_LAYOUT_DWN			0x07			// POS Keyboard layout down-load
				#define	KB_POS_LAYOUT_UP			0x37			// POS Keyboard layout up-load

	12. program.c
		progmain() 函数:
         default:
				errorType(ERR_KEY_ILLEGAL);
				break;
		==>>
         default:
   			if ((InCmd >= KD_DPLU001) && (InCmd <= KD_DPLU120))
				{
      			lnum = InCmd - KD_DPLU001;
					Prg_DrPlu(lnum);
  	            lastincmd = KD_PLU;
				}
				else
				{
  					errorType(ERR_KEY_ILLEGAL);
   			}
				break;
	
	13. protest.c
		Init_PLU() 函数,最后增加:
			DPlu_Init();

	14. sale.c
		salemain() 函数:
      	default:
      					errorType(ERR_KEY_ILLEGAL);
      					break;
		==>>
      	default:
   			if ((InCmd >= KD_DPLU001) && (InCmd <= KD_DPLU120) && (numcnt == 0))
				{
      			numcnt = 4;
      			lnum = DPlu_GetLink(InCmd-KD_DPLU001+1);
      			if (lnum != 0)
      			{
	  	            Do_PLU();
	  	            lastincmd = KD_PLU;
	  	         }
				}
				else
				{
  					errorType(ERR_KEY_ILLEGAL);
   			}
				break;
	
	15. ftype.h
		增加:
		byte PS2_ChkKeyIn(byte *keyCode);
		void PS2_GetFeedCode(void);
		void PS2_GetKBScanCode(void);							// 调试用.
		void PS2_SetPortFunc(byte flag);
		void Prg_DrPlu(word num);
		void DPlu_Init(void);
		word DPlu_GetLink(word num);
		
	16. ps2.c
		根据具体版本的不同,可能需要调整串口设置语句.
		Uart_SetBaudRate()

	17. 注: 在WD1+中, 编程直接PLU, 并没有用这里自带的函数, 而是用了小郭所写的函数, 不过把那些所写的函数也都全部的放到这里面来了. 
							交易模式下面, 处理方式有点不一样, 更改了一点点. 
							增加了报表下面的处理方式. 
							具体的参考sale.c和xzreport.c中的第一个default中的地方.

	.. 全编译.

	
///////////////////////////////////////////////////////////////////////////////
*/

//// public function
//void Prg_DrPlu(word num);
//void DPlu_Init(void);
//word DPlu_GetLink(word num);
//
//#define	MAX_DPLU_CNT			120
//static word dPluLink[MAX_DPLU_CNT];
//
/////////////////////////////////////////////////////////////////////////////////
//// Descript:	get defined No. linked PLU
//// In Param:	num --- DPLU No.
//// Out Param:	void
//// Return:		PLU No. 	0 means Error!
/////////////////////////////////////////////////////////////////////////////////
//word DPlu_GetLink(word num)
//{
//	num -= 1;
//	if (num >= MAX_DPLU_CNT)
//	{
//		return 0;
//	}
//	if ((dPluLink[num] == 0) || (dPluLink[num] > MAX_PLU_CNT))
//	{
//		return 0;
//	}
//	return dPluLink[num];
//}
//
/////////////////////////////////////////////////////////////////////////////////
//// Descript:	initial DPLU linked plu to default.
//// In Param:	void
//// Out Param:	void
//// Return:		void
/////////////////////////////////////////////////////////////////////////////////
//void DPlu_Init(void)
//{
//	word i;
//
//	for (i=0; i<MAX_DPLU_CNT; i++)

⌨️ 快捷键说明

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