delphi里用spcomm发短信,总是返回ERROR
时间:2011-09-05
来源:互联网
各位:
在下目前在做“通过GSM MODEM发送中文短信”的项目,现在的进展是:了解PDU编码,可以在超级终端里成功发送中、英文短消息,可以通过程序发送英文短消息,现在的问题是:程序发送不了中文的短消息。我使用的是SPCOMM控件(串口通讯),使用其默认属性,但在代码中写:
s := 'at+cmgs=18 '+chr($0d)+chr($0a);//PDU编码长度为18,后跟回车换行符
smsport.WriteCommData(pchar(s),Length(s));
s := '0011000B813107020277F1000810046B228FCE '+chr($1A);//发送中文“欢迎”,编码为“46B228FCE”,后跟CTRL+Z
smsport.WriteCommData(pchar(s),Length(s));
代码执行完后,却返回“ERROR”。好象与最后的结束符CTRL_Z有关!
但是如果在超级终端中输入如下命令则可以收到“欢迎”:
at+cmgf=0
at+cmgs=18
at+cmgs=0011000B812107020277F1000810046B228FCE(后跟一个CTRL_Z)
请问我的代码有何问题?是不是SPCOMM的属性不应使用默认值?
注意:我的程序是同步的,串口有返回才继续发送的,所以不存在“每一条AT命令之间必须在上一条命令有回应后才能执行下一条命令”的问题。
在下目前在做“通过GSM MODEM发送中文短信”的项目,现在的进展是:了解PDU编码,可以在超级终端里成功发送中、英文短消息,可以通过程序发送英文短消息,现在的问题是:程序发送不了中文的短消息。我使用的是SPCOMM控件(串口通讯),使用其默认属性,但在代码中写:
s := 'at+cmgs=18 '+chr($0d)+chr($0a);//PDU编码长度为18,后跟回车换行符
smsport.WriteCommData(pchar(s),Length(s));
s := '0011000B813107020277F1000810046B228FCE '+chr($1A);//发送中文“欢迎”,编码为“46B228FCE”,后跟CTRL+Z
smsport.WriteCommData(pchar(s),Length(s));
代码执行完后,却返回“ERROR”。好象与最后的结束符CTRL_Z有关!
但是如果在超级终端中输入如下命令则可以收到“欢迎”:
at+cmgf=0
at+cmgs=18
at+cmgs=0011000B812107020277F1000810046B228FCE(后跟一个CTRL_Z)
请问我的代码有何问题?是不是SPCOMM的属性不应使用默认值?
注意:我的程序是同步的,串口有返回才继续发送的,所以不存在“每一条AT命令之间必须在上一条命令有回应后才能执行下一条命令”的问题。
作者: liuqc 发布时间: 2011-09-05
你用comport控件试试看,我以前是用它做的,没任何问题。
作者: zhoufs 发布时间: 2011-09-05
回楼上,程序已经很多使用spcomm了,不能再改了。
作者: liuqc 发布时间: 2011-09-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28