AT命令中的丹麦字母
Danish letters in AT command
我正在尝试让我的 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
所以上面的短信发送正确,但不包括丹麦字母“ø”。通常这包含在 UTF-8 中。
如何让我的代码使用丹麦字符?有什么想法吗?
默认情况下,短消息使用 GSM aplhabet (03.38) 发送,由 3GPP TS 23.038 定义。可以通过发出 AT+CSMP
命令更改此设置(设置文本模式参数 - 我不会在这个答案中深入研究它)。
更具体地说,使用了7-bits aplhabet,这样设备就可以在7个字节(8x7=56)中编码8个字符,节省“宝贵的space”以发送更多信息。
这个字母表是 7 位 ASCII 的巧妙派生。 ASCII 中用于“无用”字符(尤其是控制字符)的一组代码被用于添加字母表中的特定字符,例如丹麦语:
Danish Character
GSM 03.38 code
Ø
\x0B
ø
\x0C
Å
\x0D
å
\x0F
Æ
\x1C
æ
\x1D
因此,您只需要编写一个特殊的例程,将特定的丹麦语字符转换为相应的转义码即可。
我正在尝试让我的 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
所以上面的短信发送正确,但不包括丹麦字母“ø”。通常这包含在 UTF-8 中。
如何让我的代码使用丹麦字符?有什么想法吗?
默认情况下,短消息使用 GSM aplhabet (03.38) 发送,由 3GPP TS 23.038 定义。可以通过发出 AT+CSMP
命令更改此设置(设置文本模式参数 - 我不会在这个答案中深入研究它)。
更具体地说,使用了7-bits aplhabet,这样设备就可以在7个字节(8x7=56)中编码8个字符,节省“宝贵的space”以发送更多信息。
这个字母表是 7 位 ASCII 的巧妙派生。 ASCII 中用于“无用”字符(尤其是控制字符)的一组代码被用于添加字母表中的特定字符,例如丹麦语:
Danish Character | GSM 03.38 code |
---|---|
Ø | \x0B |
ø | \x0C |
Å | \x0D |
å | \x0F |
Æ | \x1C |
æ | \x1D |
因此,您只需要编写一个特殊的例程,将特定的丹麦语字符转换为相应的转义码即可。