【问题标题】:Danish letters in AT commandAT 命令中的丹麦字母
【发布时间】:2021-04-12 08:56:59
【问题描述】:

我正在尝试让我的 SMS 网关使用 AT 命令发送 SMS。我通过命令提示符通过 SSH 连接。我是这方面的初学者,所以请多多包涵。 以下几行有效:

DEV=/dev/ttyACM1
DESTNUM="PHONENUMER"
SMS="Test SMS from ø"
echo -e "ATZ\r" >$DEV
echo -e "AT+CMGF=1\r" >$DEV
echo -e "AT+CMGS=\"$DESTNUM\"\r" >$DEV
echo -e "$SMS\x1A" >$DEV

所以上面正确地发送了短信,但它不包括 dansih 字母“ø”。通常这包含在 UTF-8 中。

如何让我的代码使用丹麦语字符?有什么想法吗?

【问题讨论】:

  • 试试SMS="Test SMS from \x0C"。如果它有效,我会写一个解释它的答案。
  • 行得通! :-) 所以这种编码 - 我可以找到其他 dansih 字母吗?我的意思是æ和å
  • 没关系。自己找到的。如何在此代码中添加“睡眠”行?
  • 我正在为你写一个答案……请耐心等待! PS:sleep

标签: sms at-command modem


【解决方案1】:

默认情况下,短消息使用GSM aplhabet (03.38) 发送,由3GPP TS 23.038 定义。可以通过发出 AT+CSMP 命令更改此设置(设置文本模式参数 - 我不会在此答案中深入研究它)。

更具体地说,使用7-bits aplhabet,以便设备可以将8个字符编码为7个字节(8x7=56),节省“宝贵空间”以发送更多信息。

这个字母表是 7 位 ASCII 的巧妙派生。 ASCII 中用于“无用”字符(尤其是控制字符)的一组代码用于添加来自字母表的特定字符,例如丹麦语:

Danish Character GSM 03.38 code
Ø \x0B
ø \x0C
Å \x0D
å \x0F
Æ \x1C
æ \x1D

因此,您只需编写一个特殊的例程,将特定的丹麦语字符转换为相应的转义码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    相关资源
    最近更新 更多