I
icelotus
Unregistered / Unconfirmed
GUEST, unregistred user!
无论是文本模式还是PDU模式,发送AT指令设置信息中心号和模式时都返回OK,但发送消息就返回ERROR,不知道是哪里的问题
如用PDU模式发送短信:
之前在FORMCREATE的时候设置MSCOMM属性如下:
mymscomm.CommPort:=1;
mymscomm.Settings:='9600,n,8,1';
mymscomm.InBufferCount:=0; //清空接收缓冲区
mymscomm.InputLen:=0;
mymscomm.InBufferSize:=1024;
mymscomm.RThreshold:=1;
mymscomm.OutBufferCount:=0; //清空发送缓冲区
mymscomm.OutBufferSize:=1024;
mymscomm.SThreshold:=1;
发送短信过程如下:
procedure TFrm_main.Btn_sendmsgClick(Sender: TObject);
var
sMsg:string;
begin
MSComm1.Output := 'AT'+char(13);
sleep(100);
MSComm1.Output := 'AT+CSCA="+8613800220500"'+CHAR(13); //信息中心号
sleep(100);
MSComm1.Output := 'AT+CMGF=0'+char(13); //设置为PDU格式
sleep(500);
sMsg := '0891683108200205F011000D91683157121468F0000800324F7F752800540065007800746A215F0F653653D177ED4FE14EE378017B805355FF0C5B9E73B08D776765534152065BB96613';
//转换方法略
MSComm1.Output := 'AT+CMGS=65'+ char(13); //消息长度
MSComm1.Output := sMsg+chr(26); //发送内容+CTRL+Z
sleep(2000);
end;
用MEMO显示每次向缓冲区发送与返回的内容如下:
AT
OK
AT+CSCA="+8613800220500"
OK
AT+CMGF=0
OK
AT+CMGS=65
> 1683108200205F011000D91683157121468F0000800324F7F752800540065007800746A215F0F653653D177ED4FE14EE378017B805355FF0C5B9E73B08D776765534152065BB96613
ERROR
为什么总是返回ERROR呢
如用PDU模式发送短信:
之前在FORMCREATE的时候设置MSCOMM属性如下:
mymscomm.CommPort:=1;
mymscomm.Settings:='9600,n,8,1';
mymscomm.InBufferCount:=0; //清空接收缓冲区
mymscomm.InputLen:=0;
mymscomm.InBufferSize:=1024;
mymscomm.RThreshold:=1;
mymscomm.OutBufferCount:=0; //清空发送缓冲区
mymscomm.OutBufferSize:=1024;
mymscomm.SThreshold:=1;
发送短信过程如下:
procedure TFrm_main.Btn_sendmsgClick(Sender: TObject);
var
sMsg:string;
begin
MSComm1.Output := 'AT'+char(13);
sleep(100);
MSComm1.Output := 'AT+CSCA="+8613800220500"'+CHAR(13); //信息中心号
sleep(100);
MSComm1.Output := 'AT+CMGF=0'+char(13); //设置为PDU格式
sleep(500);
sMsg := '0891683108200205F011000D91683157121468F0000800324F7F752800540065007800746A215F0F653653D177ED4FE14EE378017B805355FF0C5B9E73B08D776765534152065BB96613';
//转换方法略
MSComm1.Output := 'AT+CMGS=65'+ char(13); //消息长度
MSComm1.Output := sMsg+chr(26); //发送内容+CTRL+Z
sleep(2000);
end;
用MEMO显示每次向缓冲区发送与返回的内容如下:
AT
OK
AT+CSCA="+8613800220500"
OK
AT+CMGF=0
OK
AT+CMGS=65
> 1683108200205F011000D91683157121468F0000800324F7F752800540065007800746A215F0F653653D177ED4FE14EE378017B805355FF0C5B9E73B08D776765534152065BB96613
ERROR
为什么总是返回ERROR呢