📄 59054库函数api说明.c
字号:
I. char load_mac_key(char *s);
功能: 下装 MAC 密钥 (8 字节 〕
入口: *s :MAC 密钥指针 (8 字节 )
返回: 'S':成功
'E':失败
J. char load_mac_data(char *s1, char *s2, unsigned char l);
功能: 计算 MAC 加密值
入口: *s1 MAC 数据
*s2:返回的 MAC 加密结果指针 (8 字节 〕
l: MAC 数据长度 (8 倍数 <=248)
返回: 'S':成功
'E':失败
K. char user_des(char key_id,char *in,char *out);
功能: 代理加密
入口:
*in : 明文指针 (8 字节 〕
*out : 返回密文的指针 (8 字节 〕
返回: 'S':成功
'E':失败
L. unsigned char p_fexist(void);
功能: 判断文件系统(PINPAD方)是否存在。
入口: none
返回: 255:失败(实际上总是存在文件系统。)
M. unsigned char p_finit( unsigned char block_long, char file1_mode, char file2_mode);
功能: 初始化文件系统
入口: block_long: 32-250 字节
file1_mode: 文件1 初始化模式 ('N' or 'C')
file2_mode: 文件2 初始化模式 ('N' or 'C')
返回: 0:成功
255:失败
N. unsigned char p_fopen(char *filename, char open_mode);
功能: 打开文件
入口: filename: 8 字节文件名
open_mode: 打开方式'W' or 'R' (Write/Read)
返回: 1-open file1, 2-open file2, 0-can not open
255:失败
O. unsigned char p_fdel(char file_no);
功能: 删除文件
入口: file_no: 1 / 2
返回: 0:成功
255:失败
P. unsigned char p_fdelrec(char file_no,int rec_no);
功能: 删除记录
入口: file_no: 1 / 2
rec_no: 记录号
返回: 0-ok, 1-file_no err, 2-rec_no err
255:失败
Q. unsigned char p_fwrite(char file_no,int rec_no, char *string, unsigned char len);
功能: 写记录
入口: file_no: 1 / 2
rec_no: 记录号
返回: 0-ok
1-文件号错
2-打开方式错
3-记录超长
4-记录号错
5-无剩余空间
255:失败
R. int p_fread(char file_no,int start_rec_no,int rec_count,char *string);
功能: 读文件记录
入口: file_no: 1 / 2
start_rec_no: 起始记录号
rec_count: 读记录总数
string: 返回数据指针
返回: 0-N:所读记录字节总数
-1 :失败
S. int p_freerec(void);
功能: 读取剩余记录数
` 入口: none
返回: 可用剩余记录数
-1:失败
T. char check_key(char key_id);
功能: 检查密钥
入口: key_id: 0-31: 主密钥
'W' : 工作密钥
'M' : MAC密钥
返回: 'S':密钥校验对
'E':密钥校验错
U. char display_pad(char line, char *string);
功能: 730 PINPAD 汉字显示
入口: line: 1/2: 显示行
string: 汉字或字符串指针
返回: 'S':正确
'E':错误
密码键盘按确认键清屏,若密码键盘未按确认键则密码键盘始终点亮
V. char ic_func(unsigned char func_id,unsigned char len,char *in,char *out);
功能: 730 PINPAD IC卡功能模块
入口: func_id: IC卡功能模块号 (0-255)
in: 送往730的数据
len: 数据长度
out: 从730读出的数据
返回: -1 :失败
-2 :取消
其他:该功能模块定义的状态
W. void settimer(int seconds)
功能:定义read_pinpad()多少秒内收不到数据自动退出。
入口:定义时限,单位为秒。
出口:无。
5. KEY/PIN 控制
A. void keyoff()
功能: 调用getnstr(…)时,在POS/PIN液晶上显示'*'以代替按键码
B. void keyon()
功能: 在POS/PIN液晶上显示正常按键码
6. 磁卡阅读
A. char recard(char *str1, char * str2, char key_ctrl)
功能: 同时从磁条二三道上读其存储内容
读卡错时长度字节为0xff,手输卡号最长可达21位,
输入长度小于16时用大字体,大于16时用小字体.
入口: *str1->二道存储内容(*str1第一字节存放二道串长信息)
*str2->三道存储内容(*str2第一字节存放三道串长信息)
key_ctrl->是否允许手工输入卡号
=1 允许
=0 不允许
出口:
EXIT=0 正常读卡
=3 读卡为'CANCEL'键中断
= 11H--18H 读卡过程中有交易功能按键,返回相应键值
str1->读入二道数据头指针
str2->读入三道数据头指针
B. void track_in_start(void )
功能:可以开始用track_in()函数读卡了。
入口:无。
出口:无。
C. char track_in(char *trk2,char *trk3)
功能:立即返回划卡状态(必须与track_in_start配合使用)
返回:1:无数据,0:已读卡,数据在trk2,trk3
trk2--->返回二磁道数据,trk3--->返回三磁道数据。
与recard()函数一样,trk2,trk3的第一个字节分别表示2,3磁道数据的长度。
7. 时钟
STAR-POS内置时钟芯片,存储当前日期/时间
A. void get_date(char *str)
void get_time(char *str)
功能: 从时钟片中读当前日期/时间
入口: str->接收缓冲区头指针
出口: 接收串格式: 日期->年月日
时间->分时秒
B. void set_date(*str)
void set_time(*str)
功能: 设置当前日期/时间
入口: str->接收缓冲区头指针
出口: 无
C. void delay(int second)
功能: 令POS延迟数秒
入口: second=POS延迟秒数(最多延时6500秒)
出口: 无
D. void ResetTime()
功能:启动计时器。
入口:无。
出口:无。
E. long GetPassTime()
功能:返回计时器启动以来过了多少毫秒。
入口:无。
出口:返回计时器启动以来过了多少毫秒。
8. 其它
A. void systemsound(unsigned int ms);
功能: 系统发声
入口: ms->发声持续时间(ms)
出口: 无
B. void down_load(void);
功能: 程序执行过程中自下装
入口: 无
出口: 无
自下装功能: 在程序中调用void down_load()函数,即可进入下装.
使用方法: 将POS与主机用RS232线连接,主机进入下装状态.
POS先调用初始化RS232口函数:init_rs232(4,'N',8,1)或
init_rs232(6,'N',8,1)然后调用down_load().即进入下装.
( POS进入下装后无提示,仅在双方握手成功,开始下装数据帧时
POS才有黑色点阵块显示.)
C. char getproflag(void);
功能: 判断程序是否第一次执行
入口: 无
出口: 0--是
1--否
D.char extflash(void);
0-No Extend Flash
1-2M Bytes Extend Flash
(二). 通信 I/O 库
1. RS232口
A.void init_rs232(char BPS,PAR,DBS,STBS)
功能: 按规定的通信参数初始化RS232口
入口: BPS=通讯速率 (1/2/3/4/5/6/7/8=1200/2400/4800/9600/14400/28800/19200/57600BPS)
PAR=奇偶校验 'N'=无效验
'E'=偶效验
'O'=奇效验
DBS=数据位 (7/8)
STBS=停止位 (1/2)
出口: 无
B.char sendrs232(int len,char *str)
功能: 向RS232口发送数据
入口: (str)->发送缓冲区头指针
(len)->发送数据长度
出口: 'S'--->发送成功。
C.int readrs232(char *str,char seconds,int len)
功能: 从RS232口接收数据
入口: (str)->接收缓冲区头指针
(seconds)->等待接收时限 (秒)
(len)->需接收数据长度
出口: =0 超时未收到数据
>0 实际接收到的数据个数
2.MODEM口
A. void init_dial(char BPS,PAR,DBS)
功能: 按规定的通信参数初始化MODEM口
入口: BPS=通讯速率 (0/1/2=300/1200/2400BPS)
PAR=奇偶校验 'N'=无效验
'E'=偶效验
'O'=奇效验
DBS=数据位 (7/8)
出口: 无
B. char if_exist_dialtone(void);
功能: 判线路是否有拨号音,用于检查电话线路联接状况,
提请用户接好电话线,不要用于dial调用失败后,
检测线路。
入口: 无
出口: 'P': 并接电话正在使用
'S': 拨号音正常
'6': 无拨号音
C. char dial(*str)
功能: 拨号或发AT命令,初始化MODEM口
入口: *str-->AT命令数据缓冲区
出口: 'F': AT命令错
'0': AT命令OK
'S': 拨号命令正确,准备拨号
注:支持的AT命令
ATS6=XX,
判拨号音定时,XX取值范围1到10,缺省为3
ATS7=YY,
判载波定时,YY取值范围5到30,缺省为5
为解决脉冲拨号问题,dial()函数增加两个S寄存器(仅从P590043开始有效),
用以设置功能脉冲拨号的MARK和BRAEK时间。
两个寄存器分别为SM和SB,设置方式同S6和S7寄存器,如:
dial("ATSB=40");表示BREAK=64ms。
dial("ATSM=23");表示MAKE=36.8ms。
拨号命令为ATD电话号码,有效电话号码字符如下:
'0'--'9':数字号码
'#','*','A','B','C','D':仅用于双音频拨号
'W':等待拨号音后,继续拨下一号码
',':等待1秒,继续拨下一号码
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -