`
金笛子
  • 浏览: 36145 次
社区版块
存档分类
最新评论

短信中VB.NET编码PDU(二)

 
阅读更多
EMS——ConcatenatedShortMessage部分

编码EMS较SMS复杂,但每条EMS的基础还是SMS,所以我直接继承了SMS类。区别主要是要处理好TP_UD和IE。对于ConcatenatedShortMessage,由于其IE和TP_UDHL占据了TP_UD的部分空间,所以每条短信英文只能容纳133字符,中文66字符。我们可以通过此信息得到短信条数。

如果TP_DCS为Unicode编码,则短信条目为:

TotalMessages = (TP_UD.Length / 4) / 66 +((TP_UD.Length / 4 Mod 66) = 0)+1

如果为7bit,则为:

TotalMessages = (tp_ud.Length / 266) -((tp_ud.Length Mod 266) = 0)+1

注意在程序中我为了简化以后的数组操作,就没有加一。

确定了短信条数以后通过一个循环就可以提取出每条短信的TP_UD。

Select Case tp_dcs

Case ENUM_TP_DCS.UCS2

tmpTP_UD = Mid(TP_UD, i * 66 * 4 + 1, 66 *4)'When TP_UDL is odd, the max length of an Unicode string in PDU code is 66Charactor.See [3GPP TS 23.040 V6.5.0 (2004-09] 9.2.3.24.1

Case ENUM_TP_DCS.DefaultAlphabet

tmpTP_UD = Mid(tp_ud, i * 133 * 2 + 1, 133* 2)

End Select

此后还需要编码IE部分,关键代码是确定TP_UDL的值。对于TP_DCS为7bit来说确定此值显得比较复杂,弄不好容易出现多一个少一个的错误。

If tp_dcs = ENUM_TP_DCS.UCS2 Then

TP_UDL = tmpTP_UD.Length / 2 + 6 + 1 '6:length of IE

End If

If tp_dcs = ENUM_TP_DCS.DefaultAlphabetThen

TP_UDL = Fix((tmpTP_UD.Length + 7 * 2) * 4/ 7) '6:length of IE

End If

然后根据3GPP里关于EMS的结构的说明就可以编写出EMS PDU的处理程序。详见原代码。

如果需要扩展EMS以适应更多种类的EMS,可以参考3GPP写出更为强大的编码程序。但最关键的还是需要处理好IE以及TP_UDL。

转自bbs.sendsms.cn
分享到:
评论

相关推荐

    PDU解码器.rar_PDU编码_SMS PDU Library VB6_pdudecoder vb.net_vb.net pd

    本文将围绕标题“PDU解码器.rar_PDU编码_SMS PDU Library VB6_pdudecoder vb.net_vb.net pd”展开,详细阐述PDU编码的概念、工作原理,以及如何在VB.NET环境中实现短信PDU的编码和解码功能。 首先,PDU编码是一种...

    PDU编解码(VB.NET)

    在VB.NET环境下进行PDU编解码涉及到对二进制数据的处理,通常用于短信服务(SMS)的应用,比如通过短信猫来接收和发送短信。 短信猫是一种硬件设备,它可以连接到计算机上,模拟手机的功能,使计算机能够通过GSM...

    西门子*.SMI/*.SMO短信文件夹文件读取器(VB.NET)

    总的来说,开发一个西门子.SMI和.SMO短信文件读取器需要理解PDU编码,掌握VB.NET编程,以及文件I/O和GUI设计的知识。通过编写自定义的PDU解码器,结合VB.NET的库函数,我们可以创建一个高效且用户友好的程序,帮助...

    Siemens Support Tool(VB.NET)

    Siemens Support Tool(VB.NET)(强烈推荐下载) 作者hesicong,花费了一个寒假的时间写了7000行程序基本搞定这个软件。可以实现M55手机的通讯薄管理、文件管理、便签管理、重要记事管理、短信管理。该软件源代码内...

    西门子M55数据传输及短信

    在VB.NET中处理PDU,我们需要熟悉GSM 03.38字符编码,以及如何将文本转换为PDU格式,同时也要知道如何从PDU解析出原始短信内容。 在hesicong的研究中,他可能已经实现了以下模块: 1. OBEX客户端:用于连接到M55...

    通过手机发送短信的程序(电脑通过数据线接手机,PDU编码,发送中文短信)

    6. **项目管理工具**:压缩包中的"SMSapplication.sln"文件通常是Visual Studio解决方案文件,暗示这个项目是在Windows环境下,使用C#或VB.NET开发的。解决方案文件包含了项目的配置、引用、依赖项等信息。 7. **...

    PDUCode

    在C++、C#、VB.NET等支持DLL导入的语言中,开发者可以通过调用DLL中的函数来实现对PDU的处理,简化了开发流程。例如,可能有一个名为`DecodePDU`的函数用于将接收到的PDU数据转换回可读的文本,而`EncodePDU`函数则...

    自动生成彩信包,MMS打包

    在MMS中,PDU编码用于将多媒体内容转换为二进制数据,以便通过网络传输。它支持GIF、JPG图像格式,MID音乐文件,以及中文标题,确保了内容的多样性。 "支持GIF, JPG, MID"意味着此工具或程序能够处理这三种常见的...

    短信猫Demo

    1. **开发语言Demo**:这些Demo可能包括Java、Python、C#、PHP、VB.NET等多种语言的示例代码,展示了如何使用API或者特定库来控制短信猫,进行短信的发送和接收操作。每种语言的Demo都会包含连接设备、发送短信、...

    短信的发送的程序—HHx开发

    开发者可以使用C#、VB.NET等语言,通过Visual Studio IDE来创建和设计用户界面。WindowsFormsApplication3.sln文件是一个解决方案文件,包含了项目的所有配置信息和引用,而WindowsFormsApplication3可能是项目的主...

    WaveCOM短信COM组件开发接口说明

    并且可以在VB6、VC6、Delphi、.NET (VC.NET、C#、VB.NET、J#)、Lotus Notes、Exchange Server、VJ6、C++Builder、PowerBuilder、VBScript、JavaScript、JScript等多种开发语言和环境中使用。 #### COM组件接口描述 ...

    GSM Modem.rar_gms_modem_slippedc5v

    3. 配置短信参数,如短信类型(文本或PDU模式)、编码格式(7位、8位、UCS2)等。 4. 使用适当的AT命令发送短信,如`AT+CMGF`切换到文本模式,`AT+CMGS`发送短信。 5. 监听Modem的响应,处理发送成功或失败的确认...

    C#SNMP_WALK举例

    // 当Pdu类第一次构建时,RequestId被设为0,在编码过程中会被设置为随机值 // 对于后续请求,id会被设置成一个需要递增的值,以确保每个包都有唯一的请求ID if (pdu.RequestId != 0) { pdu.RequestId += 1; }...

Global site tag (gtag.js) - Google Analytics