📄 gammu.pas
字号:
Number : char; //how many sms we have in collection now
SMS : array[1..MAX_MULTI_SMS] of GSM_SMSMessage;
end;
PGSM_MultiSMSMessage = ^GSM_MultiSMSMessage;
GSM_SMSMemoryStatus = record
SIMUnRead : integer; //Number of unread messages on SIM.
SIMUsed : integer; //Number of all saved messages (including unread) on SIM.
SIMSize : integer; //Number of all possible messages on SIM.
PhoneUnRead : integer;
PhoneUsed : integer;
PhoneSize : integer;
TemplatesUsed : integer;
end;
PGSM_SMSMemoryStatus = ^GSM_SMSMemoryStatus;
GSM_SecurityCodeType = (
SEC_UNKNOWN,
SEC_SecurityCode, // Security code.
SEC_Pin, // PIN.
SEC_Pin2, // PIN 2.
SEC_Puk, // PUK.
SEC_Puk2, // PUK 2.
SEC_None); // Code not needed.
GSM_SecurityCode = record
Code : array[1..16] of char; //code (without unicode !)
CodeType : GSM_SecurityCodeType; //type of code
end;
PGSM_SecurityCode = ^GSM_SecurityCode;
GSM_Backup_Info = record
UseUnicode : ByteBool;
IMEI : ByteBool;
Model : ByteBool;
DateTime : ByteBool;
ToDo : ByteBool;
PhonePhonebook : ByteBool;
SIMPhonebook : ByteBool;
Calendar : ByteBool;
CallerLogos : ByteBool;
SMSC : ByteBool;
WAPBookmark : ByteBool;
Profiles : ByteBool;
WAPSettings : ByteBool;
MMSSettings : ByteBool;
Ringtone : ByteBool;
StartupLogo : ByteBool;
OperatorLogo : ByteBool;
FMStation : ByteBool;
GPRSPoint : ByteBool;
Note : ByteBool;
end;
PGSM_Backup_Info = ^GSM_Backup_Info;
type
//callback, which is called, when phone is connected or disconnected
PhoneCallBackProc = procedure(x:integer;ID:integer;connected:ByteBool);stdcall;
PPhoneCallBackProc = ^PhoneCallBackProc;
//this definition is used, when call back is defined under Class
PhoneCallBackProcClass = procedure(ID:integer;connected:ByteBool);stdcall;
PPhoneCallBackProcClass = ^PhoneCallBackProcClass;
//called, when phone needs PIN, PUK, etc.
SecurityCallBackProc = procedure(x:integer;ID:integer;SecurityState:GSM_SecurityCodeType);stdcall;
PSecurityCallBackProc = ^SecurityCallBackProc;
//this definition is used, when call back is defined under Class
SecurityCallBackProcClass = procedure(ID:integer;SecurityState:GSM_SecurityCodeType);stdcall;
PSecurityCallBackProcClass = ^SecurityCallBackProcClass;
//called, when there are ANY SMS on sim
SMSCallBackProc = procedure(x:integer;ID:integer);stdcall;
PSMSCallBackProc = ^SMSCallBackProc;
//this definition is used, when call back is defined under Class
SMSCallBackProcClass = procedure(ID:integer);stdcall;
PSMSCallBackProcClass = ^SMSCallBackProcClass;
function GSM_StartConnection (Phone : Pinteger; Device: PChar;Connection: PChar; Model : PChar; LogFile: PChar; LogFileType: PChar; thread:ByteBool; CallBack1 : PPhoneCallBackProc; CallBack2: PSecurityCallBackProc; CallBack3: PSMSCallBackProc): GSM_Error; stdcall; external 'gammu.dll' name 'mystartconnection';
function GSM_StartConnectionClass (Phone : Pinteger; Device: PChar;Connection: PChar; Model : PChar; LogFile: PChar; LogFileType: PChar; thread:ByteBool; CallBack1 : PPhoneCallBackProcClass; CallBack2: PSecurityCallBackProcClass; CallBack3: PSMSCallBackProcClass): GSM_Error; stdcall; external 'gammu.dll' name 'mystartconnection';
function GSM_EndConnection (Phone : integer): GSM_Error; stdcall; external 'gammu.dll' name 'myendconnection';
function GSM_GetNetworkInfo (Phone : integer; NetworkInfo : PGSM_NetworkInfo): GSM_Error; stdcall; external 'gammu.dll' name 'mygetnetworkinfo';
function GSM_GetSMSStatus (Phone : integer; status : PGSM_SMSMemoryStatus): GSM_Error; stdcall; external 'gammu.dll' name 'mygetsmsstatus';
function GSM_GetNextSMSMessage (Phone : integer; SMS : PGSM_MultiSMSMessage;start : ByteBool): GSM_Error; stdcall; external 'gammu.dll' name 'mygetnextsmsmessage';
function GSM_DeleteSMSMessage (Phone : integer; SMS : PGSM_SMSMessage): GSM_Error; stdcall; external 'gammu.dll' name 'mydeletesmsmessage';
function GSM_SendSMSMessage (Phone : integer; SMS : PGSM_SMSMessage;timeout:integer): GSM_Error; stdcall; external 'gammu.dll' name 'mysendsmsmessage';
function GSM_AddSMSMessage (Phone : integer; SMS : PGSM_SMSMessage): GSM_Error; stdcall; external 'gammu.dll' name 'myaddsmsmessage';
function GSM_EnterSecurityCode (Phone : integer; Code : PGSM_SecurityCode): GSM_Error; stdcall ; external 'gammu.dll' name 'myentersecuritycode';
function GSM_GetIMEI (Phone : integer; IMEI:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetimei';
function GSM_GetDCT4SimlockNetwork (Phone : integer; Info:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetdct4simlocknetwork';
function GSM_GetDCT4SecurityCode (Phone : integer; Code:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetdct4securitycode';
function GSM_GetManufacturer (Phone : integer; IMEI:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetmanufacturer';
function GSM_GetModel (Phone : integer; Model:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetmodel';
function GSM_GetModelName (Phone : integer; Model:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetmodelname';
function GSM_GetFirmwareVersion (Phone : integer; Version: PDouble): GSM_Error; stdcall; external 'gammu.dll' name 'mygetfirmwareversion';
function GSM_Reset (Phone : integer; Hard: ByteBool): GSM_Error; stdcall; external 'gammu.dll' name 'myreset';
function GSM_SMSCounter (MessageLength:Integer;MessageBuffer:PAnsiString;UDH:GSM_UDH;Coding:GSM_Coding_Type;SMSNum:PInteger;CharsLeft:PInteger): GSM_Error; stdcall; external 'gammu.dll' name 'mysmscounter';
function GSM_MakeMultiPartSMS (MessageBuffer:PAnsiString;MessageLength:Integer;UDHType:GSM_UDH;Coding:GSM_Coding_Type;MyClass:Integer;ReplaceMessage:ShortInt;SMS:PGSM_MultiSMSMessage): GSM_Error; stdcall; external 'gammu.dll' name 'mymakemultipartsms';
function GSM_GetStructureSize (i: integer): integer; stdcall; external 'gammu.dll' name 'mygetstructuresize';
procedure GSM_GetNetworkName (NetworkCode: PAnsiString; NetworkName: PAnsiString); stdcall; external 'gammu.dll' name 'mygetnetworkname';
procedure GSM_GetGammuVersion (Version: PAnsiString); stdcall; external 'gammu.dll' name 'mygetgammuversion';
function GSM_ReadBackupFile (FileName:PAnsiString; Info:PGSM_Backup_Info): GSM_Error; stdcall; external 'gammu.dll' name 'myreadbackupfile';
function GSM_GetBackupFileCreator (Creator:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetbackupfilecreator';
function GSM_GetBackupFileIMEI (IMEI:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetbackupfileimei';
function GSM_GetBackupFileModel (Model:PAnsiString): GSM_Error; stdcall; external 'gammu.dll' name 'mygetbackupfilemodel';
function GSM_GetBackupFileDateTime (DT:PGSM_DateTime): GSM_Error; stdcall; external 'gammu.dll' name 'mygetbackupdatetime';
function GSM_GetBackupFeaturesForBackup (Phone:integer;FileName:PChar;Features:PGSM_Backup_Info):GSM_Error; stdcall; external 'gammu.dll' name 'mygetbackupfeaturesforbackup';
function GSM_GetBackupFormatFeatures (FileName:PAnsiString;Features:PGSM_Backup_Info):GSM_Error; stdcall; external 'gammu.dll' name 'mygetbackupformatfeatures';
function GSM_StartBackup (Phone: Integer; Info:PGSM_Backup_Info):GSM_Error; stdcall; external 'gammu.dll' name 'mystartbackup';
function GSM_BackupPhonePBK (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupphonepbk';
function GSM_BackupSIMPBK (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupsimpbk';
function GSM_BackupCalendar (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupcalendar';
function GSM_BackupWAPBookmark (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupwapbookmark';
function GSM_BackupWAPSettings (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupwapsettings';
function GSM_BackupMMSSettings (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupmmssettings';
function GSM_BackupGPRSPoint (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupgprspoint';
function GSM_BackupFMRadio (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackupfmradio';
function GSM_BackupToDo (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'mybackuptodo';
function GSM_EndBackup (FileName:PChar; UseUnicode: Boolean):GSM_Error; stdcall; external 'gammu.dll' name 'myendbackup';
function GSM_RestorePhonePBK (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestorephonepbk';
function GSM_RestoreSIMPBK (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestoresimpbk';
function GSM_RestoreCalendar (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestorecalendar';
function GSM_RestoreToDo (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestoretodo';
function GSM_RestoreWAPBookmark (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestorewapbookmark';
function GSM_RestoreWAPSettings (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestorewapsettings';
function GSM_RestoreMMSSettings (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestoremmssettings';
function GSM_RestoreFMRadio (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestorefmradio';
function GSM_RestoreGPRSPoint (Phone: Integer; Percent: PInteger):GSM_Error; stdcall; external 'gammu.dll' name 'myrestoregprspoint';
function GetGammuUnicodeString (Source : AnsiString):string;
type
TGammuGSMDevice = class(TObject)
private
fDeviceID : integer;
fDevice : PChar;
fConnection : PChar;
fUsed : Boolean;
fConnected : Boolean;
fPhoneCallBackPointer : PPhoneCallBackProcClass;
fSecurityCallBackPointer : PSecurityCallBackProcClass;
fSMSCallBackPointer : PSMSCallBackProcClass;
public
function StartConnection(DeviceString:String;ConnectionString:String;PhoneCallBack:PPhoneCallBackProcClass;SecurityCallBack:PSecurityCallBackProcClass;SMSCallBack:PSMSCallBackProcClass;LogFile:String;LogFormat:String):GSM_Error;
function EndConnection:GSM_Error;
constructor Create;
property Device : PChar read fDevice;
property DeviceID : integer read fDeviceID;
property Connection : PChar read fConnection;
property Used : Boolean read fUsed write fUsed;
property Connected : Boolean read fConnected write fConnected;
end;
implementation //here all private variables, stuff, etc.
constructor TGammuGSMDevice.Create;
begin
Connected := False;
Used := False;
inherited;
end;
function TGammuGSMDevice.EndConnection():GSM_Error;
begin
EndConnection:=GSM_EndConnection(fDeviceID);
end;
function TGammuGSMDevice.StartConnection(DeviceString:String;ConnectionString:String;PhoneCallBack:PPhoneCallBackProcClass;SecurityCallBack:PSecurityCallBackProcClass;SMSCallBack:PSMSCallBackProcClass;LogFile:String;LogFormat:String):GSM_Error;
begin
GetMem(fDevice,Length(DeviceString) + 1);
StrCopy(fDevice,PChar(DeviceString));
GetMem(fConnection,50);
StrCopy(fConnection,PChar(ConnectionString));
fPhoneCallBackPointer := PhoneCallBack;
fSecurityCallBackPointer := SecurityCallBack;
fSMSCallBackPointer := SMSCallback;
StartConnection:=GSM_StartConnection(@fDeviceID,fDevice,fConnection,'',PChar(LogFile),PChar(LogFormat),true,@fPhoneCallBackPointer,@fSecurityCallBackPointer,@fSMSCallBackPointer);
end;
function GetGammuUnicodeString(Source:AnsiString):string;
var
i : integer;
Dest : array[1..255] of Word;
begin
i := 1;
while ((Source[i*2-1]<>chr(0)) or (Source[i*2]<>chr(0))) do
begin
Dest[i] := ord(Source[i*2])*256+ord(Source[i*2-1]);
i := i + 1;
end;
Dest[i] := 0;
GetGammuUnicodeString := WideCharLenToString(@Dest,i-1);
end;
begin
if (GSM_GetStructureSize(0) <> sizeof(gsm_smsmessage)) then application.MessageBox('gsm_smsmessage','',0);
if (GSM_GetStructureSize(1) <> sizeof(gsm_smsc)) then application.MessageBox('gsm_smsc','',0);
if (GSM_GetStructureSize(2) <> sizeof(gsm_sms_state)) then application.MessageBox('gsm_sms_state','',0);
if (GSM_GetStructureSize(3) <> sizeof(gsm_UDHHeader)) then application.MessageBox('gsm_udhheader','',0);
if (GSM_GetStructureSize(4) <> sizeof(ByteBool)) then application.MessageBox('bool','',0);
if (GSM_GetStructureSize(5) <> sizeof(gsm_datetime)) then application.MessageBox('gsm_datetime','',0);
if (GSM_GetStructureSize(6) <> sizeof(integer)) then application.MessageBox('int','',0);
if (GSM_GetStructureSize(7) <> sizeof(gsm_networkinfo)) then application.MessageBox('gsm_networinfo','',0);
if (GSM_GetStructureSize(8) <> sizeof(gsm_UDH)) then application.MessageBox('gsm_udhtype','',0);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -