c - 使用 ESC 字符访问 GSM 03.38 扩展字符集

标签 c gsm

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

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

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

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

问候

最佳答案

您的链接表中有一些不正确的字符。我建议从 3GPP 下载原始规范 here适用于 GSM 和最新的 UICC here . UICC 规范中包含了欧元符号。

要访问Extension表,需要添加转义控制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、A-Z、a-z、空格(一些其他字符)的 ASCII 码与 GSM 默认字母表类似。其余请看表
  2. 如果手机/手机不支持扩展表字符,则按默认表字符显示(例如,欧元将显示为小'e')
  3. 如果您使用阿拉伯语或中文,则不能使用 GSM 默认字母表及其扩展表。相反,使用 Unicode 字符集 2 (UCS-2)

关于c - 使用 ESC 字符访问 GSM 03.38 扩展字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109542/

相关文章:

c - 堆栈结构 (ANSI C)

python - python中的gsm位置

c++ - 将SD卡上存储的电话号码插入短信发送AT命令Arduino

text-to-speech - GSM SIM800C 文本转语音音频流

android - 获取设备类型,表示 CDMA 或 GS​​M

c - C 中的递归函数,用于确定整数的数字是否按升序、降序或两者都不排序

C 中的碰撞检测

c++ - 如何在 X86 PC 上为 arm 编译 gcc 编译器

c - 链接和堆栈的行为

mp3 转 gsm( Asterisk )