首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIM800接收短信编码问题

SIM800接收短信编码问题
EN

Stack Overflow用户
提问于 2020-05-22 15:04:18
回答 2查看 734关注 0票数 1

我正在尝试设置一个SIM800从我的警报系统接收短信,我得到了它的工作…差不多了。

当我从我的手机发送短信时,SIM800可以正确地接收到可读格式的短信。但是,当报警系统发送短信时,SIM800会显示一个包含十六进制数字的长字符串,而不是显示消息。

查看收到的十六进制字符串,我注意到每隔一秒数字就是0x00。然后,我尝试从字符串中删除多余的0x00,并通过十六进制到ascii的转换来运行它,然后我就可以正确地读取消息了。

当我从我的手机上的报警系统收到消息时,它不需要任何手动转换就可以正确显示。

我在SIM800上尝试了AT+CMGF命令和AT+CSCS命令的不同设置,但似乎都不能解决问题。

是否还有其他需要设置的AT命令?

EN

回答 2

Stack Overflow用户

发布于 2020-06-07 16:10:29

有两种GMS编码方案,GSM7位(您将其视为文本,因为它是由SIM800为您解码的)和UCS-2,它代表了这些双字节字符中最常用的拉丁和东方字符。

UCS-2编码与UTF-16完全相同,因此您可以使用它进行解码。您知道这是一条UCS-2消息,来自对+CMGR的SIM800响应中的“数据编码方案”条目。

你可以通过搜索“GSM 03.38字符编码”找到更多信息。

票数 1
EN

Stack Overflow用户

发布于 2020-10-19 17:07:23

在接收消息时,SIM800L似乎并不总是将其转换为预期的编码,即,根据我的经验,当接收到包含GSM字符集以外字符的UCS2/UTF-16编码消息时,它会以UCS2格式而不是"GSM“显示该消息,并且不会对其进行转换,即使编码方案(AT+CSCS=?)设置为"GSM"也是如此。

我发现接收任何来源编码的消息最可靠的方法是使用AT+CSCS="UCS2"将SIM800L设置为UCS2模式,然后在接收消息时,将其转换为ASCII十六进制序列中的字节缓冲区,然后解码为UTF-16。

即,调制解调器随后将传入消息example通知为006500780061006D0070006C0065。将其转换为字节序列并解码为UTF-16BE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61949518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档