delphi串口通信: GSM模块发短信

本文介绍如何使用Delphi通过串口通信与GSM模块交互,实现AT指令发送短信的功能。文中详细解释了两种短信格式(文本与PDU)的设置方法及其区别,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 转载请注明出处(Cooper的专栏    http://blog.youkuaiyun.com/cooper_lyt

 

     前几天写了一个用delphi串口通信程序,收发AT指令使用GSM模块发短信

delphi写串口通信程序还是很方便的,大体有两种方法1,使用API读串口,2使用ActiveX控件mscomm。由于时间关系和兼容问题本人使用的后者(使用API可能在不同的windows版本上出现问题)。

1.调试GSM模块 ,到网上下一个串口调试工具,注意应该有你的GSM模块所使用的波特率支持(我一开始下的就不支持我的GSM模块所使用的波特率),装好后发下at指令做测试,注意,每条at指令后都要有回车,短信结束为ctrl+z,在串口调试工具中可以发16进制的1a来实现,关于具体的指令大家可以到网上查一下,注意,不同的GSM模块的指令可能不同但收发短信的应该都是一样的。

2.短信的格式

要用at指令设置短信的格式

AT+CMGF=0 (0-PDU;1-文本)

短信有两种格式1.文本:所见及所得的,只能用来发英文短信 2,pdu格式: 要对短信进行编码,发送中文短信,编码方式参见:(http://www.delphifans.com/infoview/Article_49.html),编码的程序代码我有时间会发上来,现在找不到合适的空间。

短信格式的不同使用at指令的步骤也不同

  • AT+CMGF=1(文本)格式的步骤:
    1.   MsComm.Output:= 'AT+CSCA="+8613800240500"' +#13//设置短信中心号码
    2.  MsComm.Output:= 'AT+CMGF=0' +#13; //设置短信格式。
    3.   MsComm.Output:= 'AT+CSCS="GSM"'+#13//设置猫的模式,某些gsm模块不用此指令
    4.   MsComm.Output:= 'AT+CMGS="1347XXXXXX"'  + #13 ; //发送短信,目标号码
    5. SleepEx(900,true); //等到gsm回映 '>' 要单写一个方法等待,这里只是测试代码
    6.   MsComm.Output:= msg + #26  //时发送短信内容ctrl+z结束
    7.  //......写代码判断是否发送成功
    AT+CMGF=0(PDU)格式的步骤:

    由于PDU格式会将短信中心号码和目标号都发编码到短信中去所以省下了不少步骤,

  1.                 s:=   '中文测试';
  2.   MsComm.Output:= 'AT+CMGF=0' +#13//设置短信格式 
  3.   MsComm.OutPut := 'AT+CMGS=' + inttostr(GetSMSLen('+8613800240500', n, s)) + #13//重要。。先发送编码的长度给gsm模块, 
  4.          SleepEx(900,true); //等待返回'>'用自己的代码替换 
  5.   MsComm.OutPut := MadeSMS('+8613800240500', n, s) + #26//发送编码后的短信

3.短信的长度

使用pdu格式的短信长度是有限制的如果短信内是中文的话那么长度为128(注意不是128个字,而是长度为128),而英文的更长一些(到底有多长未测试,但是肯定比中文的长),而普通的文本格式的短信长度也没有测试(在中国不可能使用这种格式)。那位大虾知道可以告诉我一下我来补上呵。

转载请注明出处(Cooper的专栏    http://blog.youkuaiyun.com/cooper_lyt

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值