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

📄 ps2.c

📁 一款收款机C源代码!因为是几年前的代码了
💻 C
📖 第 1 页 / 共 2 页
字号:
			else if ((ps2KeyCnt == 2) && 
				((ps2KeyBuf[0] == 0xE0) || (ps2KeyBuf[0] == 0xE1)) && 
				(makeOrBreak == 0))
			{
				key = ps2KeyBuf[0] * 0x100 + ps2KeyBuf[1];
//				if (key == feedKeyCode)					// 走纸键.
//				{
//					keyFeedFlag = 1;
//				}
				if (makeOrBreak == 1)					// 弹起时取键值.
				{
					if (lastKey == key)
					{
						lastKey = 0;
					}
					key = 0;
				}
			}
			else if ((ps2KeyCnt == 2) && (ps2KeyBuf[0] == 0xF0))
			{
				key = ps2KeyBuf[1];
//				if (key == feedKeyCode)
//				{
//					keyFeedFlag = 0;
//				}
				if (makeOrBreak == 0)					// 弹起时清标志.
				{
					if (lastKey == key)
					{
						lastKey = 0;
					}
					key = 0;
				}
			}
			else if ((ps2KeyCnt == 3) && 
				((ps2KeyBuf[0] == 0xE0) || (ps2KeyBuf[0] == 0xE1)) && 
				(ps2KeyBuf[1] == 0xF0))
			{
				key = ps2KeyBuf[0] * 0x100 + ps2KeyBuf[2];
//				if (key == feedKeyCode)
//				{
//					keyFeedFlag = 0;
//				}
				if (makeOrBreak == 0)					// 弹起时清标志.
				{
					if (lastKey == key)
					{
						lastKey = 0;
					}
					key = 0;
				}
			}
			else
			{
				key = 0;
			}
			
			keyFeedFlag = 0;

			if ((key != 0) && (key != lastKey))		// 屏蔽连发键.
			{
				lastKey = key;
				
				if ((key == CRTL_KEY) || (key == ALT_KEY) || (key == SHIFT_KEY))
				{
					combKey = key * 0x100;				// 组合键处理.
				}
				else
				{
					if (combKey != 0)
					{
						if (key < 0x100)
						{
							key += combKey;				// POS键盘组合键.
						}
					}
					for (i=0; i<MAX_FEED_KEY; i++)	// 走纸键处理.
					{
						if (key == feedKeyCode[i])
						{
							keyFeedFlag = 1;
							break;
						}
					}
					// 第二次解析按键:	加入组合键解析.
					if (PS2_TransScanCode(&scanCode, &key) == OK)
					{
						PS2_InsKey(scanCode);
					}
					combKey = 0;
				}
			}
		}
		ps2KeyCnt = 0;
		break;
	}
	return OK;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	Translate PS2 keyboard Scancode to WD1 keyCode.
// In Param:	const word *key --- POS键盘送回的键值.
// Out Param:	byte *scanCode --- 返回的扫描码.
// Return:		OK / NG
///////////////////////////////////////////////////////////////////////////////
byte PS2_TransScanCode(byte *scanCode, const word *key)
{
	byte i;

	
	for (i=0; i<MAX_EXTEND_KEY; i++)
	{
		if (defScanCode[i] == *key)
		{
			*scanCode = 0x80 + i;						// 返回扫描码.
			return OK;
		}
	}
	return NG;
}

///////////////////////////////////////////////////////////////////////////////
// Descript:	从一个串口(当前POS键盘串口)获取POS键盘扫描码,然后通过另一个串口送至PC. (调试用)
// In Param:	void
// Out Param:	void
// Return:		void
///////////////////////////////////////////////////////////////////////////////
void PS2_GetKBScanCode(void)
{
	port0Func = 1;											// 中断中不检测POS键盘输入.
	PS2_Init(PORT0);										// 串口1默认连接POS键盘.
	
	while (1)
	{
		byte scanCode;
		
		if (Uart_ReadByte(PORT0, &scanCode) == OK)	// 将POS键盘的所有输入全部转发.
		{
			Uart_WriteByte(PORT1, scanCode);
		}
		if (Key_Poll_Chk())								// 任意键退出.
		{
			break;
		}
	}
	
	// 在WD1-PK & WD1-SW 等版本中,串口0默认不接键盘输入,故无需此步.
	// 但仍需要恢复原来的串口设置.
//	PS2_SetPortFunc(0);									// 恢复中断检测POS键盘输入.
}
            
