0

我正在使用 WML 功能“providelocalinfo”将位置信息放入通过 GSM 手机上的 WIB 菜单发送的短消息中。

我正在使用 SmartTrust 的 WIG WML v.4 规范。相关部分是“9.4 providelocalinfo 元素”

我使用示例中的代码,然后通过 SMS 传输变量,并使用 Kannel 从 SMSC 中检索消息。

这是我正在使用的代码,除了 [myservicecentre] 是我的实际服务中心:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE wml PUBLIC "-//SmartTrust//DTD WIG-WML 4.0//EN"
  "http://www.smarttrust.com/DTD/WIG-WML4.0.dtd">
<wml wibletenc="UCS2">  

  <card id="s">
    <p>
      <providelocalinfo cmdqualifier="location" destvar="LOC"/>
      <setvar name="X" value="loc=" class="binary"/>
      <sendsm>
          <destaddress value="367"/>
          <userdata docudenc="hex-binary" dcs="245">
              $(X)$(LOC)
          </userdata>
          <servicecentreaddress value="[myservicecentre]"/>
      </sendsm>
    </p>
  </card>
</wml>

我在收到的消息中看到的是“loc=”,后跟 7 个字节(八位字节)或二进制数据。我试图找到解释如何解码这些数据的文档,但没有找到清楚地解释这一点的文件。

在解码的 7 个八位字节中,前 3 个八位位组始终相同,接下来的 2 个八位位组往往在三个唯一值之间变化,最后两个八位位组似乎是 cellid。

所以我已经对接收器进行了编码,以提取最后两个八位字节并构造一个 16 位 GSM cellid。大多数情况下,它匹配来自网络的已知 cellid。但很多时候,值不匹配。

因此,我正在尝试查找有关以下内容的信息:

  1. 如何以安全的方式正确传输位置信息(编码、转换等)
  2. 如何正确解码信息
  3. 如何配置 Kannel 以尊重二进制位置数据

我在徒劳的搜索中检查了以下文档,但没有找到相关数据:GSM 03.38、GSM 04.07、GSM 04.08、GSM 11.15 以及 WIG WML Spec V .4

任何对我可能做错的事情的见解将不胜感激!

4

2 回答 2

2

要解码位置信息,您需要查看 GSM 11.14 第 48 页

1.19 位置信息

          Byte(s)    Description                                           Length
            1         Location Information tag                               1
            2         Length (X) of bytes following                          1
           3-5        Mobile Country & Network Codes (MCC & MNC)             3
           6-7        Location Area Code (LAC)                               2
           8-9        Cell Identity Value (Cell ID)                          2

移动国家代码 (MCC)、移动网络代码 (MNC)、位置区域代码 (LAC) 和小区 ID 按照 TS GSM 04.08 [8] 进行编码。

从个人经验来看,这里提到的第一个八位字节通常会被省略,所以你的前三个不变的字节是长度和国家。接下来的 2 个是网络运营商代码。

于 2009-09-18T10:46:42.223 回答
0

在这个问题上没有太多的叮咬!我想总结一下我的发现,以防其他人发现它们有用:

  1. 需要发送 dcs 设置不等于 0 的消息。 dcs="0" 发送数据打包(尊重每个八位字节的低 7 位;当最大消息大小实际上为 140 个八位字节时,这允许 160 个字符的 SMS 消息)

  2. 需要以二进制安全的方式解析数据:当二进制数据本身可以是该值时,遇到 0x0A 时停止搜索的正则表达式将失败。

  3. 我发现不需要更改 Kannel 的默认配置。

干杯

免责声明:16 位 GSM Cell-Id 的安全传输需要处理一些我理解的设置,因为它们没有默认配置。我可能依赖于其他默认值,但我不知道它们可能会有所不同。

于 2009-09-09T21:53:15.030 回答