如何修改短信中心号码 ( 积分: 10 )

  • 主题发起人 主题发起人 mawei0913_green
  • 开始时间 开始时间
M

mawei0913_green

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我遇到这样一个问题,短信群发:硬件用了GSM MODEM和我们公司的软件,北京的客户可以给小灵通发短信(当然给移动手机也可以),但是我们的客户在内蒙古却不能给小灵通发短信,我打电话咨询了厂商,说是因为短信中心号码默认的是北京的,所以需要修改一下短信中心号码,,我们公司在坐这方面的问题时,把短信中心号码给忽略了,所以才有今天的事情发生,求助怎么用代码修改一下短信中心号码呢
请各位高人指教,谢谢!
 
代码如下:
function TForm_Main.DecodeRecvData(head, s: string;
comm: Tcomm): Boolean;
var
len : string;
reclen : string;
t : string;
i, l : Integer;
oa : string;
//源地址
ud : string;
//用户信息
rd: string;
ct : Integer;
Str : String;
iThird : Integer;
begin
if s <> '' then
begin
t := s;
iThird := 16;
repeat
Str := Copy(t,iThird,1);
iThird := iThird + 1;
until
Str = '0';
reclen := Copy(t,iThird - 1,Length(t) - 8 - iThird+3);
t := reclen;
// len := Copy(t, 1, 2);
//短信中心号码长度
len := '$' + Copy(t, 1, 2);
//短信中心号码长度
i := 1 + 2 + 2 * StrToInt(len);
//忽略短信中心号码
//效验接收长度是否正确
i := i + 2;
//忽略
l := StrToInt('$' + Copy(t, i, 2));
//源地址长度
l := ((l div 2) + (l mod 2)) * 2;
i := i + 2;
i := i + 2;
//忽略源地址类型
oa := TelNumDecode(Copy(t, i, l));
i := i + l;
i := i + 2;
//忽略协议类型
ct := StrToInt('$' + Copy(t, i , 2));
//编码类型
i := i + 2;
rd := TimeStampDecode(Copy(t, i, 12));
i := i + 12;
i := i + 2;
//忽略时区
len := '$' + Copy(t, i, 2);
i := i + 2;
ct := (ct and $0c) shr 2;
if ct = 2 then
ud := USC2Decode(Copy(t, i, StrToInt(len) * 3))
else
if ct = 0 then
// ud := GsmAlphabetDecode(Copy(t, i, Length(t)-i+4))
ud := GsmAlphabetDecode(Copy(t, i, StrToInt(len) * 3))
else
ud := Copy(t, i, (StrToInt(len)) * 2);
end;
WriteDataRev(oa,ud,comm);
end;
请各位高人,看看如何解决,谢谢!
 
怎么没人回答呀?各位高人,还请各位多多指教呀,我是初学者,如何在代码修改短信中心号码,并不是很明白,请各位高人指点,谢谢了!若分不够我可以再加呀,请各位看看,谢谢!
 
程序初始化的时候,向串口写这条数据:
'AT+CSCA=' + 短信中心号码 + #13
短信中心号码:
北京 +8613010112500
新疆 +8613010969500
 
内蒙古 +8613010950500
 
TO qqjm:
本人列出来的这条代码,需要修改吗?
 
DecodeRecvData 应该是对收到的短信进行解码吧!和短信中心没有关系,不用修改!
---------------------
在连接上设备的时候写一次就行了。修改短信中心后,只要设备没有断电这个修改都是有效的,不需要重复修改。
 
StrCmds := TStringList.Create;
StrCmds.Clear;
//清空发送命令缓冲区
StrReceive := '';
//清空接收命令缓冲区
PushCmd(Comm,'AT' + #13);
//初始化GSM Modem 检验模块有无问题
PushCmd(Comm,'AT+CPIN?' + #13);
//输入PIN码(检验密码)
PushCmd(Comm,'AT+CMGF=0' + #13);
//PDU模式收发
PushCmd(Comm,'AT+CNMI=2,2,0,1,1' + #13);
//短信提醒方式
PushCmd(Comm,'AT+CPMS=&quot;SM&quot;' + #13);
//设置短消息优先存储区域
PushCmd(Comm,'AT+CMGL=4' + #13);
//将储存的短消息列表
sleep(1000);
PushCmd(Comm,'AT+CMGD=1,4' + #13);
PushCmd(Comm,'AT+CPMS=&quot;SM&quot;' + #13);
//选择存储区;
PushCmd(Comm,'AT+CMGL=4' + #13);
PushCmd(Comm,'AT+CMGD=1,4' + #13);

也不知上面这段需要修改吗?
现在的情况是,短信中心号码默认的是北京的,因为内蒙古那边客户要用,所以要修改成内蒙古的,所以现在遇到了麻烦,用硬件GSM MODEM发短信时,给手机发送短信可以,但是给小灵通却不成功,
急!请各位高人能给予说明呀,据硬件厂商说,必须要修改代码才行,直接在手机上修改不行的,请高人分析一下代码,怎样修改才行呀??
 
这么长时间还没解决的问题,有高人懂 串口通讯吗?
 
这要看你的软件了怎么编程了,有的是自动获取本地的短信中心号码;另一种是你自己可以加一个代码,硬件厂商应该提供这个代码的,你应该和他们要
 
接受答案了.
 

Similar threads

D
回复
0
查看
877
DelphiTeacher的专栏
D
D
回复
0
查看
845
DelphiTeacher的专栏
D
后退
顶部