亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dm_gsm.pas

?? boomerang library 5.11 internet ed
?? PAS
字號:
unit dm_GSM;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Connect, CommConnect, GSM, OleServer, Terminal, XSMS;

const
  cm_NetRegistrationChanged = wm_User+100;
  cm_SMSReceived = wm_User+101;
  cm_ModemStatusChanged = wm_User+102;

  NO_LOG_FILE = 'NUL';

type
  TGSMDataModule = class(TDataModule)
    GSM: TGSM;
    Comm1: TComm;
    procedure DataModule1Create(Sender: TObject);
    procedure GSMDataModuleDestroy(Sender: TObject);
    procedure GSMAfterOpen(DataSet: TConnection);
    procedure GSMNetworkRegistration(Sender: TObject; aNewStatus: Integer);
    procedure GSMBeforeOpen(DataSet: TConnection);
    procedure GSMAfterClose(DataSet: TConnection);
    procedure GSMBusyChanged(Sender: TObject; aBusy: Boolean);
    procedure GSMUnsolicitedSMS(Sender: TObject; Idx: Integer; aSMS: TSMS);
    procedure GSMRxChar(Sender: TObject; aChar: Char);
    procedure Comm1RxChar(Sender: TObject; Count: Integer);
  private
    FGSMStr: string;
    RecSMSBuffer: TList;
    FGSMLogFile: string;
    FSMSLogFile: string;
    FSMSProtocol: TSMSProtocolStack;
    function GetActive: Boolean;
    procedure SetActive(aValue: Boolean);
    procedure LogToFile(aFilename, aText: string);
    procedure ReadIniFile;
    procedure WriteIniFile;
    procedure SetGSMLogFile(const Value: string);
    procedure SetSMSLogFile(const Value: string);
    function LogSafe(S: string): string;
  public
    ModemLog, SMSLog: TTerminal;
    property GSMLogFile: string read FGSMLogFile write SetGSMLogFile;
    property SMSLogFile: string read FSMSLogFile write SetSMSLogFile;
    property Active: Boolean read GetActive write SetActive;
    procedure SendSMS(aSMS: TSMSSubmit);
    procedure ModemStatusChanged(aNewStatus: Integer);
    procedure ProcessSMS(aSMS: TSMS);
    procedure LogSMS(aSMS: TSMS);
    procedure LogGSM(aChar: Char);
  end;

var
  GSMDataModule: TGSMDataModule;

implementation
uses
  AuxGsm, LogFrm, AuxStr;

{$R *.DFM}

procedure TGSMDataModule.DataModule1Create(Sender: TObject);
begin
  RecSMSBuffer:= TList.Create;
  FSMSProtocol:= TSMSProtocolStack.Create;

  FGSMStr := '';
  ReadIniFile;
end;

procedure TGSMDataModule.ReadIniFile;
var
  BR: TBaudrate;
  Timeout: Integer;
  PB: ^Byte;
begin
  with GetGSMINI do
  try
    Comm1.DeviceName:= ReadString('Modem', 'DeviceName', Comm1.DeviceName);
    GSM.Equipment:= Str2GMSEquipment(UpperCase(ReadString('Modem', 'Device', GSMEquipmentShortName[GSM.Equipment])));
    GSM.PIN:= ReadString('Modem', 'PIN', GSM.PIN);
    GSM.SCA:= ReadString('Modem', 'SCA', GSM.SCA);
    PB:= @GSM.UnsolicitedIndication;
    PB^:= ReadInteger('Modem','UnsolicitedIndication',PB^);
    GSM.SMSFormat:= ReadInteger('Modem','SMSFormat',0);
    GSM.SetDefaults;

    Timeout := ReadInteger('Modem','RecTimeout',0);
    if Timeout > 0 then
      GSM.RecTimeout := Timeout;

    if Int2Baudrate(ReadInteger('Modem', 'BaudRate', 0), BR) then
      GSM.COMDevice.Baudrate:= BR;

    FGSMLogFile :=
      ReadString('Modem.Files', 'GSMLog', GetProgramPath+'gsm.log');
    FSMSLogFile :=
      ReadString('Modem.Files', 'SMSLog', GetProgramPath+'sms.log');
  finally
    Free;
  end;
