📄 xisms.pas
字号:
ButtonModify.Enabled:=false;
AddBuyDate.Text :=DateToStr(now);
Mainform.EnterPriseNameAddDB.Text:= EnterPriseName;
MainForm.EnterPriseTelAddDB.Text:= EnterPriseTel;
Pagecontrol1.ActivePageIndex:=0;
end;
procedure TMainForm.ComboBoxPortChange(Sender: TObject);
var
myReg:TRegistry;
begin
comboboxBaud.Enabled:=comboboxPort.text<>'红外';
ComUsed:=comboboxPort.itemindex;
myReg:=TRegistry.create;
myReg.RootKey:=HKEY_LOCAL_MACHINE;
try
if (myReg.OpenKey('\Software\Phinex',true)) then
begin
myReg.WriteInteger('ComUsed',ComUsed);
myReg.CloseKey;
end;
finally
myReg.Free;
end;
end;
procedure TMainForm.ButtonLinkClick(Sender: TObject);
var
i:integer;
begin
screen.Cursor:=crHourGlass;
if comboboxPort.items.indexof(comboboxPort.text)<>-1 then
begin
if comboboxPort.text='红外' then i:=0
else i:=strtoint(copy(comboboxPort.text,4,2));
end
else i:=-1; //StatusBar1
if not init(i,StatusBar1,strtointdef(ComboBoxBaud.text,19200)) then
begin
showmessage('连接错误!');
exit;
end;
// TimerIrda.Enabled:=port=0;
Editmanufacturer.text:=SendCommand('AT+CGMI',1000);
screen.Cursor:=crDefault;
SendCommand('AT+CNMI=1,1,0,2,1',1500);
// if(port>0)and(PhoneType=PMotorola)then //motorola串口连接不支持通讯簿
// TabSheet2.Enabled:=false;
end;
procedure TMainForm.ButtonRefreshClick(Sender: TObject);
var
s,Pre,Next:string;
i:integer;
begin
screen.Cursor:=crHourGlass;
Editmanufacturer.text:=SendCommand('AT+CGMI',1500); //at+gmi也行
EditPhoneMark.text:=SendCommand('AT+CGMM',1500); //at+gmm也行
EditSoftVersion.text:=SendCommand('AT+CGMR',1500); //at+gmr也行
EditIMEI.text:=SendCommand('AT+CGSN',1500); //at+gsn也行
s:=SendCommand('AT+CBC',1500);
splite(s,':',Pre,next);
splite(next,',',Pre,next);
case strtointdef(trim(pre),0) of
0: s:='';
1: s:='充电,';
2: s:='没有电池,';
3: s:='电量低,';
end;
Editcapacity.text:=s+next+'%';
s:=SendCommand('AT+CSQ',1500);
splite(s,',',Pre,next);
splite(Pre,':',Pre,Next);
EditSignelintension.text:=format('%d格',[(strtointdef(trim(Next),0)+7) div 8]);
SendCommand('AT+CPBS="SM"',1500); //sim电话簿
//LD(motorola) 最后拨出电话簿 DC(nokia)
//FD sim固定拨号电话簿,受限制的号码
//MT sim和手机电话簿
//ON sim自己的号码
//EN sim紧急号码
//MC 未接号码
//RC 已接号码
//SN 服务呼叫号码
//TA ??
s:=SendCommand('AT+CPBS?',1500);
splite(s,',',Pre,Next);
editSim.text:=Next;
SendCommand('AT+CPBS="ME"',1500); //手机电话簿
s:=SendCommand('AT+CPBS?',1500);
splite(s,',',Pre,Next);
EditPhoneNumber.text:=Next;
s:=SendCommand('AT+CSCA?',1500);
if (pos('""',s)<>0)and(PhoneType=PNokia)and(port=0) then
begin
EditSmsCentrol.text:='双击这里';
end
else begin
splite(s,'"',Pre,Next);
splite(Next,'"',Pre,Next);
EditSmsCentrol.text:=Pre;
end;
s:=SendCommand('AT+CPMS?',1500); //+CPMS: "ME",3,25,"SM",0,15,"SM",0,15
splite(s,',',Pre,next);
splite(next,'"',Pre,next);
i:=length(Pre);
if (i<>0)and(Pre[i]=',') then
delete(Pre,i,1);
EditSmscapacity.text:=Pre;
s:=SendCommand('AT+COPS?',1500);
splite(s,',',Pre,Next);
splite(Next,',',Pre,Next);
EditNetwork.text:=Next;
if pos('46001',Next)<>0 then
EditNetwork.text:=EditNetwork.text+'联通';
if pos('46000',Next)<>0 then
EditNetwork.text:=EditNetwork.text+'电信';
screen.Cursor:=crDefault;
end;
procedure TMainForm.EditSmsCentrolDblClick(Sender: TObject);
var
s,s2:string;
i:integer;
begin
if EditSmsCentrol.text='双击这里' then
try
screen.Cursor:=crHourGlass;
s:=#$14#$00#$0C#$02#$00#$06#$00#$01#$00#$33#$64#$01;
s:=SendCommand(s,1500);
if length(s)>=30 then
begin
s2:=copy(s,30,ord(s[28])-1);
s2:=HexToStr(s2,true);
i:=length(s2);
if (i<>0)and(s2[i]='F') then
delete(s2,length(s2),1);
if ord(s[29]) and $70 = $10 then
s2:='+'+s2;
EditSmsCentrol.text:=s2;
end;
if (EditSmsCentrol.text<>'双击这里')and(EditSmsCentrol.text<>'') then
begin
if EditSmsCentrol.text[1]='+' then s:='149'
else s:='129';
SendCommand('AT+CSCA="' + EditSmsCentrol.text + '",' + s,1500);
end;
except
end;
screen.Cursor:=crDefault;
end;
procedure TMainForm.ButtondisconnectClick(Sender: TObject);
begin
final;
end;
procedure TMainForm.ButtonSendClick(Sender: TObject);
var
Phone,Msg,TS:string;
i:integer;
Send:boolean;
begin
case FormSendMsg.showmodal of
mrYes: //发送
begin
send:=true;
TS:='发送';
end;
else
begin
screen.Cursor:=crdefault;
exit;
end;
end;
Phone:=trim(FormSendMsg.edit1.text);
Msg:=FormSendMsg.Memo1.lines.text;
i:=pos(#$A,Msg);
while i<>0 do //删除$0a,也可以不删
begin
delete(Msg,i,1);
i:=pos(#$A,Msg);
end;
if not SendSMS(Phone, Msg, Send, FormSendMsg.CheckAutoDisplay.Checked,
FormSendMsg.CheckReturnReceipt.checked) then
showmessage(TS+'失败!')
else showmessage(TS+'成功!');
screen.Cursor:=crDefault;
end;
procedure TMainForm.Refreshsms();
var
s,s1:string;
Num,Status,FromPhoneNum,Msg,Date:string;
i:integer;
begin
if port=-1 then exit;
//if RadioGroup1.ItemIndex=-1 then exit;
screen.Cursor:=crHourGlass;
SendCommand('AT+CMGF=0',1500); //Select SMS message format 0 is PDU mode
// if RadioGroup1.itemindex=4 then
// s:=SendCommand('AT+CMGL='+inttostr(0),7000)//List SMS messages from preferred store
// else
s:=SendCommand('AT+CMGL='+inttostr(0),5000);
//ListViewMsg.Items.Clear;
while s<>'' do
begin
i:=pos(#$D#$A,s);
s1:=copy(s,1,i-1);
delete(s,1,i+1);
i:=pos(':',s1);
if i=0 then continue;
delete(s1,1,i);
i:=pos(',',s1);
if i=0 then continue;
i:=strtointdef(trim(copy(s1,1,i-1)),-1);
if i=-1 then continue;
Num:=inttostr(i);
i:=pos(#$D#$A,s);
if i=0 then s1:=s
else s1:=copy(s,1,i-1);
if Analyze(s1,Status,FromPhoneNum,Msg,Date) then
begin
{ with ListViewMsg.Items.Add do
begin
Caption:=Num;
SubItems.Add(Status);
SubItems.Add(FromPhoneNum);
SubItems.Add(Msg);
SubItems.Add(Date);
end; }
//根据解析来的数据,更新数据库。
end;
if i=0 then break
else delete(s,1,i+1)
end;
screen.Cursor:=crDefault;
// ListViewMsgSelectItem(Sender,nil,false);
end;
procedure TMainForm.RefreshsmsSecond(ReceiveMsg:string);
var
s,s1,returnsms:string;
Num,Status,FromPhoneNum,Msg,Date,ProductID:string;
i:integer;
//ProcessThread:ReplayQuery;
QueryThread:QueryDatabase;
ADOQuery2:TADOQuery;
begin
{ if port=-1 then exit;
//if RadioGroup1.ItemIndex=-1 then exit;
screen.Cursor:=crHourGlass;
SendCommand('AT+CMGF=0',1500); //Select SMS message format 0 is PDU mode
// if RadioGroup1.itemindex=4 then
// s:=SendCommand('AT+CMGL='+inttostr(0),7000)//List SMS messages from preferred store
// else
s:=SendCommand('AT+CMGL='+inttostr(0),5000);
//ListViewMsg.Items.Clear; }
screen.Cursor:=crHourGlass;
s:=ReceiveMsg;
while s<>'' do
begin
i:=pos(#$D#$A,s);
s1:=copy(s,1,i-1);
delete(s,1,i+1);
i:=pos(':',s1);
if i=0 then continue;
delete(s1,1,i);
i:=pos(',',s1);
if i=0 then continue;
i:=strtointdef(trim(copy(s1,1,i-1)),-1);
if i=-1 then continue;
Num:=inttostr(i);
i:=pos(#$D#$A,s);
if i=0 then s1:=s
else s1:=copy(s,1,i-1);
if Analyze(s1,Status,FromPhoneNum,Msg,Date) then
begin
//ShowMessage(Msg);
//这儿首先要根据短信的格式解析出产品号码;
{ ProductID:= Msg;//暂时假设短信内容就是产品号码
ProcessThread.create;
ProcessThread.FreeOnTerminate:=true;
ProcessThread.Setparams(FromPhoneNum,ProductID,Date,ADOQuery1);
ProcessThread.Resume;}
// ReplayQuery(FromPhoneNum,ProductID,Date);
//这儿应该使用多线程
ProductID:= Msg;
ADOQuery2:=TADOQuery.Create(Application);
ADOQuery2.Connection:=ADOConnection1;
QueryThread:= QueryDatabase.Create;
QueryThread.Setparams(FromPhoneNum,ProductID,Date,Adoquery2);
QueryThread.Resume;
end;
if i=0 then break
else delete(s,1,i+1)
end;
screen.Cursor:=crDefault;
// ListViewMsgSelectItem(Sender,nil,false);
end;
procedure TMainForm.RadioClientNameClick(Sender: TObject);
begin
if RadioClientName.Checked then
begin
RadioProductName.Checked:=false;
RadioProductID.Checked:=false;
EditClientName.Enabled:=true;
EditProductName.Enabled:=false;
EditProductID.Enabled:=false;
EnterpriseRadioButton.Checked:=false;
EnterpriseQueryEdit1.Enabled:=false;
end;
end;
procedure TMainForm.RadioProductNameClick(Sender: TObject);
begin
if RadioProductName.Checked then
begin
RadioProductID.Checked:=false;
RadioClientName.Checked:=false;
EditClientName.Enabled:=false;
EditProductName.Enabled:=true;
EditProductID.Enabled:=false;
EnterpriseRadioButton.Checked:=false;
EnterpriseQueryEdit1.Enabled:=false;
end;
end;
procedure TMainForm.RadioProductIDClick(Sender: TObject);
begin
if RadioProductID.Checked then
begin
RadioProductName.Checked:=false;
RadioClientName.Checked:=false;
EditClientName.Enabled:=false;
EditProductName.Enabled:=false;
EditProductID.Enabled:=true;
EnterpriseRadioButton.Checked:=false;
EnterpriseQueryEdit1.Enabled:=false;
end;
end;
procedure TMainForm.ButtonQueryClick(Sender: TObject);
begin
if ADOQuery1.Active then
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from ClientInfo');
if EnterpriseRadiobutton.Checked then
begin
ADOQuery1.SQL.Add('Where EnterpriseName=:MyEnterpriseName');
ADOQuery1.Parameters.ParamByName('MyEnterpriseName').Value:=EnterpriseQueryEdit1.Text;
end
else if RadioClientName.Checked then
begin
ADOQuery1.SQL.Add('Where ClientName=:MyClientName');
ADOQuery1.Parameters.ParamByName('MyClientName').Value:=EditClientName.Text;
end
else if RadioProductName.Checked then
begin
ADOQuery1.SQL.Add('Where ClientProductor=:MyClientProductor');
ADOQuery1.Parameters.ParamByName('MyClientProductor').Value:=EditProductName.Text;
end
else if RadioProductID.Checked then
begin
ADOQuery1.SQL.Add('Where ClientProductorID=:MyClientProductorID');
ADOQuery1.Parameters.ParamByName('MyClientProductorID').Value:=EditProductID.Text;
end;
//ADOQuery1.ExecSQL;
ADOQUery1.Open;
if (ADOQuery1.RecordCount=0) then
begin
ShowMessage('您所查找的纪录不存在!');
end
end;
procedure TMainForm.ButtonCancelClick(Sender: TObject);
begin
AddClientName.Text :='';
AddProductName.Text:='';
AddProductID.Text:='';
AddBuyDate.Text :='';
end;
procedure TMainForm.ButtonAddClick(Sender: TObject);
begin
if AddProductID.Text='' then
begin
ShowMessage('商品号码不能为空,请重填!');
end
else
begin
if(Checkdatabase(AddProductID.Text))then
begin
ShowMessage('商品号码已经存在,请重填!');
end
else
begin
if ADOQuery1.Active then
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into ClientInfo(ClientName,ClientProductor,ClientProductorID,ClientBuyDate,EnterpriseName,EnterpriseTel)');
ADOQuery1.SQL.Add('Values(:MyClientName,:MyClientProductor,:MyClientProductorID,:MyClientBuyDate,:MyEnterpriseName,:MyEnterpriseTel)');
ADOQuery1.Parameters.ParamByName('MyClientName').Value:=AddClientName.Text;
ADOQuery1.Parameters.ParamByName('MyClientProductor').Value:=AddProductName.Text;
ADOQuery1.Parameters.ParamByName('MyClientProductorID').Value:=AddProductID.Text;
ADOQuery1.Parameters.ParamByName('MyClientBuyDate').Value:=AddBuyDate.Text;
ADOQuery1.Parameters.ParamByName('MyEnterpriseName').Value:=MainForm.EnterpriseNameAddDB.Text;
ADOQuery1.Parameters.ParamByName('MyEnterpriseTel').Value:=MainForm.EnterPriseTelAddDB.Text;
ADOQuery1.ExecSQL;
MessageDlg('您的新数据添加成功!商品号码是 '+AddProductID.Text,mtInformation,[mbok],0);
if ADOQuery1.Active then
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from ClientInfo');
ADOQuery1.SQL.Add('Where ClientName=:MyClientName');
ADOQuery1.Parameters.ParamByName('MyClientName').Value:=AddClientName.Text;
ADOQUery1.Open;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -