PC机串口控制GSM模块收发短信系统设计(流程图+源程序)论文

上传人:沈*** 文档编号:77492441 上传时间:2022-04-20 格式:DOC 页数:26 大小:36.14KB
收藏 版权申诉 举报 下载
PC机串口控制GSM模块收发短信系统设计(流程图+源程序)论文_第1页
第1页 / 共26页
PC机串口控制GSM模块收发短信系统设计(流程图+源程序)论文_第2页
第2页 / 共26页
PC机串口控制GSM模块收发短信系统设计(流程图+源程序)论文_第3页
第3页 / 共26页
资源描述:

《PC机串口控制GSM模块收发短信系统设计(流程图+源程序)论文》由会员分享,可在线阅读,更多相关《PC机串口控制GSM模块收发短信系统设计(流程图+源程序)论文(26页珍藏版)》请在装配图网上搜索。

1、PC机串口控制GSM模块收发短信系统设计(流程图+源程序)-论文PC机串口控制GSM模块收发短信系统设计(流程图+源程序)Abstract:The SMS(Short Message Service) which has more and more been much accounted of the system developers and system operators is the value that a basic business of the GSM network. We can develop various applications that foreground is

2、 considerable using the GSM network as the network to transmit datas wireless . This text just discusses the programmer of that PCs serial port controls the GSM module to realize Chinese or English short messages sending and receiving, which can realize measuer datas sending or receiving, memory and

3、 dealing on the personal computer through the GSM network. And bat around the message format of PDU mode and programmer of Chinese messages coding and decoding.Key words: Short Message Service;PCs serial port;GSM module;AT commands;PDU coding and decoding-全局变量声明-Dim portno As Integer 端口号Dim baudrate

4、 As Long 波特率Const prex = 0891 定义全局静态变量Const midx = 0011000D91Const sufx = 000801Private Const EM_LINESCROLL = &HB6-发送信息Private Declare Function SendMessage Lib user32 Alias SendMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long-Sleep函数(延时功能)Private Declare

5、 Sub Sleep Lib kernel32 (ByVal dwMilliseconds As Long)GetWindowTextW 指明这是一个 Unicode API (ASSIIunicode)Private Declare Function GetWindowText Lib user32 Alias GetWindowTextW (ByVal hwnd As Long, ByVal lpString As Long, ByVal cch As Long) As LongText2.Text = StrConv(StrConv(Text1.Text, vbUnicode), vbF

6、romUnicode)Private Sub NewSMSeting() 检测新信息If Mobcomm.PortOpen = False Then Mobcomm.PortOpen = TrueEnd If Mobcomm.Output = AT+CNMI=1,1,0,0,1 + vbCr Timer2.Enabled = TrueEnd SubPrivate Function telc(num As String) As String 把电话号码转换成Unicode码Dim tl As IntegerDim ltem, rtem, ttem As StringDim ti As Integ

