无法在调制解调器上接收闪存 (Class 0) 短信

Unable to receive flash (Class 0) SMS on Modem

我正在使用 sim800 调制解调器(Dinstar)使用 AT 命令,在 STK 发送短消息后无法获得 STK 命令的响应

使用我的phone时,流程如下:

  1. 启动 STK 应用程序
  2. 通过 STK 菜单导航到我想要的选项
  3. 输入数据(phone个数,金额)
  4. 确认选择 phone 然后显示 (Loading...),然后在 5 秒后,STK 应用程序显示一条消息,通知用户操作是否成功。

我的问题是在使用调制解调器时,我无法看到通知用户操作是否成功的消息。 以下是与每个命令的结果一起使用的 AT 命令:

at+stktrs=00,01
OK
+STKPCI: 0,SELECT ITEM,2,526563686172676520636C69656E74
+STKPCI: 0,ITEM,1,01,526563686172676520636C61737369717565
+STKPCI: 0,ITEM,2,02,4175747265207363056E6172696F206465207265636861726765
at+stktrs=00,01
OK
+STKPCI: 1,TIMER MANAGEMENT,01
+STKPCI: 0,GET INPUT,4,04456E7472657A206C6520636F646520636F6E666964656E7469656C203A0D0A362063686966667265732028302D3929,06,06
at+stktrs=00,01313131313131
OK
+STKPCI: 1,TIMER MANAGEMENT,01,00,01,00
+STKPCI: 0,GET INPUT,0,04456E7472657A206C65206E756D05726F2064652074056C0570686F6E6520636C69656E74203A0D0A31302063686966667265732028302D3929,0A,0C


at+stktrs=00,0130363535353535353535
OK
+STKPCI: 0,GET INPUT,0,04456E7472657A206C65206D6F6E74616E74206465206C61207265636861726765203A0D0A28302D3929,01,05
at+stktrs=00,0135
OK
+STKPCI: 0,DISPLAY TEXT,129,04566F756C657A2D766F757320767261696D656E7420726563686172676572206C6520636C69656E7420363535353535353535207F2068617574657572206465202064697268616D73203F
at
OK
at+stktrs=00
OK
+STKPCI: 1,SEND SHORT MESSAGE,5472616974656D656E7420656E20636F7572732E2E2E,0,0101038154F5000410E18B8FBAC72115E05B54866E5C667593
at+stksms=0
OK
+STKPCI: 2
+STKPCI: 0,PLAY TONE

此后,很长一段时间后,调制解调器也没有发送任何内容。 我认为 +STKPCI SEND SHORT MESSAGE 发送短消息。我也不知道 0101038154F5000410E18B8FBAC72115E05B54866E5C667593 是什么意思,在文档中,这应该是 SMS tpdu,但我无法 decode/parse 它。我需要能够发送 STK 短信,而无需一遍又一遍地浏览菜单。

仅供参考,我通过 TCP 套接字而不是串行连接连接到调制解调器,我使用的调制解调器是 Dinstar UC2000-VE。

编辑:使用 at 命令 AT+STKSMS=0 后,我能够在我的 phone 上收到充值,但网关上没有显示任何内容边。当我使用 phone 时,我可以在提示音后看到一条确认消息,说明操作是否成功。

编辑 2:我正在添加另一个不需要用户输入但需要机密代码的简单示例:获取用户余额,执行请求时出现同样的问题我能够看到加载...消息但之后没有返回任何内容,在使用 phone 时,我可以在加载...消息后看到我的余额。以下是执行的 AT 命令:

at+stktrs=00,03
OK
+STKPCI: 1,"D00C810301270282028182240101"
+STKPCI: 0,"D03F8103012304820281828D3004456E7472657A206C6520636F646520636F6E666964656E7469656C203A0D0A362063686966667265732028302D392991020606"
at+stktrs=00,01313131313131
OK
+STKPCI: 1,"D0118103012700820281822401012503000100"
+STKPCI: 1,"D03C81030113008202818305165472616974656D656E7420656E20636F7572732E2E2E0B190101038154F5000410ED69EC90113BCA7F71B9E5ED07BB7935"

This string D03C81030113008202818305165472616974656D656E7420656E20636F7572732E2E2E0B190101038154F5000410ED69EC90113BCA7F71B9E5ED07BB7935 shows the Loading message but nothing is received after.

在彻底调查之后。我找到了一个按预期工作但有点奇怪的解决方案。

发送STK短消息后收到播放音STKPCI

at+stksms=0
OK
+STKPCI: 2
+STKPCI: 0,PLAY TONE

发送 AT+STKTRS=10 似乎得到了 DISPLAY TEXT STKPCI,根据手册,STKTRS '10' = Proactive SIM session terminated by the user.

现在看起来像这样:

at+stksms=0
OK
+STKPCI: 2
+STKPCI: 0,PLAY TONE
at+stktrs=10
OK
+STKPCI: 0,DISPLAY TEXT,129,046F7005726174696F6E200563686F7505653A20566575696C6C657A207205657373617965722E 

显示的文字是运行的结果,但是我不太明白为什么发送+STKPCI:2后需要关闭session,按照手册是 2 无其他命令(会话结束)