⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsmctrfr.pas

📁 boomerang library 5.11 internet ed
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit GSMCtrFr;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, GSM, ExtCtrls, Gauges, dm_GSM, Buttons, ComCtrls,
  ToolWin, ImgList, Terminal, ActnList, XSMS, ExtDlgs, Grids, MPlayer, Connect,
  Wap, Mask, CommConnect;

const
  glRed = 1;
  glGreen = 3;
  glYellow = 5;
  glNone = 0;

type
  TGSMCentralForm = class(TForm)
    ImageList: TImageList;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Panel2: TPanel;
    GroupBox2: TGroupBox;
    IndNetRegStatus: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    Panel1: TPanel;
    Panel6: TPanel;
    StatusBar: TStatusBar;
    Semafor: TSpeedButton;
    SpeedButton1: TSpeedButton;
    TabSheet5: TTabSheet;
    Panel7: TPanel;
    TabSheet6: TTabSheet;
    TabSheet7: TTabSheet;
    Panel8: TPanel;
    Panel9: TPanel;
    ModemLog: TTerminal;
    SMSLog: TTerminal;
    Label1: TLabel;
    DA: TEdit;
    Label2: TLabel;
    Message: TEdit;
    BitBtn1: TBitBtn;
    AutoShowModemLog: TCheckBox;
    ConfigureGroupbox: TGroupBox;
    SCAEdit: TEdit;
    PinEdit: TEdit;
    PINLabel: TLabel;
    SCALabel: TLabel;
    ModemComboBox: TComboBox;
    ModemLabel: TLabel;
    SMSLOGCheckBox: TCheckBox;
    GSMLOGCheckBox: TCheckBox;
    SMSLogButton: TButton;
    GSMLogButton: TButton;
    SMSLogSaveDialog: TSaveDialog;
    GSMLogSaveDialog: TSaveDialog;
    Label3: TLabel;
    SMSFormat: TComboBox;
    GroupBox1: TGroupBox;
    CatchSMSMT: TCheckBox;
    CatchSMSCB: TCheckBox;
    CatchSMSDS: TCheckBox;
    OnlyIndication: TCheckBox;
    ManufacturerId: TMemo;
    DeliveryNotification: TCheckBox;
    DCS: TComboBox;
    SMSKind: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    SMSKind2: TComboBox;
    PictureGB: TGroupBox;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    PictureWidth: TEdit;
    PictureHeight: TEdit;
    PictureNumAnimations: TEdit;
    ScrollBox1: TScrollBox;
    Picture: TPaintBox;
    Label9: TLabel;
    PictureOperator: TComboBox;
    vCardGB: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    vCardName: TEdit;
    vCardPhone: TEdit;
    Blink: TButton;
    Button2: TButton;
    Button3: TButton;
    SavePictureDialog: TSavePictureDialog;
    OpenPictureDialog: TOpenPictureDialog;
    MelodyGB: TGroupBox;
    Label12: TLabel;
    MelodyName: TEdit;
    MelodyKeyboard: TPaintBox;
    Button1: TButton;
    Button4: TButton;
    MelodyGrid: TStringGrid;
    MelodyNote: TComboBox;
    MelodyDuration: TComboBox;
    MelodyDuration2: TComboBox;
    MelodyScale: TComboBox;
    MelodyStyle: TComboBox;
    MelodyTempo: TComboBox;
    MelodyVolume: TComboBox;
    MelodyInsert: TCheckBox;
    Button5: TButton;
    Button6: TButton;
    SaveMelodyDialog: TSaveDialog;
    OpenMelodyDialog: TOpenDialog;
    SEOGB: TGroupBox;
    SEOFileName: TEdit;
    Label13: TLabel;
    Button7: TButton;
    Label14: TLabel;
    SEOName: TEdit;
    SEOPicture: TImage;
    SEOMidi: TMediaPlayer;
    OpenSEOMidiDialog: TOpenDialog;
    WapPushGB: TGroupBox;
    WPSIPanel: TPanel;
    Label20: TLabel;
    Label21: TLabel;
    Label17: TLabel;
    siHref: TEdit;
    siAction: TComboBox;
    siId: TEdit;
    WPSLPanel: TPanel;
    Label22: TLabel;
    Label23: TLabel;
    slHref: TEdit;
    slAction: TComboBox;
    WPCOPanel: TPanel;
    Label18: TLabel;
    Label19: TLabel;
    coObjects: TMemo;
    coServices: TMemo;
    siSiExpires: TMaskEdit;
    Label15: TLabel;
    Spec: TComboBox;
    ComPort: TComboBox;
    Label16: TLabel;
    Label24: TLabel;
    BaudRate: TComboBox;
    Button8: TButton;
    Label25: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure IndNetRegStatusClick(Sender: TObject);
    procedure StatusBarClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ModemLogKeyPress(Sender: TObject; var Key: Char);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SMSLOGCheckBoxClick(Sender: TObject);
    procedure SMSLogButtonClick(Sender: TObject);
    procedure GSMLogButtonClick(Sender: TObject);
    procedure GSMLOGCheckBoxClick(Sender: TObject);
    procedure SMSKindChange(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PicturePaint(Sender: TObject);
    procedure PictureWidthExit(Sender: TObject);
    procedure PictureWidthKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure PictureMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BlinkClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure MelodyKeyboardPaint(Sender: TObject);
    procedure MelodyKeyboardMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure MelodyKeyboardMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure MelodyGridDblClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    FSaveActivePage: TTabSheet;
    FLastSMSKind, FLastSMSKind2: Integer;
    FSMSKindLock: Byte;
    FSmartMessage: TSmartMessageClass;
    FEMS: TEMSObjectClass;
    FWapPush: TWAPServiceClass;
    fPictureBitmap: TBitmap;
    fReference: Integer;
    fMelodyKeyPressTick: Longint;
    fMelodyKeyPressed: Integer;
    fMelodyArray: array[0..6] of TComboBox;
    fSEOPictureFileName: string;
    fWapPushTransaction: Byte;  
    procedure CheckGSMActive;
    procedure cmNetRegistrationChanged(var Msg: TMessage); message cm_NetRegistrationChanged;
    procedure cmModemStatusChanged(var Msg: TMessage); message cm_ModemStatusChanged;
    procedure SendSMSPhn(aDA, S: string; const WS: widestring; aDeliveryNotification: Boolean; aDCS: Byte; aUDH, aNoConv, aUnicode: Boolean);
    function GetGlyphNum(aGlyph: Byte; aOnOff: Boolean): Integer;
    procedure StatusLineOnHint(Sender: TObject);
    procedure ShowModemLog;
    procedure HideModemLog;
    procedure GetConfiguration;
    procedure SetConfiguration;
    procedure AdjustSMSKind;
    procedure AdjustPicture;
    procedure GetKeyRect(aScale: TSoundMelodyPatternScale; aNote: TSoundMelodyPatternNote; var R: TRect; var Keyis: Integer);
    procedure MelodySetFromGrid;
    function GetMelodyFromGrid: TSoundMelody;
    procedure SetMelodyToGrid(aMelody: TSoundMelody);
    procedure AdjustSEO;
  public
    { Public declarations }
  end;

var
  GSMCentralForm: TGSMCentralForm;

implementation
uses
  AuxGSM, AuxStr, IniFiles, CmdLine, Math;

resourcestring
  sModemNotActive = 'Device is not active';

{$R *.DFM}

const
  SendPrefix = '+:';
  MaxSMSLength = 160;

  CaptionStr = 'GSM Central [%s]';

procedure TGSMCentralForm.FormCreate(Sender: TObject);
var
  I: TGSMEquipment;
  J, N: Integer;
  S: string;
  I1: TSoundMelodyPatternNote;
  I2: TSoundMelodyPatternDuration;
  I3: TSoundMelodyPatternDurationSpecifier;
  I4: TSoundMelodyPatternStyle;
  I5: TSoundMelodyPatternScale;
  SndM: TSoundMelody;
resourcestring
  sMelodyTitles = 'Scale;Note;Dur;Dur2;Tempo;Style;Vol.;';
begin
  GSMDataModule.ModemLog:= ModemLog;
  GSMDataModule.SMSLog:= SMSLog;
  PageControl1.ActivePage:= TabSheet1;
  Semafor.Align:= alClient;
  Caption:= Format(CaptionStr, [GSMEquipmentLongName[GSMDataModule.GSM.Equipment]]);
  ImageList.GetBitmap(GetGlyphNum(glNone, False), IndNetRegStatus.Glyph);
  ImageList.GetBitmap(GetGlyphNum(glNone, False), Semafor.Glyph);
  for i:=Low(TGSMEquipment) to High(TGSMEquipment) do
    ModemComboBox.Items.Add(GSMEquipmentLongName[i]);
  //  GSMDataModule.Comm1.Open;
  Application.OnHint:= StatusLineOnHint;
  DCS.ItemIndex:= 2;
  Spec.ItemIndex:= 0;
  fPictureBitmap:= TBitmap.Create;
  fPictureBitmap.Monochrome:= True;

  MelodyScale.Items.Clear;

  N:= 55;
  for I5:= Low(TSoundMelodyPatternScale) to High(TSoundMelodyPatternScale) do
  begin
    MelodyScale.Items.Add(Format('%dHz', [N]));
    N:= N*2;
  end;

  MelodyNote.Items.Clear;
  for I1:= Low(SoundMelodyPatternNoteEnum) to High(SoundMelodyPatternNoteEnum) do
    MelodyNote.Items.Add(SoundMelodyPatternNoteEnum[I1]);

  MelodyDuration.Items.Clear;
  for I2:= Low(SoundMelodyPatternDurationEnum) to High(SoundMelodyPatternDurationEnum) do
    MelodyDuration.Items.Add(SoundMelodyPatternDurationEnum[I2]);

  MelodyDuration2.Items.Clear;
  for I3:= Low(SoundMelodyPatternDurationSpecifierEnum) to High(SoundMelodyPatternDurationSpecifierEnum) do
    MelodyDuration2.Items.Add(SoundMelodyPatternDurationSpecifierEnum[I3]);

  MelodyStyle.Items.Clear;
  for I4:= Low(SoundMelodyPatternStyleEnum) to High(SoundMelodyPatternStyleEnum) do
    MelodyStyle.Items.Add(SoundMelodyPatternStyleEnum[I4]);

  MelodyTempo.Items.Clear;
  for J:= Low(SoundMelodyPatternTempoEnum) to High(SoundMelodyPatternTempoEnum) do
    MelodyTempo.Items.Add(IntToStr(SoundMelodyPatternTempoEnum[J]));

  MelodyGrid.ColCount:= 7;
  fMelodyArray[0]:= MelodyScale;
  fMelodyArray[1]:= MelodyNote;
  fMelodyArray[2]:= MelodyDuration;
  fMelodyArray[3]:= MelodyDuration2;
  fMelodyArray[4]:= MelodyTempo;
  fMelodyArray[5]:= MelodyStyle;
  fMelodyArray[6]:= MelodyVolume;
  S:= sMelodyTitles;
  for J:= Low(fMelodyArray) to High(fMelodyArray) do
  begin
    MelodyGrid.ColWidths[J]:= fMelodyArray[J].Width;
    MelodyGrid.Cells[J, 0]:= Copy(S, 1, Pos(';', S)-1);
    Delete(S, 1, Pos(';', S));
  end;
  SndM:= TSoundMelody.Create;
  try
    SetMelodyToGrid(SndM);
  finally
    SndM.Free;
  end;
  MelodySetFromGrid;
  siAction.ItemIndex:= 2;
  slAction.ItemIndex:= 0;

end;

function TGSMCentralForm.GetGlyphNum;
begin
  Result:= aGlyph;
  Inc(Result, Byte((aGlyph > 0) and aOnOff));
end;

procedure TGSMCentralForm.CheckGSMActive;
begin
  if not GSMDataModule.Active then
    GSMError(sModemNotActive);
end;

procedure TGSMCentralForm.SendSMSPhn;
var
  aSMS: TSMSSubmit;
resourcestring
  sDeviceNotActive = 'Device not active. Connect?';
begin
  if not GSMDataModule.Active then
  begin
    if MessageDlg(sDeviceNotActive, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
      Abort;
    SetConfiguration;
    GSMDataModule.GSM.Open;
  end;
  CheckGSMActive;
  aSMS:= TSMSSubmit.Create;
  try
    aSMS.GSM:= GSMDataModule.GSM;
    aSMS.DA:= aDA;
    if not aNoConv then
      S:= ISOtoSMS(S);
    if aUnicode then
      aSMS.WideUD:= Copy(WS,1,70)
    else
      aSMS.UD:= Copy(S,1,MaxSMSLength);
    aSMS.DCS:= aDCS;
    aSMS.SRR:= aDeliveryNotification;
    aSMS.UDHI:= aUDH;
    GSMDataModule.SendSMS(aSMS);
    GSMDataModule.LogSMS(aSMS);
  finally
    aSMS.Free;
  end;
end;

procedure TGSMCentralForm.cmNetRegistrationChanged;
var
  Col: Byte;
begin
  case Msg.wParam of
    1: Col:= glGreen;
    2: Col:= glYellow;
  else
    Col:= glRed;
  end;
  IndNetRegStatus.Glyph:= nil;
  ImageList.GetBitmap(GetGlyphNum(Col, True), IndNetRegStatus.Glyph);
end;

procedure TGSMCentralForm.cmModemStatusChanged;
var
  Col: Byte;
  i: Integer;
begin
  for i:=0 to ConfigureGroupBox.ControlCount-1 do
    ConfigureGroupBox.Controls[i].Enabled := not GSMDataModule.GSM.Active;

  with SMSLogCheckBox do
    SMSLogButton.Enabled := Enabled and Checked;
  with GSMLogCheckBox do
    GSMLogButton.Enabled := Enabled and Checked;

  case Msg.wParam and $7F of
    0: Col:= glRed;
    1:
      begin
        Col:= glGreen;
        with GSMDataModule do
          if (Msg.wParam and $80 <> 0) and GSM.Active then
          begin
            ManufacturerId.Lines.Text:= Format('%s/%s'#13#10'%s'#13#10'S/N: %s', [GSM.ManufacturerId, GSM.ModelId, GSM.RevisionId, GSM.SerialNumberId]);
          end;
      end;
  else
    Col:= glNone;
  end;
  Semafor.Glyph:= nil;
  ImageList.GetBitmap(GetGlyphNum(Col, True), Semafor.Glyph);
  Application.ProcessMessages;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -