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

📄 recethread.pas.~8~

📁 自助公交信息短信服务平台
💻 ~8~
字号:
unit recethread;

interface

uses
  Classes,Messages;

type
 //发送线程
 TReceThread = class(TThread)
  private
    { Private declarations }
    procedure ManagerDev;   // the gate for the whole thread
    procedure SendMsg;        //to send msg
    procedure RecvMsg;                     //to receive msg
    procedure GetSendMsg(var strMsg:String;var idx:integer);//get the msg to send
    procedure WriteRecvMsg(strMsg:String);   //cut the mesage
    procedure SendedMsg(Flag:integer;idx:integer);   //give the just result of sendmsg
   protected
    procedure Execute; override;     //重载执行函数
   // procedure Create;override;
  public
   // constructor create;

  end;
  var
         recvcounts:integer;
        Sendcounts:integer;
         TestFlag:Boolean;
implementation

uses
  SysUtils,calldll, mainProfile;

{ Important: Methods and properties of objects in VCL or CLX can only be used
  in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TSendThread.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TSendThread }   

procedure TReceThread.Execute;       //thread can run here
begin
  { Place thread code here }
   //while not Terminated do
    TestFlag:=true;
    recvcounts:=0;
    Sendcounts:=0;
    Form1.Timer1.Enabled :=true;
    if GetSimCardConnectStatus(1) =0
    then
     Form1.StatusBar2.Panels[3].Text:='连接正常';
   
  //  while TestFlag=true do
   begin
    { while GetSimCardWorkStatus(1)<>0 do
       /waittime(1000); }
     //Synchronize();
      if GetSimCardWorkStatus(1)=-1
      then
      Form1.Label1.Caption:='硬件工作繁忙';
     ManagerDev;
      sleep(1000);
      Form1.Label1.Caption:=format('接收 %d 条短信     发送 %d 条短信 ',[recvcounts,Sendcounts]);
      Form1.StatusBar2.Panels[2].Text:='正在等待新短信...';
   end;
   
end;

procedure TReceThread.ManagerDev;    //system para
begin
 // while TestFlag=true do
  begin
   RecvMsg;

   end;
   //SendMsg;   //first test receive thread
end;


procedure TReceThread.RecvMsg;
var
 // i:integer;
  arrMsg:array [0..1500] of char; //300 chars
  strMsg:string;

begin
  { Old Dll
  for i:=0 to 10 do
  begin
    strMsg:=StrPas(GetRecvMessage(1,i));
    if length(strMsg)>0 then
      WriterecvMsg(strMsg);
  end;}
  Form1.StatusBar2.Panels[2].Text:='正在接收新短信...';
  strCopy(arrMsg,GetAllRecvMessage(0));
  strMsg:=StrPas(arrMsg); //0-检索全部设备

  if TestFlag then
    //WriteLogFile('接收:'+strMsg);
      //must be test here 
    if length(strMsg)>0 then
    begin
      WriterecvMsg(strMsg); //cut for the single sms for every body of chanels
      inc(recvcounts);
      Form1.Label1.Caption:=format('接收 %d 条短信     发送 %d 条短信 ',[recvcounts,Sendcounts]);
      if TestFlag then
       // WriteLogFile('接收成功');
      RecvMsg;
    end;

end;
procedure TReceThread.WriterecvMsg(strMsg:String);
var                 {write to }
  Contact,RecvMsg,DateTime,smdate,smtime:String;
  //call number sm contents datatime
 // Secret:boolean;
begin
  //StrMsg格式:目标号码|信息|日期时间|加密标志|
  Contact:=copy(strMsg,0,pos('|',strMsg)-1);
  setofstringgrid3[1]:=Contact;   //call number
  strMsg:=copy(strMsg,pos('|',strMsg)+1,length(strMsg)-pos('|',strMsg));
   //the rest  msg for str msg
  RecvMsg:=copy(strMsg,0,pos('|',strMsg)-1);
  if length(RecvMsg)<=0 then
  begin
    exit;
    end
    else
    begin
     setofstringgrid3[4]:=RecvMsg;
    end;
    setofstringgrid3[2]:='保密';
    setofstringgrid3[3]:='默认组';

  //if the second is nil,
  strMsg:=copy(strMsg,pos('|',strMsg)+1,length(strMsg)-pos('|',strMsg));

  DateTime:=copy(strMsg,0,pos('|',strMsg)-1);
  //setofstringgrid3[6]:=datetimetostr(DateTime);
  smdate:=copy(DateTime,0,8);
  smtime:=copy(DateTime,9,16);
    setofstringgrid3[6]:=smdate;
 setofstringgrid3[7]:=smtime;

  strMsg:=copy(strMsg,pos('|',strMsg)+1,length(strMsg)-pos('|',strMsg));
  
  strMsg:=copy(strMsg,0,pos('|',strMsg)-1);

  if strtoint(strMsg)>0 then
    begin
  //  Secret:=True;
    setofstringgrid3[5]:='密文';
    end
  else
  begin
   // Secret:=false;
    setofstringgrid3[5]:='明文';
   end;
   setofstringgrid3[8]:='未处理';
  Form1.StatusBar2.Panels[2].Text:='正在保存接收新短信...';
  Form1.insertstringgrid3;
 // WriteRecvMsgtoDB(Contact,RecvMsg,DateTime,Secret);
   //this is a db gate for extense use of oracle or db2 db server
end;

end.

⌨️ 快捷键说明

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