/*          
Key number Set 1 Set 2 Set 3
1 29 0E 0E T
2 02 16 16 T
3 03 1E 1E T
4 04 26 26 T
5 05 25 25 T
6 06 2E 2E T
7 07 36 36 T
8 08 3D 3D T
9 09 3E 3E T
10 0A 46 46 T
11 0B 45 45 T
12 0C 4E 4E T
13 0D 55 55 T
15 0E 66 66 T
16 0F 0D 0D T
17 10 15 15 T
18 11 1D 1D T
19 12 24 24 T
20 13 2D 2D T
21 14 2C 2C T
22 15 35 35 T
23 16 3C 3C T
24 17 43 43 T
25 18 44 44 T
26 19 4D 4D T
27 1A 54 54 T
28 1B 5B 5B T
29 2B 5D 5C T
30 3A 58 14 MB
31 1E 1C 1C T
32 1F 1B 1B T
33 20 23 23 T
34 21 2B 2B T
35 22 34 34 T
36 23 33 33 T
37 24 3B 3B T
38 25 42 42 T
39 26 4B 4B T
40 27 4C 4C T
41 28 52 52 T
42 2B 5D 53 T
43 1C 5A 5A T
44 2A 12 12 MB
45 56 61 13 T
Key number Set 1 Set 2 Set 3
46 2C 1A 1A T
47 2D 22 22 T
48 2E 21 21 T
49 2F 2A 2A T
50 30 32 32 T
51 31 31 31 T
52 32 3A 3A T
53 33 41 41 T
54 34 49 49 T
55 35 4A 4A T
57 36 59 59 MB
58 1D 14 11 MB
59 E0 5B E0 1F 8B MB
60 38 11 19 MB
61 39 29 29 T
62 E0/38 E0/11 39 M
63 E0 5C E0 27 8C MB
64 E0/1D E0/14 58 M
65 E0 5D E0 2F 8D MB
75 see app. 1 67 M
76 see app. 1 64 T
79 see app. 1 61 T
80 see app. 1 6E M
81 see app. 1 65 M
83 see app. 1 63 T
84 see app. 1 60 T
85 see app. 1 6F M
86 see app. 1 6D M
89 see app. 1 6A T
90 45 77 76 M
91 47 6C 6C M
92 4B 6B 6B M
93 4F 69 69 M
95 see app. 1 77 M
96 48 75 75 M
97 4C 73 73 M
98 50 72 72 M
99 52 70 70 M
100 37 7C 7E M
101 49 7D 7D M
102 4D 74 74 M
103 51 7A 7A M
104 53 71 71 M
105 4A 7B 84 M
106 4E 79 7C T
108 E0/1C E0/5A 79 M
110 01 76 08 M
112 3B 05 07 M
113 3C 06 0F M
114 3D 04 17 M
115 3E 0C 1F M
116 3F 03 27 M
117 40 0B 2F M
118 41 83 37 M
119 42 0A 3F M
120 43 01 47 M
121 44 09 4F M
122 57 78 56 M
123 58 07 5E M
124 see app. 1 57 M
125 46 7E 5F M
126 see app. 1 62 M

*/

/*												默认键盘.

1C F0 1C 32 F0 32 21 F0 21 23 F0 23 24 F0 24 2B F0 2B 34 F0 34 33 F0 33 05 F0 05 06 F0 06 E0 70 E0 F0 70 E0 6C E0 F0 6C E0 7D E0 F0 7D 11 16 F0 16 F0 11 E0 75 E0 F0 75 E0 6B E0 F0 6B 43 F0 43 3B F0 3B 42 F0 42 4B F0 4B 3A F0 3A 31 F0 31 44 F0 44 4D F0 4D 04 F0 04 0C F0 0C E0 71 E0 F0 71 E0 69 E0 F0 69 E0 7A E0 F0 7A 11 1E F0 1E F0 11 E0 72 E0 F0 72 E0 74 E0 F0 74 15 F0 15 2D F0 2D 1B F0 1B 2C F0 2C 3C F0 3C 2A F0 2A 1D F0 1D 22 F0 22 03 F0 03 0B F0 0B 14 05 F0 05 F0 14 11 01 F0 01 F0 11 11 09 F0 09 F0 11 11 25 F0 25 F0 11 11 2E F0 2E F0 11 7B F0 7B 35 F0 35 1A F0 1A 29 F0 29 12 16 F0 16 F0 12 12 1E F0 1E F0 12 12 26 F0 26 F0 12 12 26 F0 26 F0 12 12 25 F0 25 F0 12 12 2E F0 2E F0 12 83 F0 83 0A F0 0A 14 06 F0 06 F0 14 66 F0 66 6C F0 6C 75 F0 75 7D F0 7D E0 4A E0 F0 4A E0 4A E0 F0 4A 14 01 F0 01 F0 14 12 3D F0 3D F0 12 12 4C F0 4C F0 12 12 46 F0 46 F0 12 12 45 F0 45 F0 12 5D F0 5D 12 4A F0 4A F0 12 4C F0 4C 01 F0 01 09 F0 09 14 04 F0 04 F0 14 76 F0 76 6B F0 6B 73 F0 73 74 F0 74 79 F0 79 12 49 F0 49 F0 12 41 F0 41 12 4E F0 4E F0 12 0D F0 0D 11 36 F0 36 F0 11 11 3D F0 3D F0 11 11 3E F0 3E F0 11 11 46 F0 46 F0 11 78 F0 78 07 F0 07 14 0C F0 0C F0 14 7C F0 7C 69 F0 69 72 F0 72 7A F0 7A 5A F0 5A 11 05 F0 05 F0 11 11 06 F0 06 F0 11 11 04 F0 04 F0 11 11 0C F0 0C F0 11 11 03 F0 03 F0 11 11 0B F0 0B F0 11 11 83 F0 83 F0 11 11 0A F0 0A F0 11 11 0A F0 0A F0 11 14 83 F0 83 F0 14 14 0B F0 0B F0 14 14 03 F0 03 F0 14 11 45 F0 45 F0 11 70 F0 70 70 F0 70 70 F0 70 F0 70 71 F0 71 5A F0 5A 5A F0 5A 

*/

/*
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
*/

⌨️ 快捷键说明

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