先用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;
#define Const_Terminator 0x20
#pragma data_seg("mydata")
static HINSTANCE DLLInst = NULL; //動態庫句柄
#pragma data_seg() //
HANDLE hCom; //COM串口句柄
//------------------------------------------------------
//POLICE.DLL動態庫函數功能定義
//------------------------------------------------------
HANDLE (__stdcall *Init_comm)(LPSTR str);//初始化通信口
BYTE (__stdcall *Exit)(HANDLE hCom);//關閉通信口
BYTE (__stdcall *Protocol)(HANDLE hCom,BYTE cmd,BYTE len,BYTE *_dt,BYTE *prlen,BYTE *prdt);//通信協議
BYTE (__stdcall *Pipe_control)(HANDLE hCom,BYTE mode);//多路控制typedef
BYTE (__stdcall *Dev_escape)(HANDLE hCom);//斷開多路控制
//---------------------------------------------