1

我正在编写一个通过串行端口与 SIEMENS TC65 GSM 调制解调器通信的 C 应用程序。我能够正确发送 SMS 消息,但现在我想发送一些超出默认 GSM 03.38 字符集的字符。

请参阅:http ://www.csoft.co.uk/sms/character_sets/gsm.htm

例如,如果我尝试发送 character [,此页面会告诉我必须使用ESCcharacter 后跟<. 问题是调制解调器正在解释ESC字符并中止消息的发送,它没有读取完整的消息内容。

谁能帮我发送这些位于“扩展”GSM 03.38 字符集上的字符?

问候

4

1 回答 1

1

您的链接表中有一些不正确的字符。我建议在这里下载 3GPP的 GSM 和最新 UICC原始规范。UICC 规范已包含欧元符号。

要访问扩展表,您需要添加转义控件0x1B,如下所示:

 ^ : 0x1B 0x14
 { : 0x1B 0x28
 } : 0x1B 0x29
 \ : 0x1B 0x2F
 [ : 0x1B 0x3C
 ~ : 0x1B 0x3D
 ] : 0x1B 0x3E
 | : 0x1B 0x40
 € : 0x1B 0x65
 page break : 0x1B 0x0A

使用示例:

// [Hello]
byte[] text = new byte[] {0x1B, 0x3C, 'H', 'e', 'l', 'l', 'o', 0x1B, 0x3E};

笔记:

  1. 0-9、AZ、az、空格(一些其他字符)的 ASCII 码与 GSM 默认字母表类似。其余请看表
  2. 如果手机/手机不支持分机表字符,则按默认表字符显示(如欧元显示为小'e')
  3. 如果您使用的是阿拉伯语或中文,则不能使用 GSM 默认字母及其扩展表。而是使用 Unicode 字符集 2 (UCS-2)
于 2013-05-29T17:38:49.170 回答