end;

procedure TGSMDataModule.WriteIniFile;
begin
  with GetGSMINI do
  try
    WriteString('Modem', 'DeviceName',Comm1.DeviceName);
    WriteInteger('Modem', 'BaudRate',BaudRate2Int(Comm1.BaudRate));
    WriteString('Modem', 'Device', GSMEquipmentShortName[GSM.Equipment]);

    WriteString('Modem', 'PIN', GSM.PIN);
    WriteString('Modem', 'SCA', GSM.SCA);

    WriteInteger('Modem','SMSFormat',GSM.SMSFormat);
    WriteInteger('Modem','UnsolicitedIndication',Byte(GSM.UnsolicitedIndication));

    WriteString('Modem.Files', 'GSMLog', FGSMLogFile);
    WriteString('Modem.Files', 'SMSLog', FSMSLogFile);
  finally
    Free;
  end;
end;

function TGSMDataModule.GetActive;
begin
  Result:= GSM.Active;
end;

procedure TGSMDataModule.SetActive;
begin
  GSM.Active:= aValue;
end;

procedure TGSMDataModule.GSMDataModuleDestroy(Sender: TObject);
begin
  WriteIniFile;
  RecSMSBuffer.Free;
  FSMSProtocol.Free;
end;

procedure TGSMDataModule.ProcessSMS;
var
  S2: string;
  I: Integer;
  NBS: TSMSProtocol;
  Addr: Word;
  SM: TSmartMessage;
  EMS: TEMS;
resourcestring
  sFragment = '*ref:%.2x, #%d/%d/%d, , addr:%.4x';
  sComplete = 'complete';
begin
  LogSMS(aSMS);

  if aSMS is TSMSDeliver then
  begin
    S2:= '';
    fSMSProtocol.CleanSMSProtocols(5{min}/60/24, False);
    if fSMSProtocol.ProcessSMS(aSMS, NBS) then
    begin
      Addr:= 0;
      if NBS is TSMSProtocol2 then
        Addr:= TSMSProtocol2(NBS).DestinationAddress;
      S2:= Format(sFragment, [NBS.Reference, NBS.LastInserted, NBS.InsertedCount, NBS.FragmentCount, Addr]);
      if NBS.Status = smspsOK then
      begin
        S2:= S2+' '+sComplete;
        // here is possible process received data, show bitmap, play melody, save it to file etc.
        if NBS is TSMSProtocol2 then
          begin
            SM:= TSmartMessage.CreateSM(NBS.Data, TSMSProtocol2(NBS).DestinationAddress);
            if SM <> nil then
              try
                S2:= S2 + ' SmartMessage:'+SM.ClassName;
                {if SM is TSMMultipartMessage then
                  S2:= S2+'Multipart message'
                else if SM is TSMRingingTine then
                  S2:= S2+'Ringing tone'  classname  inheritsfrom }
              finally
                SM.Free;
              end
            else if NBS is TUDHProtocol then
              begin
                EMS:= TEMS.Create;
                try
                  try
                    EMS.ReadFrom(TUDHProtocol(NBS));
                    S2:= S2+ ' EMS';
                    for I:= 0 to EMS.Objects.Count-1 do
                    begin
                      if I > 0 then
                        S2:= S2+',';
                      S2:= S2+EMS.Objects[I].ClassName;
                    end;
                    S2:= S2+' "'+EMS.Text+'"';
                  except
                  end;
                finally
                  EMS.Free;
                end;
              end;
          end
        else if NBS is TSiemensOTA then
          begin
            S2:= S2 + Format(' SEO: %s, Name: "%s"', [string(TSiemensOTA(NBS).ObjectType), string(TSiemensOTA(NBS).ObjectName)]);
          end;

        fSMSProtocol.RemoveSMSProtocol(NBS);
        NBS.Free;                                  // delete processed data
      end;
    end;
    if S2 <> '' then
    begin
      if SMSLog <> nil then
        SMSLog.Log(S2);
      S2 := S2+#13#10;
      LogToFile(FSMSLogFile,S2);
    end;
  end;
  
  NotifyForms(cm_SMSReceived, 0, Longint(aSMS));
end;

