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

📄 highbios.h

📁 P115 IC卡手持POS是天石科技32位IC卡POS系列产品之一
💻 H
字号:

/*-----------------------------------------------------------------------------
 *                        COMSYS P115 Basic IO Module                         *
 *                               Copyright (c)                                *
 *                          2003-03-06 by Yuwu Zhang                          *
 *                               Beijing.China                                *
 *                             sun_wizard@163.net                             *
 -----------------------------------------------------------------------------*/

/**
 * Notes
 *   Do NOT call any io functions in stdio.h, or the system will crash!
 *   Call functions below will be OK.
 *
 * Last update
 *   2003/5/27
 *
 */

#ifndef __BasicIO_H__
#define __BasicIO_H__

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#include "C_m40800.h" 
#include "C_P115.h"  
#include "C_int.h"
#include "System.h"
#include "file_sys_api.h"

#define true	((char)1)
#define false	((char)0)

// Screen size
#define MAX_COL		16					// 4行16列
#define MAX_ROW		4

// Key value
#define vk_UP		0x09
#define vk_DOWN		0x0c
#define vk_FUNC		0x0b
#define vk_ESC		0x1b
#define vk_ENTER	0x0d
#define vk_BACK		0x0a
#define vk_LEFT		vk_UP
#define vk_RIGHT	vk_DOWN

// Device id
#define COM1        1
#define IRDA        2

#define SLE4428     11
#define SLE4442     12

#define AT24C64     21
#define AT24C32     22
#define AT24C16     23
#define AT24C08     24
#define AT24C04     25
#define AT24C02     26
#define AT24C01     27

#define AT1604      31
#define AT1608      32

#define AT45D041    41

#define CPU1        51
#define CPU2        52

#define SAM1        61
#define SAM2        62

// PASSWORD TYPE FOR AT1604
#define AT1604_PWD_SC		0
#define AT1604_PWD_SC1		1
#define AT1604_PWD_EZ1		2
#define AT1604_PWD_SC2		3
#define AT1604_PWD_EZ2		4
#define AT1604_PWD_SC3		5
#define AT1604_PWD_EZ3		6
#define AT1604_PWD_SC4		7
#define AT1604_PWD_EZ4		8

// ZONE AREA FOR AT1604
#define AT1604_ZONE_1		1
#define AT1604_ZONE_2		2
#define AT1604_ZONE_3		3
#define AT1604_ZONE_4		4

// PASSWORD TYPE FOR AT1608
#define AT1608_PWD_W1		0
#define AT1608_PWD_R1		1
#define AT1608_PWD_W2		2
#define AT1608_PWD_R2		3
#define AT1608_PWD_W3		4
#define AT1608_PWD_R3		5
#define AT1608_PWD_W4		6
#define AT1608_PWD_R4		7
#define AT1608_PWD_W5		8
#define AT1608_PWD_R5		9
#define AT1608_PWD_W6		10
#define AT1608_PWD_R6		11
#define AT1608_PWD_W7		12
#define AT1608_PWD_R7		13
#define AT1608_PWD_W8		14
#define AT1608_PWD_R8		15

// ZONE AREA FOR AT1608
#define AT1608_ZONE_1		0
#define AT1608_ZONE_2		1
#define AT1608_ZONE_3		2
#define AT1608_ZONE_4		3
#define AT1608_ZONE_5		4
#define AT1608_ZONE_6		5
#define AT1608_ZONE_7		6
#define AT1608_ZONE_8		7

// DEVICE OPTION
#define SELECT_AT1604_ZONE	1
#define SELECT_AT1608_ZONE	2
#define SLE4428_PROT_MODE	3
#define SLE4442_FUSE_MODE	4

// LCD ICON OBJECT
#define LCD_ICON_ALL		0
#define LCD_ICON_SIGNAL		1
#define LCD_ICON_MESSAGE	2
#define LCD_ICON_PRINTER	3
#define LCD_ICON_CARD		4
#define LCD_ICON_TIME		5
#define LCD_ICON_BATTERY	6

// DATA STRUCTURE
typedef unsigned char bool;
typedef unsigned char uchar;
typedef unsigned long ulong;

typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef UINT (* Event)(void * arg);
typedef BYTE HDEV;
#define INVALID_DEV_HANDLE	0

typedef struct tagPoint {
	int x;
	int y;
} TPoint;

typedef struct tagSize {
	int cx;
	int cy;
} TSize;

typedef struct tagRect {
	int left;
	int top;
	int right;
	int bottom;
} TRect;

// 数据进制定义:8位、10位、16位
enum DigitMode {
    modeOct = 0x08,
    modeDec = 0x0A,
    modeHex = 0x10
};

// Display style
#define WITH_REVERSE_STYLE	true			// 采用反显风格
#define NO_REVERSE_STYLE	false			// 不用反显风格

