📄 pro_fun.prg
字号:
ERR = HANDSHAKE(SLA,@UC,@SC)
IF ERR = 0
EXIT
ENDIF
ENDFOR
WAIT CLEAR
= RELASE_HS()
= RELASE_COM()
RETURN ERR
ENDPROC
*------
PROCEDURE modi_mach_time
PARAMETER COM , BAUD , UC , SC , TIME , DATE
PRIVATE COM , BAUD , UC , SC , TIME , DATE , ERR , LOOPBZ , YESNO , I
DO KQ_MACH_COM
LOCX = _SCREEN.CURRENTX + 13
LOCY = _SCREEN.CURRENTY + 43
WAIT WINDOW AT LOCX , LOCY NOCLEAR NOWAIT '正在校正考勤机时钟,请稍候...'
= RELASE_HS()
= RELASE_COM()
ERR = SELE_COM(COM,BAUD)
IF ERR <> 0
WAIT CLEAR
RETURN ERR
ENDIF
ERR = HANDSHAKE(0,@UC,@SC)
IF ERR <> 0
WAIT CLEAR
RETURN ERR
ENDIF
ERR = MODIFYTIME(@TIME,@DATE)
IF ERR <> 0
RETURN ERR
ENDIF
WAIT CLEAR
= RELASE_HS()
= RELASE_COM()
RETURN ERR
ENDPROC
*------
PROCEDURE cj_kq_data
PARAMETER COM , BAUD , SLA , UC , SC
PRIVATE COM , BAUD , UC , SC , ERR , LOOPBZ , YESNO , I
DO KQ_MACH_COM
LOCX = _SCREEN.CURRENTX + 13
LOCY = _SCREEN.CURRENTY + 43
WAIT WINDOW AT LOCX , LOCY NOCLEAR NOWAIT '正在采集考勤数据,请稍候...'
= RELASE_HS()
= RELASE_COM()
LOOPBZ = .T.
DO WHILE LOOPBZ = .T.
ERR = SELE_COM(COM,BAUD)
IF ERR <> 0
YESNO = RFALERT(ERR)
IF YESNO = 2
RETURN ERR
ENDIF
LOOP
ENDIF
ERR = HANDSHAKE(SLA,@UC,@SC)
IF ERR <> 0
YESNO = RFALERT(ERR)
IF YESNO = 2
= MIF_CLOSECOM()
RETURN ERR
ENDIF
LOOP
ENDIF
KQ_DATALEN = REPLICATE('F',10)
KQ_DATAF = REPLICATE('F',64)
ERR = READ_ATTENDANCE(@KQ_DATALEN,@KQ_DATAF)
IF ERR <> 0
YESNO = RFALERT(ERR)
IF YESNO = 2
= MIF_CLOSECOM()
RETURN ERR
ENDIF
LOOP
ENDIF
LOOPBZ = .F.
WAIT CLEAR
= RELASE_HS()
= RELASE_COM()
ENDDO
RETURN KQ_DATAF
ENDPROC
*------
PROCEDURE first_check_kqmach
PARAMETER COM , BAUD , UC , SC
PRIVATE SLA , US , SC , ERR , LOOPBZ , YESNO , I
DO KQ_MACH_COM
= RELASE_COM()
ERR = SELE_COM(COM,BAUD)
IF ERR <> 0
RETURN ERR
ENDIF
ERR = HANDSHAKE(1,@UC,@SC)
IF ERR = 0
EXIT
ENDIF
= RELASE_HS()
= RELASE_COM()
RETURN ERR
ENDPROC
*------
PROCEDURE xtqxctl
PARAMETER NAMEPARA
PRIVATE FILEBZ
IF NAMEPARA == 'Admin'
RETURN
ENDIF
SET SAFETY OFF
IF FILE(DBFDIRECTORY + '\xtmk.dbf')
= UNLOCKDB(DBFDIRECTORY + '\xtmk.dbf')
USE IN 0 EXCLUSIVE xtmk.dbf ALIAS XTMK
SELECT XTMK
INDEX ON MKMC TO tempqxmk FOR ALLTRIM(CZYXM) == NAMEPARA
SCAN
LNMKMC = ALLTRIM(MKMC)
LNCZBZ = CZBZ
DO CONMKQX WITH LNMKMC , LNCZBZ
ENDSCAN
USE
= LOCKDB(DBFDIRECTORY + '\xtmk.dbf')
FILEBZ = .T.
DELETE File tempqxmk.idx
LNBARNUM1 = CNTBAR('资料设置s')
IF LNBARNUM1 = 2
LNPOS = GETBAR('资料设置s',2)
RELEASE BAR (LNPOS) OF 资料设置S
ENDIF
LNBARNUM2 = CNTBAR('ic卡管理m')
IF LNBARNUM2 = 2
LNPOS = GETBAR('ic卡管理m',2)
RELEASE BAR (LNPOS) OF IC卡管理M
ENDIF
LNBARNUM3 = CNTBAR('门锁管理c')
IF LNBARNUM3 = 2
LNPOS = GETBAR('门锁管理c',2)
RELEASE BAR (LNPOS) OF 门锁管理C
ENDIF
LNBARNUM4 = CNTBAR('系统管理a')
IF LNBARNUM4 = 2
LNPOS = GETBAR('系统管理a',2)
RELEASE BAR (LNPOS) OF 系统管理A
ENDIF
LNBARNUM5 = CNTBAR('报表输出q')
IF LNBARNUM5 = 2
LNPOS = GETBAR('报表输出q',2)
RELEASE BAR (LNPOS) OF 报表输出Q
ENDIF
ELSE
FILEBZ = .F.
ENDIF
IF FILEBZ = .F.
= MESSAGEBOX('系统数据库缺少或不存在!',64,'信息提示')
RETURN
ENDIF
ENDPROC
*------
PROCEDURE conmkqx
PARAMETER MKMCPARA , CZBZPARA
DO CASE
CASE MKMCPARA == '资料设置(菜单项)'
RELEASE BAR 1 OF 资料设置S
RELEASE BAR 2 OF 资料设置S
RELEASE BAR 3 OF 资料设置S
RELEASE BAR 4 OF 资料设置S
RELEASE BAR 5 OF 资料设置S
RELEASE BAR 6 OF 资料设置S
RELEASE BAR 7 OF 资料设置S
CASE MKMCPARA == 'IC卡管理(菜单项)'
RELEASE PAD _0H80JGMLI OF _MSYSMENU
CASE MKMCPARA == '门锁管理(菜单项)'
RELEASE PAD _0H80JGMLJ OF _MSYSMENU
CASE MKMCPARA == '系统管理(菜单项)'
RELEASE PAD _0H80JGMLK OF _MSYSMENU
CASE MKMCPARA == '报表输出(菜单项)'
RELEASE PAD _0H80JGMLL OF _MSYSMENU
CASE MKMCPARA == '系统参数设置'
RELEASE BAR 1 OF 资料设置S
RELEASE BAR 2 OF 资料设置S
CASE MKMCPARA == '客房参数设置'
RELEASE BAR 3 OF 资料设置S
CASE MKMCPARA == '客房地址设置'
RELEASE BAR 4 OF 资料设置S
RELEASE BAR 5 OF 资料设置S
CASE MKMCPARA == '钥匙卡定义'
RELEASE BAR 6 OF 资料设置S
RELEASE BAR 7 OF 资料设置S
CASE MKMCPARA == '新卡初始化'
RELEASE BAR 1 OF IC卡管理M
CASE MKMCPARA == '重新初始化'
RELEASE BAR 2 OF IC卡管理M
RELEASE BAR 3 OF IC卡管理M
CASE MKMCPARA == '发行钥匙卡'
RELEASE BAR 4 OF IC卡管理M
RELEASE BAR 5 OF IC卡管理M
CASE MKMCPARA == '修改卡片信息'
RELEASE BAR 6 OF IC卡管理M
RELEASE BAR 7 OF IC卡管理M
CASE MKMCPARA == '挂失卡片'
RELEASE BAR 8 OF IC卡管理M
CASE MKMCPARA == '取消挂失'
RELEASE BAR 9 OF IC卡管理M
RELEASE BAR 10 OF IC卡管理M
CASE MKMCPARA == 'IC卡检测'
RELEASE BAR 11 OF IC卡管理M
RELEASE BAR 12 OF IC卡管理M
CASE MKMCPARA == '回收卡片'
RELEASE BAR 13 OF IC卡管理M
RELEASE BAR 12 OF IC卡管理M
CASE MKMCPARA == '修改门锁安装信息'
RELEASE BAR 1 OF 门锁管理C
RELEASE BAR 2 OF 门锁管理C
CASE MKMCPARA == '维护门锁'
RELEASE BAR 3 OF 门锁管理C
RELEASE BAR 4 OF 门锁管理C
RELEASE BAR 5 OF 快捷菜单
CASE MKMCPARA == '清除门锁信息'
RELEASE BAR 5 OF 门锁管理C
RELEASE BAR 6 OF 门锁管理C
CASE MKMCPARA == '读取门锁记录'
RELEASE BAR 7 OF 门锁管理C
RELEASE BAR 6 OF 门锁管理C
CASE MKMCPARA == '操作员管理'
RELEASE BAR 1 OF 系统管理A
RELEASE BAR 2 OF 系统管理A
CASE MKMCPARA == '操作员属性'
RELEASE BAR 3 OF 系统管理A
RELEASE BAR 4 OF 系统管理A
CASE MKMCPARA == '清除资料'
RELEASE BAR 5 OF 系统管理A
RELEASE BAR 6 OF 系统管理A
CASE MKMCPARA == '初始化系统'
RELEASE BAR 7 OF 系统管理A
RELEASE BAR 8 OF 系统管理A
CASE MKMCPARA == '维护数据库'
RELEASE BAR 9 OF 系统管理A
RELEASE BAR 10 OF 系统管理A
CASE MKMCPARA == '备份系统数据'
RELEASE BAR 11 OF 系统管理A
CASE MKMCPARA == '恢复系统数据'
RELEASE BAR 12 OF 系统管理A
RELEASE BAR 13 OF 系统管理A
CASE MKMCPARA == '压缩与解压数据'
RELEASE BAR 14 OF 系统管理A
RELEASE BAR 13 OF 系统管理A
CASE MKMCPARA == '登录信息'
RELEASE BAR 1 OF 报表输出Q
CASE MKMCPARA == '操作日志'
RELEASE BAR 2 OF 报表输出Q
RELEASE BAR 3 OF 报表输出Q
CASE MKMCPARA == '删除操作员'
RELEASE BAR 4 OF 报表输出Q
RELEASE BAR 5 OF 报表输出Q
CASE MKMCPARA == '卡基本信息'
RELEASE BAR 6 OF 报表输出Q
RELEASE BAR 7 OF 报表输出Q
CASE MKMCPARA == '定义钥匙卡名称'
RELEASE BAR 8 OF 报表输出Q
CASE MKMCPARA == '后台发行钥匙卡'
RELEASE BAR 9 OF 报表输出Q
RELEASE BAR 10 OF 报表输出Q
CASE MKMCPARA == '前台开房记录'
RELEASE BAR 11 OF 报表输出Q
CASE MKMCPARA == '客房退房'
RELEASE BAR 12 OF 报表输出Q
CASE MKMCPARA == '客房预订'
RELEASE BAR 13 OF 报表输出Q
RELEASE BAR 14 OF 报表输出Q
CASE MKMCPARA == '现住客房'
RELEASE BAR 15 OF 报表输出Q
RELEASE BAR 16 OF 报表输出Q
CASE MKMCPARA == '门锁信息'
RELEASE BAR 17 OF 报表输出Q
RELEASE BAR 16 OF 报表输出Q
ENDCASE
ENDPROC
*------
PROCEDURE popqxctl
PARAMETER NAMEPARA
PRIVATE FILEBZ
IF NAMEPARA == 'Admin'
RETURN
ENDIF
SET SAFETY OFF
IF FILE(DBFDIRECTORY + '\xtmk.dbf')
= UNLOCKDB(DBFDIRECTORY + '\xtmk.dbf')
USE IN 0 EXCLUSIVE xtmk.dbf ALIAS XTMK
SELECT XTMK
INDEX ON MKMC TO tempqxmk FOR ALLTRIM(CZYXM) == NAMEPARA
SCAN
LNMKMC = ALLTRIM(MKMC)
DO POPMKQX WITH LNMKMC
ENDSCAN
USE
= LOCKDB(DBFDIRECTORY + '\xtmk.dbf')
DELETE File tempqxmk.idx
LNBARNUM = CNTBAR('快捷菜单')
IF LNBARNUM = 2
LNPOS = GETBAR('快捷菜单',2)
RELEASE BAR (LNPOS) OF 快捷菜单
ENDIF
ELSE
RETURN
ENDIF
ENDPROC
*------
PROCEDURE popmkqx
PARAMETER MKMCPARA
DO CASE
CASE MKMCPARA == '资料设置(菜单项)'
RELEASE BAR 7 OF 快捷菜单
CASE MKMCPARA == '门锁管理(菜单项)'
RELEASE BAR 3 OF 快捷菜单
RELEASE BAR 4 OF 快捷菜单
RELEASE BAR 5 OF 快捷菜单
RELEASE BAR 6 OF 快捷菜单
CASE MKMCPARA == 'IC卡管理(菜单项)'
RELEASE BAR 1 OF 快捷菜单
RELEASE BAR 2 OF 快捷菜单
CASE MKMCPARA == '钥匙卡定义'
RELEASE BAR 6 OF 快捷菜单
RELEASE BAR 7 OF 快捷菜单
CASE MKMCPARA == '发行钥匙卡'
RELEASE BAR 1 OF 快捷菜单
RELEASE BAR 2 OF 快捷菜单
CASE MKMCPARA == '修改门锁安装信息'
RELEASE BAR 5 OF 快捷菜单
RELEASE BAR 6 OF 快捷菜单
CASE MKMCPARA == '维护门锁'
RELEASE BAR 3 OF 快捷菜单
RELEASE BAR 4 OF 快捷菜单
ENDCASE
ENDPROC
*------
PROCEDURE sure32wc
&&----无事件!
ENDPROC
PROCEDURE lc32rw
CLEAR DLLS
LOCATE FOR ALLTRIM(CONT) == 'readwrite'
IF .NOT. FOUND()
DECLARE INTEGER init_com IN lc32rw INTEGER
DECLARE INTEGER close_com IN lc32rw
DECLARE INTEGER sele_card IN lc32rw INTEGER
DECLARE INTEGER power_on IN lc32rw
= MESSAGEBOX('请插入安装卡,否则系统无法自动检测读写器!!',64,'信息提示')
LOCATE FOR ALLTRIM(CONT) == 'com'
M.COMC = ALLTRIM(DATA)
DO CASE
CASE M.COMC = '串口一'
COM = 0
CASE M.COMC = '串口二'
COM = 1
CASE M.COMC = '串口三'
COM = 2
CASE M.COMC = '串口四'
COM = 3
OTHERWISE
= MESSAGEBOX('请设置正确的串口!',64,'信息提示')
RETURN
ENDCASE
ERR = INIT_COM(COM)
ERR = SELE_CARD(42)
ERR = POWER_ON()
IF ERR = 0
DEFINEID = 1
ERR = CLOSE_COM()
ELSE
ERR = CLOSE_COM()
CLEAR DLLS
DECLARE INTEGER init_com IN sure32wc INTEGER
DECLARE INTEGER close_com IN sure32wc
DECLARE INTEGER sele_card IN sure32wc INTEGER
DECLARE INTEGER power_on IN sure32wc
ERR = INIT_COM(COM)
ERR = SELE_CARD(42)
ERR = POWER_ON()
IF ERR = 0
DEFINEID = 2
ELSE
= MESSAGEBOX('您没有插入安装卡或者读写器连接有误,请插卡或者检查线路连接!',64,'信息提示')
RETURN
ENDIF
ENDIF
APPEND BLANK
REPLACE CONT WITH 'readwrite'
REPLACE DATA WITH ALLTRIM(STR(DEFINEID))
ERR = CLOSE_COM()
CLEAR DLLS
ELSE
DEFINEID = INT(VAL(DATA))
ENDIF
IF DEFINEID = 1
DECLARE INTEGER init_com IN lc32rw INTEGER
DECLARE INTEGER close_com IN lc32rw
DECLARE INTEGER power_on IN lc32rw
DECLARE INTEGER power_off IN lc32rw
DECLARE INTEGER sele_card IN lc32rw INTEGER
DECLARE INTEGER chk_sc IN lc32rw INTEGER , INTEGER , STRING @
DECLARE INTEGER rd_str IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER wr_str IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER rd_asc IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER wr_asc IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER rd_sm IN lc32rw STRING @
DECLARE INTEGER wr_sc IN lc32rw STRING @
DECLARE INTEGER cpwr_str IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER cpwr_asc IN lc32rw INTEGER , INTEGER , INTEGER , STRING @
ELSE
DECLARE INTEGER init_com IN sure32wc INTEGER
DECLARE INTEGER close_com IN sure32wc
DECLARE INTEGER power_on IN sure32wc
DECLARE INTEGER power_off IN sure32wc
DECLARE INTEGER sele_card IN sure32wc INTEGER
DECLARE INTEGER chk_sc IN sure32wc INTEGER , INTEGER , STRING @
DECLARE INTEGER rd_str IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER wr_str IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER rd_asc IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER wr_asc IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER rd_sm IN sure32wc STRING @
DECLARE INTEGER wr_sc IN sure32wc STRING @
DECLARE INTEGER cpwr_str IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
DECLARE INTEGER cpwr_asc IN sure32wc INTEGER , INTEGER , INTEGER , STRING @
ENDIF
ENDPROC
*------
PROCEDURE lockda
PARAMETER MHMMML , KHKMKL
PRIVATE MHMMML , KHKMKL , KH , KM , KL , MH , MM , ML , MHB , MMB , MLB , KHB , KMB , ;
KLB , XH , XM , XL , RHB , RMB , RLB , RHB1 , RHB2 , RMB1 , RMB2 , RLB1 , ;
RLB2 , SB , SB1 , SB2
MHMMML = ALLTRIM(MHMMML)
KHKMKL = ALLTRIM(KHKMKL)
ML = SUBSTR(MHMMML,1,2)
MM = SUBSTR(MHMMML,3,2)
MH = SUBSTR(MHMMML,5,2)
KH = SUBSTR(KHKMKL,1,2)
KM = SUBSTR(KHKMKL,3,2)
KL = SUBSTR(KHKMKL,5,2)
MHB = HEXBIN(MH)
MMB = HEXBIN(MM)
MLB = HEXBIN(ML)
KHB = HEXBIN(KH)
KMB = HEXBIN(KM)
KLB = HEXBIN(KL)
XH = BINDEC(SUBSTR(KHB,6,3))
XM = BINDEC(SUBSTR(KMB,6,3))
XL = BINDEC(SUBSTR(KLB,6,3))
RHB = XOR(MHB,KHB)
RMB = XOR(MMB,KMB)
RLB = XOR(MLB,KLB)
RHB1 = SUBSTR(RHB,1,XH)
RHB2 = SUBSTR(RHB,XH + 1)
RHB = RHB2 + RHB1
RMB1 = SUBSTR(RMB,1,XM)
RMB2 = SUBSTR(RMB,XM + 1)
RMB = RMB2 + RMB1
RLB1 = SUBSTR(RLB,1,XL)
RLB2 = SUBSTR(RLB,XL + 1)
RLB = RLB2 + RLB1
SB = RHB + RMB + RLB
SB1 = SUBSTR(SB,1,4)
SB2 = SUBSTR(SB,5)
SB = SB2 + SB1
SH = BINHEX(SB)
SH = SWAP(SH)
RETURN SH
ENDPROC
*------
PROCEDURE unlockda
PARAMETER SH , KHKMKL
PRIVATE SH , KHKMKL , KH , KM , KL , MH , MM , ML , SHB , SHBL , SHBR , NHNMNL , NHB , ;
NMB , NLB , KHB , KMB , KLB , XH , XM , XL
SH = SWAP(SH)
KHKMKL = ALLTRIM(KHKMKL)
KH = SUBSTR(KHKMKL,1,2)
KM = SUBSTR(KHKMKL,3,2)
KL = SUBSTR(KHKMKL,5,2)
SHB = HEXBIN(SH)
SHBL = RIGHT(SHB,4)
SHBR = LEFT(SHB,20)
NHNMNL = SHBL + SHBR
NHB = SUBSTR(NHNMNL,1,8)
NMB = SUBSTR(NHNMNL,9,8)
NLB = SUBSTR(NHNMNL,17,8)
KHB = HEXBIN(KH)
KMB = HEXBIN(KM)
KLB = HEXBIN(KL)
XH = BINDEC(SUBSTR(KHB,6,3))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -