请教AT指令,为什么短信删除不掉,急 ( 积分: 200 )

  • 主题发起人 主题发起人 任豆豆
  • 开始时间 开始时间

任豆豆

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是其中删除短信函数的一段代码,
可是为什么卡中的短信就是没有被删除掉呢?

//其中hcomm就是打开的串口的HANDLE
function TPhoneMessage.deleteMessage(index: String;
allTrue: boolean): boolean;
var
s, tmp:string;
lrc:longword;
begin
result:=false;
if allTrue then index:='ALL';
tmp:=format('AT+CMGD=%s',[index])+#13;
writefile(hcomm,pchar(tmp)^,length(tmp),lrc,nil);
if allTrue then
sleep(1000);
sleep(200);
s:=readcom();
end;
 
下面是其中删除短信函数的一段代码,
可是为什么卡中的短信就是没有被删除掉呢?

//其中hcomm就是打开的串口的HANDLE
function TPhoneMessage.deleteMessage(index: String;
allTrue: boolean): boolean;
var
s, tmp:string;
lrc:longword;
begin
result:=false;
if allTrue then index:='ALL';
tmp:=format('AT+CMGD=%s',[index])+#13;
writefile(hcomm,pchar(tmp)^,length(tmp),lrc,nil);
if allTrue then
sleep(1000);
sleep(200);
s:=readcom();
end;
 
我这里也是通过串口处理的,
就是不能正常删除短信
但发送,接收短信都没有问题。

请各位知道可能什么原因的兄弟发发言
急待回复!!
 
拜托各位见者请帮忙将帖子顶一顶,
急着呢,谢了!
 
我不知道你用啥通信的,我以前用MSCOMM通过COM口通信,删除短信时就向COM口中发送
AT+CMGD=N+#26+#13 N为短信号即可
 
AT+CMGD=短信号
 
strSend:='AT+CMGD='+Trim(i)+chr(13);
 
用的AT+CMGD=ALL
可是并没有删除掉
可能什么原因呢?
 
我幫你,別急兄弟。
 
帮忙呀!!!
 
要先选择设备,是删哪个设备里的短信,手头没有资料没法细说。
 
问题仍未解决,请各位多多帮忙
哪位以前作过这方面的东西
把删除短信的部分贴出来看看,可以么?
 
你要先要得到短信的序列号!
然后根据序列号进行删除
procedure TfrmMain.GSMReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
sPhone, sContent, sHead, s, s1: string;
k : integer;
begin
s := '';
s1 := '';
Setlength(s, BufferLength);
Move(Buffer^, PChar(S)^, BufferLength);


if s[1] + s[2] = #$0D + #$0A then delete(s, 1, 2);

if s[length(s)-1] + s[length(s)] = #$0D + #$0A then delete(s, length(s)-1, 2);

sHead := copy(s, 1, 5);

if s[1] = #$3E then
begin
FSending := True;
exit;
end;

if sHead= 'ERROR' then
begin
memo1.lines.add('GPRS ERROR');
end;

if sHead = '+CMTI' then
begin
iMsgIndex := strToInt(s[13]);

s1 := 'AT+CMGR=' + IntToStr(iMsgIndex) + #13 + #10;
GPRS.WriteCommData(Pchar(s1), length(s1));
s1 := '';
exit;
end;

if sHead = '+CMGR' then
begin
sPhone := copy(s, 25, 11);
sContent := copy(s, 63, length(s)-62);
sContent := UniCode2GB(sContent);
if iMsgIndex<>0 then
begin
if iMsgIndex <> 1 then
begin
for k := 1 to iMsgIndex do
begin
s1 := 'AT+CMGD=' + IntToStr(k) + #13 + #10;
GPRS.WriteCommData(Pchar(s1), length(s1));
s1 := '';
delay(300);
end;
iMsgIndex := 0;
end
else begin
s1 := 'AT+CMGD=' + IntToStr(iMsgIndex) + #13 + #10;
GPRS.WriteCommData(Pchar(s1), length(s1));
s1 := '';
iMsgIndex := 0;
end;
end;
MsgReceived(sPhone, sContent);
end;
end;
 
后退
顶部