// Alignment mode
#define ALIGN_CENTER		1				// 采用中间对齐
#define ALIGN_LEFT			2				// 左对齐
#define ALIGN_RIGHT			3				// 右对齐

// Message Box type
#define MB_OK				1
#define MB_CANCEL			2

// ShowMessage return values
#define MR_OK				1
#define MR_CANCEL			2

// 居中对齐的左边位置
#define LEFT_ALIGN_CENTER(str)	((MAX_COL - strlen(str)) / 2)

// 右对齐的左边位置
#define LEFT_ALIGN_RIGHT(str)	(MAX_COL - strlen(str))

// Function alias
#define zero(arr)	memset(arr, 0, sizeof(arr))
#define printf		_output					// 格式化输出,光标会被自动定位
#define inkey		get_char				// 获取按键,不等待

#define MIN_LCD_VOLUME	0x10
#define MAX_LCD_VOLUME	0x30

extern int pinyin_cursor_x;
extern int pinyin_cursor_y;

// LCD Control
void LcdClearScreen();
void LcdDisplayPixel(int x, int y);
void LcdClearPixel(int x, int y);
void LcdDisplayChar(int x, int y, char ch);
void LcdReverseChar(int x, int y, char ch);
void LcdDisplayString(int x, int y, char * str);
void LcdReverseString(int x, int y, char * str);
BYTE LcdGetVolume();
void LcdSetVolume(BYTE brightness);			// brightness(0x10-0x30)
void DisplayLine(int y, const char * title, int alignMode, bool bReverse);
void ShowProgress(int line, int per);
bool ShowMemo(const char ** memo, int count, int alignMode);
void ShowComsysLogo(const char *title);
void DisplayTitle(const char *title, bool bReverse);
void DisplayMidTitle(const char *title, bool bReverse);
void DisplayOkCancel(int type);
void DisplayMidOkCancel(int type);
int ShowMessage(const char *title, const char *msg, int type, bool wait);
int ShowInputBox(const char *title, char *buffer, int *len, int type);

// 保存屏幕
void get_screen(unsigned char *buffer);
// 恢复屏幕
void put_screen(unsigned char *buffer);

// Standard io routines
unsigned char get_char();
void gotoxy(int x, int y);
void getxy(int *x, int *y);
void clrscr();
void clrline(int line);
void set_cursor(bool on);
bool get_cursor();
bool get_beep();
void set_beep(bool on);
bool get_blight();
void set_blight(bool on);
char getch();
char get_key();
void putch(char ch);
void putwch(ushort wch);
int _puts(const char * buffer);
int _gets(char * buffer);
bool getstr(char * buffer, int maxLength, int * length);
bool getabc(char * buffer, int maxLength, int * length);
int _output(const char * fmt, ...);
bool get_chinese(int max_length, unsigned char *buffer, int * length);

// IO control, COM1, IRDA, CARD(s) ...
HDEV open(int device, int option);
void close(HDEV hDev);
int read(HDEV hDev, int addr, BYTE * buffer, int length);
int write(HDEV hDev, int addr, const BYTE * buffer, int length);
bool ic_verify(HDEV hDev, int type, BYTE * pwd);
bool ic_modify(HDEV hDev, int type, BYTE * new_pwd);
bool setopt(int option, int value);
bool ic_exist();

// CPU card
int icc_open(int device, BYTE *resp, BYTE *rlen);
void icc_close(int device);
int icc_command(int device, BYTE *cmd, int len, BYTE *resp, BYTE *rlen);

// System
unsigned long GetTickCount();
void delay(unsigned long milliseconds);

// Graphics
void Pixel(int x, int y, bool on);
void Line(int x1, int y1, int x2, int y2);
void Rectangle(int x, int y, int a, int b);
void Ellipse(int a, int b, int r1, int r2);
void FillEllipse(int a, int b, int r1, int r2);
void FillRectangle(int x, int y, int a, int b);
void DrawBitmap(TPoint pt, TSize size, const BYTE * buffer, bool reverse);
void ClearLine(int x1, int y1, int x2, int y2);
void LcdSetIcon(int object, unsigned int level);

// DATE & TIME
TDate GetDate();
TTime GetTime();
bool SetDate(TDate date);
bool SetTime(TTime time);

char * GetCurrentDate();
char * GetCurrentTime();
bool SetCurrentDate();
bool SetCurrentTime();

// Timer
msgtype *get_msg();
void free_msg(msgtype *message);
msgtype *get_my_msg(unsigned char procid);
unsigned int get_timer();
void proc_timer();

// Flash
bool FlashSectorErase(int sector);
bool FlashWrite(ulong addr, BYTE *buf, unsigned int count);
bool FlashRead(ulong addr, BYTE *buf, unsigned int count);

#ifdef __cplusplus
}
#endif // __cplusplus

#endif

⌨️ 快捷键说明

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