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

📄 59054库函数api说明.c

📁 利用POS机具硬件改为条纹码扫描器的编程代码
💻 C
📖 第 1 页 / 共 4 页
字号:
        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 + -