【问题标题】:need help in sms project using vb .net在使用 vb .net 的 sms 项目中需要帮助
【发布时间】:2011-04-07 12:12:41
【问题描述】:

我正在使用 VB .net 做一个短信项目,通过串口连接到我的 gsm 调制解调器。所有的连接和一切都很好,我可以发送和接收短信。 那么问题来了,我需要发送超过 160 个字符的长短信。我阅读并做了一些研究,我知道我需要使用 pdu 和 udh。我设法稍微了解了 pdu 数据包,但在那部分仍然很困惑。

任何人都可以简单解释一下连接短信(长短信)的确切方法吗?

另一个问题是如何使用 vb 将数据编码为 pdu gsm 7bit 数据?是否有任何内置函数或者我需要自己编写它们?

【问题讨论】:

    标签: vb.net sms gsm


    【解决方案1】:

    这可能有助于串联 SMS 和 GSM 编码,但我从未使用过 GSM 调制解调器,因此希望其他人可以填补空白。

    为了将您的 .NET 字符串转换为 GSM 编码字符串,我编写了一个可用的开源库 on Github,它可能会对您有所帮助。但是,它不执行您可能需要的 7 位打包。

    对于长消息支持,您需要在每条消息的开头添加一个用户数据头。

    首先将消息分成多个部分,每个部分长 153 个 GSM(7 位)字节。不要忘记诸如 { 之类的扩展字符占用两个字节,完整列表请参见 GSM character set

    然后将 UDH 字节添加到允许连接的开头。我在下面放了一个两部分消息的示例。

    First SMS:  05 00 03 A6 02 01 .. bytes that make up the first part text..
    Second SMS: 05 00 03 A6 02 02 .. bytes that make up the second part text..
    
    Bytes  Description
    05     (UDHL) Length of the UDH. So the following five bytes are UDH
    00     (IEI) This identifier says this is a concatenated message
    03     (IEDL) It says that next 3 bytes are the data for this IE.
    A6     Reference number of this concatenated message. 
    02     There are two parts to this concatenated message.
    01or02 This indicates whether the SMS is the first or second part.
    

    UHDL = 用户数据头长度

    IEI = 信息元素标识符(00 是串联消息)

    IEDL = 信息元素数据长度(连接的消息头长度始终为 3)

    对于参考号,最简单的方法是在0-255范围内分配一个随机数,消息的每个部分必须具有相同的参考号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2011-06-04
      • 2020-05-18
      • 2012-02-24
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多