procedure TGSMDataModule.GSMAfterOpen(DataSet: TConnection);
var
  Sg: TStrings;
  I, J: Integer;
begin
  if GSM.Equipment in [eqM20, eqNokia9110, eqWavecom, eqFasttrack] then Sg:= GSM.GetSMSList(4{all})
                                                                   else Sg:= GSM.GetSMSList(-1);
  try
    for I:= 0 to Sg.Count-1 do
    begin
      J:= StrToInt(Sg.Names[I]);
      if StrToInt(Sg.Values[Sg.Names[I]]) in [0{unreaed}] then
      begin
        if Sg.Objects[I] <> nil then
          ProcessSMS(Sg.Objects[I] as TSMS);
      end;
      GSM.DeleteSMS(J);
    end;
  finally
    Sg.Free;
  end;
  ModemStatusChanged(1 or $80);
end;

procedure TGSMDataModule.GSMNetworkRegistration(Sender: TObject;
  aNewStatus: Integer);
begin
  NotifyForms(cm_NetRegistrationChanged, aNewStatus, 0);
end;

procedure TGSMDataModule.GSMBeforeOpen(DataSet: TConnection);
begin
  WriteIniFile;
  ModemStatusChanged(0);
end;

procedure TGSMDataModule.ModemStatusChanged;
begin
  NotifyForms(cm_ModemStatusChanged, aNewStatus, 0);
end;

procedure TGSMDataModule.GSMAfterClose(DataSet: TConnection);
begin
  ModemStatusChanged(-1);
end;

procedure TGSMDataModule.GSMBusyChanged(Sender: TObject; aBusy: Boolean);
begin
  ModemStatusChanged(Integer(not aBusy));
end;

procedure TGSMDataModule.SendSMS;
begin
  GSM.SendSMS(aSMS);
end;

procedure TGSMDataModule.GSMUnsolicitedSMS(Sender: TObject; Idx: Integer;
  aSMS: TSMS);
var
  Stat: Integer;
begin
  if aSMS = nil then  { PDU mode }
    begin
      try
        aSMS:= GSM.ReadSMS(Idx, Stat);
        if Stat in [0{unread}] then
          ProcessSMS(aSMS);
      finally
        GSM.DeleteSMS(Idx);
      end;
    end
  else
    begin           { text mode }
      ProcessSMS(aSMS);
      if Idx <> -1 then
        GSM.DeleteSMS(Idx);
    end;
end;

procedure TGSMDataModule.LogToFile(aFilename, aText: string);
var
  St: TStream;
  M: Word;
begin                           
  if aFilename <> NO_LOG_FILE then
  begin
    if FileExists(aFilename) then
       M:= fmOpenWrite+fmShareDenyWrite
    else M:= fmCreate;
     St:= TFileStream.Create(aFilename, M);
    try
      St.Position:= St.Size;
      St.WriteBuffer(aText[1], Length(aText));
    finally
      St.Free;
    end;
  end;
end;

procedure TGSMDataModule.LogGSM(aChar: Char);
begin
  FGSMStr := FGSMStr + aChar;
  if aChar = LF then
  begin
    LogToFile(FGSMLogFile,
      Format('%s: %s',[DateTimeToStr(Now),FGSMStr]));
    FGSMStr := '';
  end;
end;

procedure TGSMDataModule.LogSMS;
var
  S2, S3: string;
//  I: Integer;
begin
  S3:= '';
 { if aSMS is TSMS2 then
    if TSMS2(aSMS).DCS and dcsmAplhabet <> dcsAlphabetDefault) then        // 8bit taky hexa
    begin
      S3:= '';
      for I:= 1 to Length(TSMSSubmit(aSMS).UD) do
        S3:= S3+Format('%.2x', [Byte(TSMSSubmit(aSMS).UD[I])]);
      S3:= S3+' / ';
    end; }
  if aSMS is TSMSDeliver then
    begin
      with aSMS as TSMSDeliver do
        S2:= Format('>%s, OA: %s, PID: %.2x, UD: %s%s',
             [DateTimeToStr(SCTS), OA, PID, S3, LogSafe{SMStoISO}(UD)]);
    end
  else if aSMS is TSMSSubmit then
    begin
      with aSMS as TSMSSubmit do
        S2:= Format('<%s, DA: %s, PID: %.2x, UD: %s%s',
             [DateTimeToStr(Now), DA, PID, S3, LogSafe{SMStoISO}(UD)]);  
    end
  else if aSMS is TSMSStatusReport then
    begin
      with aSMS as TSMSStatusReport do
        S2:= Format('!%s, OA: %s, Status: %d, DT: %s', [DateTimeToStr(Now), OA, Status, DateTimeToStr(DT)]);
    end
  else
    Exit;
  if SMSLog <> nil then
    SMSLog.Log(S2);
  S2 := S2+#13#10;
  LogToFile(FSMSLogFile,S2);
