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

📄 unit1.~pas

📁 GSM MODEM的收发短信息
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, MSCommLib_TLB, fc_gsm, pub_Funcs, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    SendMsg: TMemo;
    Label1: TLabel;
    RecNum: TEdit;
    Label2: TLabel;
    InfoCenter: TEdit;
    Label3: TLabel;
    BtnSend: TButton;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    RecMsg: TMemo;
    SendNum: TEdit;
    InfoCenter2: TEdit;
    BtnRce: TButton;
    ListBox1: TListBox;
    Label7: TLabel;
    ComboBox1: TComboBox;
    BtnOpen: TButton;
    BtnClose: TButton;
    MSC: TMSComm;
    Button1: TButton;
    Label8: TLabel;
    Button2: TButton;
    Button3: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure BtnSendClick(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure BtnOpenClick(Sender: TObject);
    procedure BtnCloseClick(Sender: TObject);
    procedure MSCComm(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure BtnRceClick(Sender: TObject);
    procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  txSn: string;
  comflag: integer;
  ConnFlag: integer;
  hThread: Thandle; //定义一个句柄
  ThreadID: Dword;
implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ConnFlag := 0;
  ComFlag := 0;
end;

procedure TForm1.BtnSendClick(Sender: TObject);
var
  CententStr, CententStr2, infocentent, mobile: widestring;
  tem: widestring;
begin
  if (ConnFlag = 1) and (ComFlag = 0) then
  begin
    comflag := 1;
    if (length(RecNum.Text) <> 11) and (copy(RecNum.Text, 1, 2) <> '13') and (length('xx') = 5) then
      Application.MessageBox('提示', '接收号码有误,请重新填写')
    else
    begin
      if (copy(RecNum.Text, 1, 2) <> '13') or (copy(RecNum.Text, 1, 2) <> '15') then
        mobile := ConverMobileNum(RecNum.Text, 0)
      else
        mobile := ConverMobileNum(RecNum.Text, 1);
      infocentent := ConverInfoCenter(InfoCenter.Text);
      tem := SendMsg.Text;
      CententStr := ContentToUnicode(tem);
      CententStr2 := codeaddcode(mobile, CententStr);
      RecMsg.Text := infocentent + CententStr2;
      {MSC.Output := 'AT+CMGS=' + inttostr(length(CententStr2) div 2) + #13;
      sleep(1000);
      tem := MSC.Input;
      if (length(tem) > 0) then
        MSC.Output := RecMsg.Text + ^Z;
      sleep(2000);
      tem := MSC.Input;
      if pos(tem, 'OK') > 0 then
        Application.MessageBox('发送信息失败!', '提示', MB_OK + MB_ICONWARNING)
      else
        Application.MessageBox('发送信息成功!', '提示', MB_OK + MB_ICONQUESTION);
      comflag := 0;}
    end;
  end else
    Application.MessageBox('串口未打开', '提示', MB_OK + MB_ICONWARNING);
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  CententStr, CententStr2, infocentent, mobile: string;
begin
  mobile := ConverMobileNum(RecNum.Text, 1);
  infocentent := ConverInfoCenter(InfoCenter.Text);
  CententStr := ContentToUnicode(SendMsg.Text);
  CententStr2 := codeaddcode(mobile, CententStr);
  RecMsg.Text := infocentent + CententStr2;
  MSC.Output := 'AT+CMGS=' + inttostr(length(CententStr2) div 2) + #13;
  sleep(1000);
  MSC.Output := RecMsg.Text + ^Z;
end;


procedure TForm1.BtnOpenClick(Sender: TObject);
var
  readstr: widestring;
begin
  try
    comflag := 1;
    MSC._CommPort := 8;
    MSC.PortOpen := true;
    MSC.Output := 'ATE0' + #13;
    sleep(1000);
    readstr := MSC.Input;
    if pos(readstr, 'OK') > 0 then
    begin
      Label8.Caption := '与手机连接不成功';
      MSC.PortOpen := false;
      exit;
    end;
    MSC.Output := 'AT+CGMF=0' + #13;
    sleep(1000);
    readstr := MSC.Input;
    MSC.Output := 'AT+CGMM' + #13;
    sleep(1000);
    readstr := MSC.Input;
    if (length(readstr) > 0) then
      Label8.Caption := copy(readstr, 3, 4) + ' 连接中......'
    else
    begin
      Label8.Caption := '与手机连接不成功';
      MSC.PortOpen := false;
      comflag := 0;
      ConnFlag := 0;
      exit;
    end;
    ConnFlag := 1;
    MSC.Output := 'AT+CSCA?' + #13;
    sleep(1000);
    readstr := MSC.Input;
    InfoCenter.Text := copy(readstr, 14, 11);
    BtnOpen.Enabled := false;
    comflag := 0;
  except
    begin
      BtnOpen.Enabled := true;
      MSC.PortOpen := false;
      comflag := 0;
      ConnFlag := 0;
    end;
  end;
end;

procedure TForm1.BtnCloseClick(Sender: TObject);
begin
  if comflag <> 0 then exit;
  MSC.PortOpen := false;
  BtnOpen.Enabled := true;
  Label8.Caption := '未连接......';
  ConnFlag := 0;
end;

procedure TForm1.MSCComm(Sender: TObject);
begin
  sleep(1000);
  case MSC.CommEvent of
    comEvReceive:
      begin
        InsertLogfile(MSC.Input);
      end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  X: widestring;
  c: Integer;
  cc: string;
begin
  X := '我';
  c := ord(X[1]);
 // chr
  showmessage(inttostr(c));
  FmtStr(cc, '%4.4X', [c]);
  showmessage(DecodeChinese('4F60597D0021'));
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  aa: widestring;
  s4: string;
  i: Longint;
begin
  showmessage(inttoBin(16));
  //showmessage(IntTostr(StrToint('$' + infocenter2.text)));
 { i := 140;
  s4 := Format('%X', [i]);
  showmessage(s4);
  if length(s4) < 2 then
    s4 := '0' + s4;
  showmessage(s4);      }
  //aa := '内容内' + #$D#$A'容';
  //showmessage(inttostr(length(infocenter2.Text)));
end;

procedure TForm1.BtnRceClick(Sender: TObject);
var
  ct, i: Integer;
  tem: string;
  sitems: TStringList;
begin
  ct := 0;
  MSC.RThreshold := 0;
  ListBox1.Items.Clear;
  MSC.Output := 'at+cmgl=4' + #13;
  sleep(4000);
  tem := MSC.Input;
  sitems := SpString(tem, #$D#$A);
  for i := 0 to sitems.Count - 1 do
  begin
    tem := sitems[i];
    if (length(tem) > 15) then
    begin
      inc(ct);
      ListBox1.Items.Add(tem);
      InsertLogfile(tem);
    end;
  end;
  for i := 1 to ct do
  begin
    MSC.Output := 'at+cmgd=' + inttostr(i) + #13;
    sleep(1000);
    MSC.Input;
  end;
end;


procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  vars: TStringList;
  tem: string;
begin
  if ListBox1.ItemIndex <> -1 then
  begin
    tem := DecodeInfo(ListBox1.Items.Strings[ListBox1.ItemIndex]);
    vars := SpString(tem, '|_|');
    SendNum.Text := vars[0];
    InfoCenter2.Text := vars[1];
    RecMsg.Text := vars[2];
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
  for i := 1 to 10 do
  begin
    MSC.Output := 'at+cmgd=' + inttostr(i) + #13;
    sleep(1000);
    MSC.Input;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (ConnFlag = 1) and (comflag = 0) then
  begin
    comflag := 1;
    BtnRce.Click;
    comflag := 0;
  end;
end;

end.

⌨️ 快捷键说明

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