使用vb .net在短信项目中需要帮助

时间:2011-04-07 12:12:42

标签: vb.net sms gsm

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

首先将消息分成多个部分,每个部分长153个(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范围内的随机数,消息的每个部分必须具有相同的参考编号。