end;

procedure TGSMDataModule.GSMRxChar(Sender: TObject; aChar: Char);
begin
  if ModemLog <> nil then
    ModemLog.LogTerm(aChar);
  LogGSM(aChar);
end;

procedure TGSMDataModule.Comm1RxChar(Sender: TObject; Count: Integer);
var
  I: Integer;
  S: string;
begin
  S:= (Sender as TComm).Retrieve(Count);
  for I:= 1 to Length(S) do
    GSMRxChar(nil, S[I]);
end;

procedure TGSMDataModule.SetGSMLogFile(const Value: string);
begin
  FGSMLogFile := Value;
end;

procedure TGSMDataModule.SetSMSLogFile(const Value: string);
begin
  FSMSLogFile := Value;
end;

function TGSMDataModule.LogSafe(S: string): string;
var
  I: Integer;
begin
  Result:= '';
  for I:= 1 to Length(S) do
    if S[I] = #13 then
      Result:= Result+'<CR>'
    else if S[I] = #10 then
      Result:= Result+'<LF>'
    else if S[I] in [#0..#31] then
      begin
        Result:= Bin2Hex(S);
        Break;
      end
    else
      Result:= Result+S[I];
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃久久久久久久| 亚洲一区二区偷拍精品| 国产一区在线视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 717成人午夜免费福利电影| 亚洲国产人成综合网站| 日韩免费视频一区二区| 国精品**一区二区三区在线蜜桃| 国产午夜精品美女毛片视频| 99久久国产免费看| 亚洲成人先锋电影| 精品日韩99亚洲| 成人v精品蜜桃久久一区| 亚洲欧美日韩国产综合| 欧美一区二区性放荡片| 国产成人在线视频网址| 亚洲精品免费一二三区| 91精品国产综合久久香蕉的特点 | 依依成人精品视频| 3d动漫精品啪啪| 国产成人精品亚洲午夜麻豆| 最新欧美精品一区二区三区| 欧美日韩你懂得| 国产在线播放一区三区四| 国产精品欧美精品| 777xxx欧美| 成人一级片网址| 日韩高清一级片| 国产欧美精品一区| 欧美日韩国产经典色站一区二区三区 | 自拍偷自拍亚洲精品播放| 欧美精三区欧美精三区| 粉嫩av一区二区三区粉嫩| 一区二区三区视频在线观看| 26uuu国产电影一区二区| 欧亚洲嫩模精品一区三区| 麻豆高清免费国产一区| 亚洲黄色尤物视频| 久久精品欧美日韩精品| 欧美精品三级在线观看| av不卡免费电影| 日韩黄色片在线观看| 综合av第一页| 久久精品夜色噜噜亚洲a∨| 欧美日韩你懂得| 91小视频在线免费看| 国产成人自拍网| 九九**精品视频免费播放| 亚洲国产精品麻豆| 成人免费在线播放视频| 久久久久久免费网| 日韩一区二区影院| 欧美日韩电影一区| 在线观看日韩av先锋影音电影院| 国产69精品久久久久毛片| 久久精品国产成人一区二区三区 | 一区在线观看免费| 2021中文字幕一区亚洲| 制服丝袜在线91| 欧美日韩一区国产| 欧美亚一区二区| 99国产精品久久| 不卡视频在线看| 99久久夜色精品国产网站| 国产高清在线精品| 国产精品一二三区| 国产中文字幕精品| 极品少妇一区二区三区精品视频| 奇米色一区二区三区四区| 亚洲一区二区3| 亚洲电影第三页| 亚洲成年人网站在线观看| 亚洲精品大片www| 一区二区三区在线观看国产| 亚洲免费av在线| 一级做a爱片久久| 亚洲伦理在线精品| 亚洲一卡二卡三卡四卡| 午夜日韩在线观看| 麻豆视频一区二区| 国产原创一区二区三区| 国产成人鲁色资源国产91色综| 国产成人日日夜夜| 成人不卡免费av| 在线免费不卡视频| 欧美日韩国产首页| 日韩精品一区二区三区在线 | 日韩三级视频在线观看| 日韩精品中午字幕| 久久久国产精品午夜一区ai换脸| 日本一区二区三区高清不卡| 亚洲精品欧美综合四区| 亚洲一级在线观看| 国产最新精品精品你懂的| 成人三级伦理片| 欧美性三三影院| 欧美sm极限捆绑bd| 中文字幕在线一区二区三区| 亚洲精品日韩综合观看成人91| 亚洲成人自拍网| 国产一区 二区 三区一级| 成人av网站在线观看| 在线观看av一区| 日韩欧美二区三区| 国产精品久久一卡二卡| 亚洲一区二区三区精品在线| 久久国产麻豆精品| 99精品视频中文字幕| 欧美日韩一级大片网址| 久久综合九色欧美综合狠狠| 国产精品国产三级国产普通话99| 亚洲图片一区二区| 国产黄色91视频| 在线不卡欧美精品一区二区三区| 久久综合999| 亚洲一卡二卡三卡四卡五卡| 久久精品国产第一区二区三区| 99综合影院在线| 欧美成人一区二区三区片免费| 久久久精品tv| 亚洲成人av一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 91黄色免费看| 国产亚洲精品福利| 日韩中文字幕亚洲一区二区va在线| 国产精品自拍av| 欧美日韩一区高清| 日韩一区欧美一区| 精品在线亚洲视频| 欧美日韩国产高清一区二区 | 欧美一级在线观看| 亚洲女与黑人做爰| 国产精品亚洲综合一区在线观看| 欧美色中文字幕| 国产精品久99| 精品中文字幕一区二区小辣椒| 91国偷自产一区二区三区观看| 久久九九久久九九| 日韩在线卡一卡二| 日本精品一区二区三区高清 | 久久久久一区二区三区四区| 亚洲一区二区三区在线看| 国产.精品.日韩.另类.中文.在线.播放| 欧美乱熟臀69xxxxxx| 亚洲欧美偷拍另类a∨色屁股| 激情综合一区二区三区| 在线成人av网站| 婷婷夜色潮精品综合在线| 97久久精品人人做人人爽50路| 久久色视频免费观看| 蜜桃视频一区二区| 欧美日韩在线一区二区| 亚洲乱码国产乱码精品精98午夜| 成人污污视频在线观看| 久久午夜国产精品| 激情丁香综合五月| 日韩精品资源二区在线| 日本成人在线电影网| 在线成人小视频| 石原莉奈在线亚洲二区| 欧美日韩国产首页在线观看| 亚洲国产精品一区二区久久恐怖片| www.av亚洲| 国产精品黄色在线观看| 成人a级免费电影| 《视频一区视频二区| www.欧美.com| 亚洲免费观看高清完整版在线观看 | 日韩三级免费观看| 麻豆精品视频在线| 日韩精品一区二区三区视频在线观看| 日本欧美一区二区三区乱码| 欧美老人xxxx18| 天天影视涩香欲综合网| 日韩一区二区三区免费观看| 免费视频一区二区| 欧美xxx久久| 国产精品原创巨作av| 国产亚洲精品bt天堂精选| 成人黄色av电影| 亚洲一区二区美女| 这里只有精品视频在线观看| 日本va欧美va精品| 久久―日本道色综合久久| 国产乱码精品一区二区三区五月婷| 久久精品夜色噜噜亚洲a∨| 成人av先锋影音| 亚洲影视在线观看| 日韩亚洲欧美成人一区| 国产福利一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 99精品视频免费在线观看| 亚洲人成7777| 欧美高清一级片在线| 久久不见久久见免费视频1| 国产欧美日韩三级| 欧美三级在线看| 国产经典欧美精品| 亚洲永久免费视频| 久久免费的精品国产v∧|