7、er ttem = tl = Len(num)If tl 11 And tl 13 Then MsgBox 电话号码有误! & tl Exit FunctionEnd IfIf tl = 11 Then tl = tl + 2 num = 86 & numEnd IfFor ti = 1 To tl Step 2 ltem = Mid(num, ti, 1) rtem = Mid(num, ti + 1, 1) As IntegerDim r As StringFor i = 1 To Len(s) Step 4r = r + ChrB(&H & Mid(s, i + 2, 2) & ChrB

8、(&H & Mid(s, i, 2)NextUnicode2AscII = rEnd FunctionPublic Function AscII2Unicode(ByVal CS As String) 把信息转换成Unicode码Dim Length As IntegerDim temp As StringDim i As IntegerDim tempO As StringDim tempN As StringtempN = tempO = CSLength = Len(tempO)For i = 1 To LengthIf AscW(Mid(CS, i, 1) = 0 And AscW(M

9、id(CS, i, 1) 0 Then Backstring = Mobcomm.Input Mobcomm.InBufferCount = 0 Mobcomm.OutBufferCount = 0 1116PC机串口控制GSM模块收发短信系统设计(流程图+源程序)If InStr(Backstring, OK) Then Mobcomm.Output = AT+CMGS= + Str(ML) + Chr(13) + Chr(10) Else GoTo err Exit Sub End If Backstring = End IfSleep (400)If Mobcomm.InBufferCo

10、unt 0 Then Backstring = Mobcomm.Input Mobcomm.InBufferCount = 0 Mobcomm.OutBufferCount = 0 If InStr(Backstring, ) Then Mobcomm.Output = MS + Chr(26) Else GoTo err Exit Sub End If Backstring = End IfSleep (2000)If Mobcomm.InBufferCount 0 Then Backstring = Mobcomm.Input Mobcomm.InBufferCount = 0 Mobco

11、mm.OutBufferCount = 0 If InStr(Backstring, OK) Then MsgBox 信息发送成功!, vbOKOnly, 系统提示 Else GoTo err Exit Function End If Backstring = End IfSleep (1000)Exit Suberr:MsgBox 信息发送成功!, vbOKOnly, 系统提示MsgBox 传送出现错误,请重新发送!, vbOKOnly, 系统提示End SubPrivate Function Sendsms(num As String, msg As String) As Boolean

12、短信发送 Dim PDU, psmsc, pnum, pmsg, buf As String Dim Leng As String Dim Length As Integer Length = Len(msg) Length = 2 * Length Leng = Hex(Length) If Length 0 Then Mobcomm.InputLen = 0 buf = Mobcomm.Input If InStr(buf, ) Then Mobcomm.Output = PDU & Chr$(26) buf = End If End If If Mobcomm.InBufferCount

13、 0 Then Mobcomm.InputLen = 0 buf = Mobcomm.Input If InStr(buf, OK) Then buf = Sendsms = True End If End IfEnd FunctionPrivate Sub readsms(rnum As String) 接收信息Mobcomm.Output = AT+CMGF=1 + vbCrMobcomm.Output = AT+CMGR= & rnum + vbCrEnd SubPrivate Sub Command1_Click() myActiveX.Active = False myActiveX

14、.ComPort = Combo1(1).Text myActiveX.baudrate = Int(Val(Combo2(1).Text) MsgBox 设置端口号为: & Combo1(1).Text & ,波特率为: & Combo2(1).Text & tl myActiveX.Active = TrueEnd SubPrivate Sub Command2_Click()msg.Text = End SubPrivate Sub Command3_Click() DebugText = SIM卡信息 = DebugText SIM卡IMSI: + myActiveX.IMSI Deb

15、ugText 短信中心: + myActiveX.SCA DebugText 所属网络: + myActiveX.Provider DebugText 短信数目: + myActiveX.SMSMemUsed DebugText 短信容量: + myActiveX.SMSMemTotal = 0Mobcomm.InputLen = 0Sleep (100)Mobcomm.Output = AT+CMGF=1 + vbCrSleep (400)PC机串口控制GSM模块收发短信系统设计(流程图+源程序)Mobcomm.InBufferCount = 0Mobcomm.Output = AT+CMG

16、D= + index.Text + Chr(13) + Chr(10)Sleep (400)mobcomm.OutBufferCount = 0mobcomm.Output = 13138529082 + vbCrIf Mobcomm.InBufferCount 0 ThenInstring = Mobcomm.InputIf InStr(Instring, OK) Then MsgBox 成功删除第 + index.Text + 条信息!, vbOKOnly, 提示 Else MsgBox 信息删除不成功!End IfEnd Ifrmsg.Text = Mid(Instring.Text,

17、1, InStr(Instring, Chr(13) + Chr(10)rmsg.Text = Unicode2AscII(stringdeal(Instring)rmsg.Text = Mid(Instring, 11)Sleep (100)mobcomm.OutBufferCount = 0mobcomm.Output = Text1.Text + Chr(26)Sleep (100)End IfIf InStr(Instring, OK) ThenEnd IfIf Mobcomm.PortOpen = True Then Mobcomm.PortOpen = False End Ifmy

18、ActiveX.Active = TrueIf Mobcomm.PortOpen = False Then Mobcomm.PortOpen = TrueEnd If Mobcomm.Output = AT+CMGD= & index.Text + vbCr Sleep (300) If Mobcomm.InBufferCount 0 Then Mobcomm.InputLen = 0 temp$ = Mobcomm.Input Mobcomm.InBufferCount = 0 If InStr(buf, OK) Then MsgBox 该信息已删除! Else MsgBox 信息删除不成功

19、! End If End IfEnd SubPrivate Sub Form_Load()Combo1(1).ListIndex = 0 选择端口和波特率 Combo2(1).ListIndex = 4 myActiveX.Active = True 打开模块 End SubPrivate Sub msgsend_Click()Dim MsgAdr As StringDim TelNo As StringDim Smsg As StringDim PDU As StringDim Leng As StringDim Length As IntegerDim AllLength As Integ

20、erLength = 2 * Len(msg.Text)Leng = Hex(Length)If Len(Leng) = 1 ThenLeng = 0 & LengEnd IfAllLength = 15 + LengthMsgAdr = Trim(telc(8613800758500) 肇庆动感地带短信信中心地址TelNo = Trim(telc(teln.Text) 手机号码Smsg = Trim(AscII2Unicode(msg.Text) 短信息内容PDU = midx & TelNo & sufx & Leng & SmsgPDU = 0011000D91683167006059F

21、100080108828265E55FEB4E50AllLength = 23myActiveX.Active = FalseIf Mobcomm.PortOpen = False Then Mobcomm.PortOpen = True SMSend AllLength, PDU 调用短信息发送程序End IfIf Mobcomm.PortOpen = True Then Mobcomm.PortOpen = False myActiveX.Active = TrueEnd If myActiveX.SendTextSMS Trim(teln.Text), Trim(msg.Text)If

22、Sendsms(Trim(teln.Text), Trim(msg.Text) = True ThenIf Sendsms = True Then MsgBox 信息发送成功!End IfEnd SubPrivate Function stringdeal(ByVal st As String)stringdeal = Mid(st, InStr(st, Chr(10) + 16)End FunctionPrivate Sub rm_Click() 阅读信息Dim N As IntegerDim Instring As String= 0Mobcomm.InputLen = 0Sleep (1

23、00)Instring = Mobcomm.Output = AT+CMGF=0 + vbCrSleep (400)If Mobcomm.InBufferCount 0 Then Instring = Mobcomm.Input Mobcomm.InBufferCount = 0 Mobcomm.OutBufferCount = 0 If InStr(Instring, OK) Then Mobcomm.Output = AT+CMGR= + index.Text + Chr(13) + Chr(10) End If Instring = End IfSleep (500)If Mobcomm

24、.InBufferCount 0 ThenInstring = Mobcomm.InputPC机串口控制GSM模块收发短信系统设计(流程图+源程序)SMSdeal InstringSleep (100) If InStr(Instring, OK) Then MsgBox 成功读取第 + index.Text + 条信息!, vbOKOnly, 系统提示 Else MsgBox 该信息为空!, vbOKOnly, 系统提示 End If Instring = End IfIf Mobcomm.PortOpen = True Then Mobcomm.PortOpen = False myAct

25、iveX.Active = TrueEnd IfEnd SubPrivate Function SMSdeal(SMS As String)On Error Resume NextDim SM As StringDim SN As StringDim STIME As StringDim SMG As StringDim SLONG, N As IntegerIf InStr(SMS, 0891) ThenSM = Mid(SMS, InStr(SMS, 0891)SN = ConTelc(Mid(SM, 25, 14)STIME = ConTimec(Mid(SM, 43, 14)SLONG

26、 = CInt(Mid(SM, 57, 2)N = SLONG * 4SMG = Unicode2AscII(Mid(SM, 59, N) rmsg.Text = 短信类型: + 已读信息 + vbCr + vbLf + 对方号码: + SN + vbCr + vbLf + 发送时间: _ + STIME + vbCr + vbLf + 短信长度: + Str(SLONG / 2) + 字节 + vbCr + vbLf + 信息内容: + SMG + vbCr + vbLfElseIf InStr(SMS, 018) Then SM = Mid(SMS, InStr(SMS, 018) SLO

27、NG = CInt(Mid(SM, 17, 2) N = SLONG * 4 SMG = Unicode2AscII(Mid(SM, 19, N) rmsg.Text = 短信类型: + 存储信息 + vbCr + vbLf + 信息内容: + SMG + vbCr + vbLfEnd IfEnd FunctionPrivate Sub rpb_Click()myActiveX.ReadPhoneBook 1, myActiveX.PhoneBookCountEnd SubPrivate Sub Timer1_Timer()Dim buf As StringIf Mobcomm.InBuffe

28、rCount 0 Then Timer1.Enabled = False Mobcomm.InputLen = 0 buf = Mobcomm.Input If InStr(buf, OK) = 0 Then MsgBox 端口打开有误! & tl End IfEnd IfEnd SubPrivate Sub Timer2_Timer()If Mobcomm.InBufferCount 0 Then MsgBox 你有新的信息,请查收! If IntChk$ = vbOK Then Mobcomm.InputLen = 0 buf$ = Mobcomm.Input Timer2.Enabled

29、 = False remsg$ = StrConv(buf, vbFromUnicode) DebugText remsg 信息显示函数 End IfEnd IfEnd SubPrivate Sub DebugText(Str) 设定输出格式 rmsg.Text = rmsg.Text + Str + Chr(13) + Chr(10) 输出消息 SendMessage rmsg.hwnd, EM_LINESCROLL, 0, 1 向下卷行End SubPrivate Sub myActiveX_OnNewSMS(ByVal ReadState As String, ByVal sDateTi

30、me As String, ByVal sNum As String, ByVal sText As String, ByVal sSCA As String) 收到新消息 DebugText = 收到新消息 = DebugText 时间日期: + sDateTime DebugText 电话号码: + sNum DebugText 消息内容: + sText DebugText = MsgBox 收到新消息: + sNum End SubPrivate Sub myActiveX_OnPhoneBookList(ByVal PhoneBook As String)phbook.Text =

31、PhoneBook 显示电话本内容 End SubPrivate Sub Portopen_Test() 打开端口并测试 If Mobcomm.PortOpen = False Then Mobcomm.CommPort = True End IfMobcomm.Output = AT + vbCrTimer1.Enabled = TrueEnd SubPC机串口控制GSM模块收发短信系统设计(流程图+源程序)摘 要 SMS短信息服务作为GSM网络的一项基本业务已得到越来越多的系统运营商和系统开发商的重视,以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的应用。本文只讨论通过PC机

32、串口控制GSM终端模块实现中英文短信息收发的程序设计,以实现测控数据通过GSM网络在个人计算机上的收发、存储和处理,并详细讨论PDU模式的短信息格式和中文短信息软件编解码的设计。 关键词 SMS;PC机串口;GSM模块;AT指令;PDU编码解码1 引言SMS(Short Message Service)短信息服务是GSM(Global System for Mobile Communication)系统中提供的一种GSM终端(手机)之间,通过短信服务中心(Service Center)进行文本信息收发的应用增殖服务,其中服务中心完成信息的存储和转发功能。短信息服务作为GSM网络的一种基本业务,

33、已得到越来越多的系统运营商和系统开发商的重视,基于这种业务的各种应用也蓬勃发展起来。以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的应用,如无线数据的双向传送、无线远程检测和控制等。典型的应用有:变电站、电表、水塔、水库或环保监测点等监测数据的无线传输和无线自动警报;远程无线控制高压线路断电器、加热系统、防洪拦阻系统或其它机电系统的启动和关闭;车队交通管理和控制指挥系统;控制和监测香烟、食品和饮料自动售货机的运行状态和存货水平等等。本文选用GSM模块BenQ M22,通过建立PC机的串行口程序,对该模块进行控制,以实现短信息的收发,在PC和应用系统(手机或各种监测系统)之间以GS

34、M网络为纽带,即可实现远距离的数据传输。由于GSM网络在全国范围内实现了联网和漫游,具有网络能力强的特点,用户无需另外组网,在极大提高网络覆盖范围的同时为客户节省了昂贵建网费用和维护费用。同时,它对用户的数量也没有限制,克服了传统的专网通信系统投资成本大,维护费用高,且网络监控的覆盖范围和用户数量有限的缺陷。比起传统的集群系统在无线网络覆盖上具有无法比拟的优势,加上GSM的SMS本身具备的数据传送功能,都使得这些应用得到迅速的普及。利用GSM短信息系统进行无线通信还具有双向数据传输功能,性能稳定,为远程数据传送和监控设备的通信提供了一个强大的支持平台。2 系统总体框图设计与原理概述2.1 系统

35、总体框图整个通信系统分为传输网络和终端两个大部分,传输网络则利用了现有的GSM网络,而终端可以是手机终端或者是具有手机短信功能的模块终端,为了实现对数据的存储和处理,在终端加入了功能强大的个人计算机作为系统的控制中心,计算机与模块终端则通过串口进行通信。系统的总体框图如图1所示:图1 系统总体框图2.2 程序设计语言概述以及系统的界面设计Visual Basic是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的种类应用程序。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Visual Basic COM组

36、件和Windows内部的应用程序接口(API)函数等,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用程序软件系统。在Visual Basic环境下设计的系统界面如图2所示: 图2 系统界面2.3 AT指令介绍2.3.1 AT指令概述PC机串口和GSM引擎之间采用AT指令实现相互之间的通信,因此有必要先了解一下AT指令的格式和一些与本设计系统有关的常用指令。PC机串口发出的AT指令用来建立通信链路,AT指令集的命令格式帧都以AT开头,“AT”或者“at”的前缀必须出现在每条命令行的开始。值为键入的设置值,是命令语法要求的一部分。如果该值可选,那么用方括号加以区分。当用AT

37、指令命令设置了一个参数,那么这个值在它被改变之前一直是有效的。2. 3. 2 BenQ M22模块中与SMS有关的GSM AT指令介绍GSM引擎模块提供的命令接口符合GSM07.05和GSM07.07规范。GSM07.07中定义的AT Command接口,提供了一种移动平台与数据终端设备之间的通用接口;GSM07.05对短消息作了详细的规定。在短消息模块收到网络发来的短消息时,能够通过串口发送指示消息,数据终端设备可以向GSM模块发送各种命令。GSM AT指令集,是由诺基亚、爱立信、摩托罗拉和HP等厂家共同为GSM系统研制的,其中包含了对SMS(Short Message Service)的控

38、制。与SMS有关的GSM AT指令如表1所示:表1 与SMS相关的若干GSM AT指令AT指令 功 能 AT+CMGC Send an SMS command(发出一条短消息命令) AT+CMGD Delete SMS message(删除SIM卡内存的短消息) AT+CMGF Select SMS message format(选择短消息信息格式:0-PDU;1-文本) AT+CMGL List SMS message from preferred store(列出SIM卡中的短消息信息格式PDU/text:0/REC UNREAD为未读,1/“REC READ”为已读,2/“STOU NS

39、ENT”为待发,3/“STO SENT”为已发,4/“ALL”为全部的) AT+CMGR Read SMS message(读短消息) AT+CMGS Send SMS message(发送短消息) AT+CMGW Write SMS message to memory(向SIM内存中写入待发的短消息) AT+CMGS Send SMS message from storage(从SIM内存中发送短消息) AT+CNMI New SMS message indication(显示新收到的短消息) AT+CPMS Preferred SMS message storage(选择短消息内存) AT

40、+CSCA SMS service center address(短消息中心地址) AT+CSCB Select cell broadcast message messages(选择蜂窝广播消息) AT+CSMP Set SMS text mode parameters(设置短消息文本模式参数) AT+CSMP Select Message Service(选择短消息服务) PC机串口控制GSM模块收发短信系统设计(流程图+源程序)目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不

41、能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。发送和接收SMS信息有:Blocd Mod, Text Mod, 和 PDU Mod三种方式,本设计是在PDU Mode下发送和接收短信息的,所以首先要解决短信息的PDU编码和解码问题。PDU串表面上是一串ASCII码,由09、AF这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含

42、很多其他信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的PDU串,结构是不完全相同的。一般的PDU编码由A B C D E F G H I J K L M十三项组成,具体如下:A:短信息中心地址长度,2位十六进制数(1字节)。B:短信息中心号码类型,2位十六进制数。C:短信息中心号码,B+C的长度将由A中的数据决定。D:文件头字节,2位十六进制数。E:信息类型,2位十六进制数。F:被叫号码长度,2位十六进制数。G:被叫号码类型,2位十六进制数,取值同B。H:被叫号码,长度由F中的数据决定。I:协议标识,2位十六进制数。J:数据编码方案,2位十六进制数。K:有效

43、期,2位十六进制数。L:用户数据长度,2位十六进制数。M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。下面用两个实例说明PDU串的结构和编排方式:1)、发送:SMSC号码是+8613800250500,对方号码是13851872468,消息内容是“Hello!”。从手机发出的PDU串可以是:08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 27 64 F8 00 00 00 06 C8 32 9B FD 0E 01 对照规范,以上数据信息的含义见表2:表2 发送PDU串结构 分段含义说明08SMSC

44、地址信息的长度共8个8位字节(包括91)91SMSC地址格式(TON/NPI)用国际格式号码(在前面加“+”)68 31 08 20 05 05 F0SMSC地址8613800250500,补F凑成偶数个11基本参数(TP-MTI/VFP)发送,TP-VP用相对格式分段含义说明00消息基准值(TP-MR)00D目标地址数字个数共13个十进制数(不包括91和F)91目标地址格式(TON/MPI)用国际格式号码(在前面加“+”)68 31 58 81 27 64 F8目标地址(TP-DA)8613851872468,补F凑成偶数个00协议标识(TP-PID)是普通GSM类型,点到点方式00用户信息

45、编码方式(TP-DCS)7-bit编码00有效期(TP-VP)5分钟06用户信息长度(TP-UDL)实际长度6个字节C8 32 9B FD 0E 01用户信息(TP-UD)“Hello!”2) 接收:SMSC号码是:+8613800250500,对方号码是13851872468,消息内容是“你好!”。手机接收到的PDU串可以是:08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21对照规范,PDU串数据信息说明如表3:表3 接收PDU串结构分

46、段含义说明08地址信息的长度共8个8位字节(包括91)91SMSC地址格式(TON/NPI)用国际格式号码(在前面加“+”)68 31 08 20 05 05 F0SMSC地址8613800250500,补F凑成偶数个84基本参数(TP-MTI/MMS/RP)接收,无更多消息,有回复地址0D源地址数字个数共13个十进制数(不包括91和F)91源地址格式(TON/MPI)用国际格式号码(在前面加“+”)68 31 58 81 27 64 F8源地址(TP-OA)8613851872468,补F凑成偶数个00协议标识(TP-PID)是普通GSM类型,点到点方式08用户信息编码方式(TP-DCS)U

47、CS2编码30 30 21 80 63 54 80时间戳(TP-SCTS)2003-3-12 08:36:45 +8时区06用户信息长度(TP-UDL)实际长度6个字节4F 60 59 7D 00 21用户信息(TP-UD)“你好!”2. 4. 2 PDU编解码实现函数由于在GSM标准中,中文编码采用的是Unicode编码,而不是目前国内常用的GB-2312编码,故还需要进行中文编码的转换,才能显示汉字字型。1 ) 中文转换成Unicode码函数因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,

48、下面的函数将实现这个功能。这个函数主要应用到VB自带的一个格式转换函数:AscW()取ASCII码值。Public Function AscII2Unicode(ByVal CS As String)Dim Length As IntegerDim temp As StringDim i As IntegerDim tempO As StringDim tempN As StringtempN = tempO = CSLength = Len(tempO)For i = 1 To LengthIf AscW(Mid(CS, i, 1) = 0 And AscW(Mid(CS, i, 1) 12

49、8 Then temp = 00 & Hex(AscW(Mid(CS, i, 1)Else temp = Hex(AscW(Mid(CS, i, 1)End IftempN = tempN & temp Next i AscII2Unicode = Trim(tempN)End Function2) 短信中心手机号码的PDU串转换函数同上,为了发送以PDU模式发送短消息,必须将手机号码和对方手机号也转换为PDU格式,下面的函数就是为了实现这种转换:Public Function telc(num As String) As StringDim tl As IntegerDim ltem, rt

50、em, ttem As StringDim ti As Integerttem = tl = Len(num)If tl 11 And tl 13 Then MsgBox wrong number. & tl Exit FunctionEnd IfIf tl = 11 Then tl = tl + 2 num = 86 & numEnd IfFor ti = 1 To tl Step 2 ltem = Mid(num, ti, 1) rtem = Mid(num, ti + 1, 1) If ti = tl Then rtem = F ttem = ttem & rtem & ltemNext

51、 titelc = ttemEnd Function手机号码有两种表示方法:11位和13位(带国家码86),一般手机发送时都是以13位形式表示的,所以以上的函数还有一个功能是自动将11位格式手机号码转换为13位形式,然后再转换为PDU串。PC机串口控制GSM模块收发短信系统设计(流程图+源程序)3)Unicode码解码函数相比于手机短信的发送而言,手机短信的接收主要的工作正好与之相反。手机短信的发送需要将待发送的短信内容转换为Unicode码,而短信的接收则需要将接收到的Unicode码转换成中文字符。下面的函数将实现解码功能。同手机短信发送的编码函数一样,这里也应用了一个VB内置的函数Chr

52、B()函数来将Unicode码转换为中文:Public Function Unicode2AscII(ByVal s As String)On Error Resume NextDim i As IntegerDim r As StringFor i = 1 To Len(s) Step 4r = r + ChrB(&H & Mid(s, i + 2, 2) & ChrB(&H & Mid(s, i, 2)NextUnicode2AscII = rEnd Function243 PDU模式短信息的发送过程要实现短信息的转发,编写出有效的发送程序,要先来了解短信息的发送原理及其过程。首先,设置短信息的发送模式,本设计采用的是PDU模式:输入:AT+CMGF=0 回车系统会返回: OK然后发送短信息:假如,要向号码“ 13851872468”发送内容为“你好!”这么一条短信息,那么,先要把目标号码” 13851872468”转换为“ 68 31 58 81 27

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!