Delphi下的手机短信投票平台(上)
这个投票平台是原理性的,使用的是普通的Nokia 6100作为接收端设备,没有经过严格的测试,在大量信息同时接受时可能出现短信拥塞、延时。
预备资料:
- Delphi下的ComPort控件
- Nokia AT Command Set
- SMS PDU Format
这里只说一下短信发送、接受的处理方法,至于收到短信后如何识别序号和更新数据,不是本文的重点。
在主窗体新建一个TComPort控件,名为ComMobile用于读写串口。将FlowControl中的DTR、RTS控制选项开启(Enable),否则无法与Nokia手机通讯。
首先使用AT+CMGS指令实现短信的发送。查阅PDU包格式进行编码。
注意以下几点:
- 最开始的“00”是指此PDU包不含有短消息中心信息,使用手机默认的短消息中心。
注意:这个“00”不算在PDU长度里面,所以AT+CMGS命令所带的长度参数是从“11”开始计算起的,PDU包字节数(2个16进制编码一个字节)。 - 对小灵通的号码做了特殊处理,其号码类型为0xA1,即国内电话号码没有加号。
- 接受方号码为半字节拼装存储,一定要注意顺序,先低四位后高四位,不足的补1111。
- 直接使用UCS2编码,没有考虑到英文短信的问题。而且WideString本身就是UCS2编码的,所以直接转成16进制即可。
- 使用#13,不要使用#10!!#26是Ctrl+Z 。
- 这段代码没有考虑手机的应答,无法处理一些特殊错误~~~比如,手机没钱了,发不出短信 :-p
procedure TFormMain.SendSMS(num: string; text: WideString);
var
sms: string;
i, j, k: Integer;
wchar: WideChar;
begin
sms := ' 001100'+IntToHex(Length(num), 2);
if Copy(num, 1 ,3) = '106' then
sms := sms+'A1'
else
sms := sms+'91';
for i := 1 to ((Length(num)+1) div 2) do
begin
if (i < ((Length(num)+1) div 2)) or (Length(num) mod 2 = 0) then
sms := sms+num[2*i]+num[2*i-1]
else
sms := sms+'F'+num[2*i-1];
end;
sms := sms+'0008A7';
sms := sms+IntToHex(Length(text)*2, 2);
for i := 1 to Length(text) do
begin
wchar := text[i];
sms := sms+IntToHex(Integer(wchar), 4);
end;
ComMobile.WriteStr('AT+CMGS='+IntToStr (Length(sms) div 2-1)+#13);
ComMobile.WriteStr(sms+#26#13);
end;
Delphi下的手机短信投票平台(上)相关推荐
- 嵌入式Linux平台下的手机短信开发
一.项目描述 现在我们所用的手机都是利用GSM网络来实现通信的,为了使手机发挥更大的用途,我们就产生此次话题. 本项目的初期效果:利用我们的手机发送短信到我们的GSM MODEM上,通过短信的解码,再 ...
- 编写了一个通过手机短信平台收发短信的软件
看过我写的"使用Ajax技术编写的一个网站"这篇博客的网友也许已经知道我现在是做什么工作的了.由于工作的原因,需要在网络上从事一些进行商业营销的活动,以帮助工作的开展.比如:介绍公 ...
- KIDSMS手机短信平台软件 v1.00 公开发表
KidSMS手机短信平台软件是一个以手机短信为平台,具有投票.评论.查询.广告功能的通信终端系统,轻量级是它最大的特点.太多短信系统是使用SP服务商+WEB管理的方式建立的,我称其为托管模式,托管模式 ...
- Flask项目实战——6—(前台用户模型、前台登录注册、图形验证码、手机短信验证码、添加表单验证短信验证码请求)
1.前台用户模型 前台用户模型定义 创建前台模型文件 apps/front/models.py # -*- encoding: utf-8 -*- """ @File : ...
- 安卓手机短信误删能恢复吗?
安卓手机短信误删能恢复吗?手机短信在目前生活中不经常使用到,因为我们现在比较喜欢用社交软件与别人进行交流,但是短信依然还是十分重要的存在,因为在一些相对重要的场合,我们还是会选择用短信的.那么我们的短 ...
- 手机短信验证服务,为个人信息安全提供保障
近年来,随着科技的不断创新与进步,电子商务网站已经成为了人们日常生活中不可缺少的一部分.与传统商务模式相比,电子商务的确有着其无可比拟的巨大优势,随着电子商务的不断兴盛,也衍生了许许多多的新兴服务产业 ...
- Python发送手机短信(融合云信平台)
写下这篇文章,算是记录一下Python发送手机短信的过程.现在通过手机短信推送信息一般比较方便,在企业内部,一般用邮件推送通知,如果不是每个人都有邮箱的话,邮件推送的局限性就出来了.手机短信的实时性比 ...
- Delphi手机短信
目前大多数的企业及学校内部都建有Intranet.并建有内部网站实现资源共享.为了使用户及时的得知网上的最新信息,很多网站都采用了手机短信提醒的方式,但使用中国移动或中国联通的SP方式,会大大的增加企 ...
- 手机短信验证码注册-短信平台验证码开发6
经过前面的基础准备工作后, 就可以正式进入开发的阶段了, 我们的短信接口开发, 主要以实现手机短信验证码功能案例, 进行演示, 因为这个功能在实际项目中用得最多. 这一节课程, 我们先把手机短信验证码 ...
最新文章
- 看大神如何使用vue导出pdf
- spring:注解@Resource,实现引用类型的赋值
- java遍历文件夹并把所有文件放到list中
- 最新linux面试题
- linq to sql 多条件组合查询
- vue引入turn.js
- 数据库 创建 / 查看/ 删除
- PHP----练习-----新闻管理----增删改查
- 均值(信息学奥赛一本通-T1060)
- 【java】Java中TypeReference用法说明
- linux系统的空间满的问题
- 去海南旅游什么时间段去最好,哪里最好玩?
- ROS的学习(十)rqt_console和roslaunch
- Kotlin的互操作——Kotlin与Java互相调用
- Docker提高拉取官网镜像的速度
- ELK logstash基本配置
- 2021年网络工程师考试大纲
- 办公室计算机收不到主机打印机,图文详解电脑怎么连接办公室打印机 一招教你搞定!...
- 完美数——C++代码及思路分析 leetcode507
- HTTP协议相关的网络经典五层模型