Bir Dll var elimde. Bunu delphi içinden kullanmam gerek. Teorik bazı bilgilerim var ama olayı tam çözemedim. Aşağıda bu dll i kullanan c++ kodu ve en altta headeri var.
Ben programımda bu dll i kullanmak için ne yapmalıyım. ?
Bilenler yardımcı olursa sevinirim.
Saygılar
Kod: Tümünü seç
//---------------------------------------------------------------------------
/*
Copyright 2001 Symbol Technologies, All Rights Reserved
*/
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "KF1.h"
#include "csp2.h"
#include "TimeDlg.h"
#include <dir.h>
#include <string.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
#define MAXSIZE ((long)16384)
bool ComStarted=false,AutoMode=false;
int Port=0,ret;
char stmp[256];
//---------------------------------------------------------------------------
int __stdcall csp2PollCallBack(void)
{
unsigned char barcode[100],t1[20];
unsigned char t2[400];
int n,l,l1,i;
long ret;
Form1->Memo1->Lines->Add("CallBack! Attempting UpLoad...");
ret=csp2ReadData();
sprintf(stmp,"Upload Response %d",ret);
Form1->Memo1->Lines->Add(stmp);
if (ret>0) {
l=ret;
for (n=0;n<l;n++){
ret=csp2GetPacket(barcode,n,sizeof(barcode));
if (ret>0) {
l1=ret;
sprintf(t2,"Rcvd: ");
for (i=1;i<l1;i++) {
sprintf(t1,"%02X ",barcode[i]);
strcat(t2,t1);
}
Form1->Memo1->Lines->Add((char *)t2);
}
}
Sleep(250);
csp2WakeUp();
Sleep(500);
Form1->Memo1->Lines->Add("Attempting Clear");
ret=csp2ClearData();
sprintf(stmp,"Clear Response %d",ret);
Form1->Memo1->Lines->Add(stmp);
csp2PowerDown();
}
return(0);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cbPortIDChange(TObject *Sender)
{
String s;
Port=cbPortID->ItemIndex;
s=cbPortID->Items->Strings[cbPortID->ItemIndex] ;
Memo1->Lines->Add(s);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnExitClick(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnOpenClick(TObject *Sender)
{
ret=csp2Init(Port);
if (ret==STATUS_OK) {
ComStarted=true;
Memo1->Lines->Add(cbPortID->Items->Strings[Port]+" Opened");
sBar1->Panels->Items[2]->Text=cbPortID->Items->Strings[Port]+" Open";
}
else {
ComStarted=false;
Memo1->Lines->Add("Attempt to open "+cbPortID->Items->Strings[Port]+" Failed");
sBar1->Panels->Items[2]->Text="No Open Port";
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char s1[20];
char s2[40];
long ret;
Memo1->Lines->Clear();
cbPortID->ItemIndex=0;
strcpy(s1,"XXX");
ret=csp2GetDllVersion(s1, sizeof(s1));
if (ret>=0){
sprintf(s2,"DLL Ver: %s",s1);
sBar1->Panels->Items[0]->Text=s2;
}
sBar1->Panels->Items[2]->Text="No Open Port";
sBar1->Panels->Items[3]->Text="Manual CS1504 Read Mode";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnUploadClick(TObject *Sender)
{
unsigned char barcode[100],t1[40];
unsigned char t2[400],timeStamp[6],codetype,t3[30],t4[40];
int n,l,l1,i;
if (!ComStarted) {
Memo1->Lines->Add("Cannot Upload - No Open Port");
return;
}
Memo1->Lines->Add("Attempting UpLoad");
ret=csp2ReadData();
sprintf(stmp,"Upload Response %d",ret);
Memo1->Lines->Add(stmp);
if (ret>=0) {
l=ret;
ret=csp2GetDeviceId(t3, 9);
strcpy(t2,"Device ID = ");
if (ret>0) {
for (i=0;i<ret;i++) {
sprintf(t4,"%2X ",t3[i]);
strcat(t2,t4);
}
}
else strcat(t2,"Error!");
Memo1->Lines->Add((char *)t2);
ret=csp2GetProtocol();
sprintf(t2,"Protocol = %2X",(unsigned char) ret);
Memo1->Lines->Add((char *)t2);
ret=csp2GetSystemStatus();
sprintf(t2,"System Status = %2X",(unsigned char) ret);
Memo1->Lines->Add((char *)t2);
ret=csp2GetSwVersion(t3, 9);
strcpy(t2,"SW Version = ");
if (ret>0) {
strncat(t2,t3,9);
}
else strcat(t2,"Error!");
Memo1->Lines->Add((char *)t2);
for (n=0;n<l;n++){
ret=csp2GetPacket(barcode,n,sizeof(barcode));
if (ret>5) { // Assuming Ascii mode with timestamp
codetype=barcode[1];
if (codetype>15) codetype=15;
l1=ret-4;
for (i=0;i<4;i++) timeStamp[i]=barcode[l1++];
l1=2;
for (i=0;i<(ret-6);i++) t1[i]=barcode[l1++];
t1[i]=0;
csp2TimeStamp2Str(timeStamp, t3, 29);
csp2GetCodeType(codetype,t4,39);
sprintf(t2,"Type %s, %s, TimeStamp %s",t4,t1,t3);
Memo1->Lines->Add((char *)t2);
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnClearClick(TObject *Sender)
{
if (!ComStarted) {
Memo1->Lines->Add("Cannot Clear - No Open Port");
return;
}
Memo1->Lines->Add("Attempting Clear Cmd");
ret=csp2ClearData();
sprintf(stmp,"Clear Response %d",ret);
Memo1->Lines->Add(stmp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
long ret;
if (ComStarted) {
ret = csp2GetCTS();
if (ret<0) {
sBar1->Panels->Items[1]->Text="CTS: -";
return;
}
if (ret==0)sBar1->Panels->Items[1]->Text="CTS: Clear";
else sBar1->Panels->Items[1]->Text="CTS: Set";
}
else sBar1->Panels->Items[1]->Text="CTS: -";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnGetTimeClick(TObject *Sender)
{
unsigned char buf[10], AMPM[4];
long rc;
if (!ComStarted) {
Memo1->Lines->Add("Cannot Get Data - No Open Port");
return;
}
ret=csp2GetTime(buf);
csp2PowerDown();
strcpy(AMPM,"AM");
if (buf[2]>12){
buf[2]-=12;
AMPM[0]='P';
}
if (buf[2]==0) buf[2]=12;
sprintf(stmp,"Get Time Response %d:%02d:%02d %s %d/%0d/%02d",
buf[2],buf[1],buf[0],AMPM,buf[4],buf[3],buf[5]);
Memo1->Lines->Add(stmp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnSetTimeClick(TObject *Sender)
{
unsigned char buf[10];
AnsiString s;
if (!ComStarted) {
Memo1->Lines->Add("Error - No Open Port");
return;
}
if (dlgTime->ShowModal() != mrOk) {
MessageBeep(0);
return;
}
s=dlgTime->pckTime->Time.FormatString("ss nn hh");
buf[0]= StrToInt(s.SubString(1,2)); // seconds
buf[1]= StrToInt(s.SubString(4,2)); // minutes
buf[2]= StrToInt(s.SubString(7,2)); // hours
s=dlgTime->Calendar->Date.FormatString("dd mm yy");
buf[3]= StrToInt(s.SubString(1,2)); // day
buf[4]= StrToInt(s.SubString(4,2)); // month
buf[5]= StrToInt(s.SubString(7,2)); // year
ret=csp2SetTime(buf);
sprintf(stmp,"Set Time Response %d",ret);
Memo1->Lines->Add(stmp);
csp2PowerDown();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnAutoClick(TObject *Sender)
{
AnsiString s;
long ret;
if (!ComStarted) {
Memo1->Lines->Add("Error - No Open Port");
return;
}
if (AutoMode) {
ret=csp2StopPolling();
sprintf(stmp,"Stop Polling Response %d",ret);
Memo1->Lines->Add(stmp);
sBar1->Panels->Items[3]->Text="Manual CS1504 Read Mode";
btnAuto->Caption="Auto Read";
}
else {
ret=csp2StartPolling(&csp2PollCallBack);
sprintf(stmp,"Start Polling Response %d",ret);
Memo1->Lines->Add(stmp);
sBar1->Panels->Items[3]->Text="Automatic CS1504 Read Mode";
btnAuto->Caption="Man. Read";
csp2WakeUp();
}
AutoMode=!AutoMode;
}
//---------------------------------------------------------------------------
Kod: Tümünü seç
/*******************************************************************************
*
* Filename: K:\keyfob\tony\winfob\Csp2.h
*
* Copyright(c) Symbol Technologies Inc., 2001
*
* Description: This file provides the user API interface
* function prototypes for Symbol's CS1504 Consumer Scanning
* Products as Dynamic Link Library. When
* compiled into a DLL, the user can access
* all of the functions available for the
* Symbol CS1504.
*
* Author: Tony Russo
*
* Creation Date: 4/04/2001
*
* Derived From: New File
*
* Edit History:
* $Log: U:/keyfob/archives/winfob/examples/borlandc/CSP2.H_V $
*
* Rev 1.0 Jan 29 2002 14:02:52 pangr
* Initial revision.
*
* Rev 1.0 05 Apr 2001 09:24:16 RUSSOA
* Initial revision.
*
*
* Added Polling headers and helper functions 4/6/01 CWB
*******************************************************************************/
/*******************************************************************************
* Include Files
*******************************************************************************/
/*******************************************************************************
* Defines
*******************************************************************************/
#ifdef DLL_IMPORT_EXPORT
#undef DLL_IMPORT_EXPORT
#endif
#ifdef DLL_SOURCE_CODE
#define DLL_IMPORT_EXPORT __declspec(dllexport) __stdcall
#else
#define DLL_IMPORT_EXPORT __declspec(dllimport) __stdcall
#endif
#ifdef __cplusplus
#define NoMangle extern "C"
#else
#define NoMangle
#endif
// Returned status values...
#define STATUS_OK ((long) 0)
#define COMMUNICATIONS_ERROR ((long)-1)
#define BAD_PARAM ((long)-2)
#define SETUP_ERROR ((long)-3)
#define INVALID_COMMAND_NUMBER ((long)-4)
#define COMMAND_LRC_ERROR ((long)-7)
#define RECEIVED_CHARACTER_ERROR ((long)-8)
#define GENERAL_ERROR ((long)-9)
#define FILE_NOT_FOUND ((long) 2)
#define ACCESS_DENIED ((long) 5)
// Parameter values...
#define PARAM_OFF ((long) 0)
#define PARAM_ON ((long) 1)
#define DETERMINE_SIZE ((long) 0)
/*******************************************************************
* Communications setup section... *
*******************************************************************/
#ifndef COM1
#define COM1 ((long) 0)
#define COM2 ((long) 1)
#define COM3 ((long) 2)
#define COM4 ((long) 3)
#define COM5 ((long) 4)
#define COM6 ((long) 5)
#define COM7 ((long) 6)
#define COM8 ((long) 7)
#define COM9 ((long) 8)
#define COM10 ((long) 9)
#define COM11 ((long)10)
#define COM12 ((long)11)
#define COM13 ((long)12)
#define COM14 ((long)13)
#define COM15 ((long)14)
#define COM16 ((long)15)
#endif
/*******************************************************************************
* Public Variables
*******************************************************************************/
/*******************************************************************************
* Local Variables
*******************************************************************************/
/*******************************************************************************
* Public Function Prototypes
*******************************************************************************/
// Communications
NoMangle long DLL_IMPORT_EXPORT csp2Init(long nComPort);
NoMangle long DLL_IMPORT_EXPORT csp2Restore(void);
NoMangle long DLL_IMPORT_EXPORT csp2WakeUp(void);
NoMangle long DLL_IMPORT_EXPORT csp2DataAvailable(void);
// Basic Functions
NoMangle long DLL_IMPORT_EXPORT csp2ReadData(void);
NoMangle long DLL_IMPORT_EXPORT csp2ClearData(void);
NoMangle long DLL_IMPORT_EXPORT csp2PowerDown(void);
NoMangle long DLL_IMPORT_EXPORT csp2GetTime(unsigned char aTimeBuf[]);
NoMangle long DLL_IMPORT_EXPORT csp2SetTime(unsigned char aTimeBuf[]);
NoMangle long DLL_IMPORT_EXPORT csp2SetDefaults(void);
// CSP Data Get
NoMangle long DLL_IMPORT_EXPORT csp2GetPacket(char szBarData[], long nBarcodeNumber, long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2GetDeviceId(char szDeviceId[8], long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2GetProtocol(void);
NoMangle long DLL_IMPORT_EXPORT csp2GetSystemStatus(void);
NoMangle long DLL_IMPORT_EXPORT csp2GetSwVersion(char szSwVersion[9], long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2GetASCIIMode(void);
NoMangle long DLL_IMPORT_EXPORT csp2GetRTCMode(void);
// DLL Configuration
NoMangle long DLL_IMPORT_EXPORT csp2SetRetryCount(long nRetryCount);
NoMangle long DLL_IMPORT_EXPORT csp2GetRetryCount(void);
// Miscellaneous
NoMangle long DLL_IMPORT_EXPORT csp2GetDllVersion(char szDllVersion[], long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2TimeStamp2Str(unsigned char *Stamp, char *value, long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2GetCodeType(unsigned long CodeID, char *CodeType, long nMaxLength);
// Advanced functions
NoMangle long DLL_IMPORT_EXPORT csp2ReadRawData(char aBuffer[], long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2SetParam(long nParam, char szString[], long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2GetParam(long nParam, char szString[], long nMaxLength);
NoMangle long DLL_IMPORT_EXPORT csp2Interrogate(void);
NoMangle long DLL_IMPORT_EXPORT csp2GetCTS(void);
NoMangle long DLL_IMPORT_EXPORT csp2SetDTR(long nOnOff);
NoMangle long DLL_IMPORT_EXPORT csp2SetDebugMode(long nOnOff);
NoMangle long DLL_IMPORT_EXPORT csp2StartPolling(FARPROC csp2CallBack);
NoMangle long DLL_IMPORT_EXPORT csp2StopPolling(void);
/*******************************************************************************
* Local Functions Prototypes
*******************************************************************************/
/*******************************************************************
* End of file *
*******************************************************************/