刚到公司不久,接到领导的下达的一个任务,就是把对POS机操作功能封装在ActiveX控件中,在IE中调用。这样就能实现在IE上直接对POS机进行操作。而我要封装的这个动态库,厂家只提供了一个单的动态库和一百多字的说明,也就是说明一下动态库中有机个函数和其对应的参数。也就是厂家就连动态库对应的头文件也没有提供。:-( 这样也行?!
接到这个任务后,我第一想到的是用VC的ATL来实现它。你问我为什么要用ATL也不用别的,如CB、Delphi之类的。我只能说我觉得写ActiveX还是用VC好;况且还要对硬件进行操作,这样一来当然是用VC了。别说我没提醒你,用CB、Delphi之类的有可能会出现预想不到的惊奇......
现在让我带着进入正题吧!先用ATL COM AppWizard生成一个名叫PosActiveX的工程,生成时系统会问你是生成DLL还是EXE。当然是DLL的了。生成好后加入一个接口叫IPosCtrl,当然了要在Web上用,所以生成的接口一定是要小所以选择Lite Control的。你可别问我怎么加入,如果这都不会,那我写的这文章是不适合你看的。所以等你学会加入接口后再看。接口加好后,我就要实现方法了。首先用接口一般都要对其进行初始化。所以加入一个叫Init(short nCom)的接口方法,该方法完成加载DLL和DLL中的功能函数,还有就是打开对POS机进行操作的COM口;还有一个是修改POS机的时间的方法叫ModifyPosDT(BSTR bstrDT);还有个是清空POS机中数据的方法--EmptyPos()。最后,当你不想用时就要关闭所打开的COM口--Quit()。在生成接口IPosCtrl时同时会生成CPosCtrl类。我有个习惯,就是我一般是把实现方法都写在类中,而接口只时输出该类中你想输出的方法。所以在类中我就写了以下几个方法:
InitDll()----加载DLL库和其中的功能函数; ExitDll()----卸载DLL库,用完后不卸载是在占用内存。所以它是少不了的。 SetPosDateTime(char * pchDT)---设置POS机的时间。 ClearPos()----清空POS机中的记录。
在类中我就写了这几个方法。
在说一下我要输出的接口方法有: Init(short nCom)----初化接口,为调用做准备。 Quit()----退出程序时,调用它退出接口调用。 ModifyPosDT(BSTR bstrDT)----设置POS机时间。 EmptyPos()----清空POS机数据。
完了就这么多。 现在来看看我的源程序吧!
// PosCtrl.cpp : Implementation of CPosCtrl
#include "stdafx.h" #include "PosActiveX.h" #include "PosCtrl.h"
//-------------------------------------------------------- // Police.dll所用到的常量定义 //-------------------------------------------------------- #define Com_UpRecord 1 #define Com_UpPoliceLen 2 #define Com_UpSimpleDataLen 3 #define Com_UpSimplePunishLen 4 #define Com_UpGeneralDataLen 5 #define Com_UpGeneralPunishLen 6
#define Com_EmptyPolice 7 #define Com_EmptySimpleData 8 #define Com_EmptySimplePunish 9 #define Com_EmptyGeneralData 10 #define Com_EmptyGeneralPunish 11
#define Com_DownRecord 0x80 #define Com_DownStreetCodeLen 0x81 #define Com_DownBlackListLen 0x82 #define Com_DownPeccancySimpleLen 0x83 #define Com_DownPeccancyGeneralLen 0x84 #define Com_DownDateTime 0x85 #define Com_Exit 0x86 #define Com_Init 0x87
#define Err_UpSimpleDataLen 0 #define Err_UpSimplePunishLen 1 #define Err_UpGeneralDataLen 2 #define Err_UpGeneralPunishLen 3 #define Err_UpPoliceLen 4 #define Err_UpRecord 5 #define Err_DownStreetCodeLen 6 #define Err_DownSimplePeccancyCodeLen 7 #define Err_DownGeneralPeccancyCodeLen 8 #define Err_DownBlackList 9 #define Err_DownDateTime 10 #define Err_EmptyData 11 #define Err_GetCode 12; <  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
1/2 1 2 下一页 尾页 |