?? smsdll.pas
字號:
unit SMSDLL;
{**************************************************************************}
{ }
{ This C DLL header file first (automatic) conversion generated by: }
{ HeadConv 4.0 (c) 2000 by Bob Swart (aka Dr.Bob - www.drbob42.com) }
{ Final Delphi-Jedi (Darth) command-line units edition }
{ }
{ Generated Date: 2004-2-1 }
{ Generated Time: 19:54:31 }
{ }
{**************************************************************************}
interface
uses
{$IFDEF WIN32}
Windows;
{$ELSE}
Wintypes, WinProcs;
{$ENDIF}
{=> d:\vc_exec\dll\smsdll\SMSDLL.H <=}
{$IFNDEF _smsdll_h_}
{$DEFINE _smsdll_h_}
{$INCLUDE <windows.h>}
{/// 用戶信息編碼方式 }
const
GSM_7BIT = 0;
const
GSM_8BIT = 4;
const
GSM_UCS2 = 8;
{/// 串口設備句柄 }
{/// 短消息參數結構,編碼/解碼共用 }
{/// 其中,字符串以0結尾 }
type
SM_PARAM = record
SCA: Array[0..16-1] of Char;
TPA: Array[0..16-1] of Char;
TP_PID: Char;
TP_DCS: Char;
TP_SCTS: Array[0..16-1] of Char;
TP_UD: Array[0..161-1] of Char;
index: Char;
end {SM_PARAM};
{/// 正常順序的字符串轉換為兩兩顛倒的字符串,若長度為奇數,補'F'湊成偶數 }
{/// 如:"8613851872468" --> "683158812764F8" }
{/// pSrc: 源字符串指針 }
{/// pDst: 目標字符串指針 }
{/// nSrcLength: 源字符串長度 }
{/// 返回: 目標字符串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMINVERTNUMBERS( CHAR;
pDst: PChar;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 兩兩顛倒的字符串轉換為正常順序的字符串 }
{/// 如:"683158812764F8" --> "8613851872468" }
{/// pSrc: 源字符串指針 }
{/// pDst: 目標字符串指針 }
{/// nSrcLength: 源字符串長度 }
{/// 返回: 目標字符串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMSERIALIZENUMBERS( CHAR;
pDst: PChar;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// PDU編碼,用于編制、發送短消息 }
{/// pSrc: 源PDU參數指針 }
{/// pDst: 目標PDU串指針 }
{/// 返回: 目標PDU串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMENCODEPDU( SM_PARAM;
pDst: PChar): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// PDU解碼,用于接收、閱讀短消息 }
{/// pSrc: 源PDU串指針 }
{/// pDst: 目標PDU參數指針 }
{/// 返回: 用戶信息串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMDECODEPDU( CHAR;
var pDst: SM_PARAM): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 7-bit編碼 }
{/// pSrc: 源字符串指針 }
{/// pDst: 目標編碼串指針 }
{/// nSrcLength: 源字符串長度 }
{/// 返回: 目標編碼串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMENCODE7BIT( CHAR;
var pDst: Byte;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 7-bit解碼 }
{/// pSrc: 源編碼串指針 }
{/// pDst: 目標字符串指針 }
{/// nSrcLength: 源編碼串長度 }
{/// 返回: 目標字符串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMDECODE7BIT( UNSIGNED CHAR;
pDst: PChar;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// UCS2編碼 }
{/// pSrc: 源字符串指針 }
{/// pDst: 目標編碼串指針 }
{/// nSrcLength: 源字符串長度 }
{/// 返回: 目標編碼串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMENCODEUCS2( CHAR;
var pDst: Byte;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// UCS2解碼 }
{/// pSrc: 源編碼串指針 }
{/// pDst: 目標字符串指針 }
{/// nSrcLength: 源編碼串長度 }
{/// 返回: 目標字符串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMDECODEUCS2( UNSIGNED CHAR;
pDst: PChar;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 可打印字符串轉換為字節數據 }
{/// 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} }
{/// pSrc: 源字符串指針 }
{/// pDst: 目標數據指針 }
{/// nSrcLength: 源字符串長度 }
{/// 返回: 目標數據長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMSTRING2BYTES( CHAR;
var pDst: Byte;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 字節數據轉換為可打印字符串 }
{/// 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01" }
{/// pSrc: 源數據指針 }
{/// pDst: 目標字符串指針 }
{/// nSrcLength: 源數據長度 }
{/// 返回: 目標字符串長度 }
var
_declspec: function(const pSrc: PDLLEXPORT) INT _CDECL GSMBYTES2STRING( UNSIGNED CHAR;
pDst: PChar;
nSrcLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 發送短消息 }
{/// pSrc: 源PDU參數指針 }
var
_declspec: function(const pSrc: PDLLEXPORT) BOOL _CDECL GSMSENDMESSAGE( SM_PARAM): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 讀取短消息 }
{/// 用+CMGL代替+CMGR,可一次性讀出全部短消息 }
{/// pMsg: 短消息緩沖區,必須足夠大 }
{/// 返回: 短消息條數 }
var
_declspec: function(var pMsg: DLLEXPORT) INT _CDECL GSMREADMESSAGE(SM_PARAM): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 刪除短消息 }
{/// index: 短消息序號,從1開始 }
var
_declspec: function(const index: DLLEXPORT) BOOL _CDECL GSMDELETEMESSAGE( INT): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 打開串口 }
{/// pPort: 串口名稱或設備路徑,可用"COM1"或"\\.\COM1"兩種方式,建議用后者 }
{/// nBaudRate: 波特率 }
{/// nParity: 奇偶校驗 }
{/// nByteSize: 數據字節寬度 }
{/// nStopBits: 停止位 }
var
_declspec: function(const pPort: PDLLEXPORT) BOOL _CDECL OPENCOMM( CHAR;
nBaudRate: Integer;
nParity: Integer;
nByteSize: Integer;
nStopBits: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 關閉串口 }
var
_declspec: function(CloseComm(: DLLEXPORT) BOOL _CDECL): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 寫串口 }
{/// pData: 待寫的數據緩沖區指針 }
{/// nLength: 待寫的數據長度 }
var
_declspec: function(var pData: DLLEXPORT) VOID _CDECL WRITECOMM(VOID;
nLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{/// 讀串口 }
{/// pData: 待讀的數據緩沖區指針 }
{/// nLength: 待讀的最大數據長度 }
{/// 返回: 實際讀入的數據長度 }
var
_declspec: function(var pData: DLLEXPORT) INT _CDECL READCOMM(VOID;
nLength: Integer): "C" cdecl {$IFDEF WIN32} stdcall {$ENDIF};
{$ENDIF}
var
DLLLoaded: Boolean { is DLL (dynamically) loaded already? }
{$IFDEF WIN32} = False; {$ENDIF}
implementation
var
SaveExit: pointer;
DLLHandle: THandle;
{$IFNDEF MSDOS}
ErrorMode: Integer;
{$ENDIF}
procedure NewExit; far;
begin
ExitProc := SaveExit;
FreeLibrary(DLLHandle)
end {NewExit};
procedure LoadDLL;
begin
if DLLLoaded then Exit;
{$IFNDEF MSDOS}
ErrorMode := SetErrorMode($8000{SEM_NoOpenFileErrorBox});
{$ENDIF}
DLLHandle := LoadLibrary('SMSDLL.DLL');
if DLLHandle >= 32 then
begin
DLLLoaded := True;
SaveExit := ExitProc;
ExitProc := @NewExit;
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
@_declspec := GetProcAddress(DLLHandle,'_declspec');
{$IFDEF WIN32}
Assert(@_declspec <> nil);
{$ENDIF}
end
else
begin
DLLLoaded := False;
{ Error: SMSDLL.DLL could not be loaded !! }
end;
{$IFNDEF MSDOS}
SetErrorMode(ErrorMode)
{$ENDIF}
end {LoadDLL};
begin
LoadDLL;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -