Since you are checking the final result codes for any AT command you issue in any case (you are, right?), it is not that much extra work to implement a fallback algorithm: 首先尝试使用dcs = 15调用如果失败,则使用dcs = 32调用最后,如果以上所有方法均失败,请尝试不使用dcs.这应该是在大量手机上调用AT+CUSD的最便捷的方式.This should be the most portable way to invoke AT+CUSD on a large set of handsets.顺便说一下,请注意27.007规范中的<n>的0值带有下划线.它有点微妙,但这意味着它是默认值,而没有明确说明(例如,对<dsc>所做的操作).因此AT+CUSD=与AT+CUSD=0相同(实际上,您甚至可以像调用AT+CUSD=0,"*123#"一样调用AT+CUSD=,"*123#",尽管您可能会遇到无法正确解析此问题的电话.Sony Ericson早期生产的所有电话/调制解调器,几乎所有产品都会在以后生产,并且所有基于 ST-Ericsson 平台的手机正确解析).By the way, notice that the 0 value for <n> is underlined in the 27.007 specification. It is a bit subtle but it means that it is a default value, without saying so explicitly (like done for <dsc> for instance). So AT+CUSD= is the same as AT+CUSD=0 (and actually you could even invoke AT+CUSD=,"*123#" as the same as AT+CUSD=0,"*123#", although you might encounter phones that fail to parse this correctly. All phones/modems produced early by Sony Ericson, and almost all produced later, and all phones based on platforms from ST-Ericsson will parse this correctly).如果您想自动化测试,可以使用我的 atinout 程序,例如:If you want to automate testing you can do so using my atinout program, e.g.:echo ATE1 | atinout - /dev/ttyACM0 -for i in $(seq 0 15) 32; \do \ echo AT+CUSD=1,"xxxx",$i; \done | atinout - /dev/ttyACM0 -如果您的调制解调器设备是/dev/ttyASM0.if your modem device is /dev/ttyASM0. 更新:您为字符串选择的字符集很可能是问题所在,如此答案中所述.尝试运行AT+CSCS="GSM"并查看是否有帮助.Update: Your selected character set for strings might quite possibly be the problem here like described in this answer. Try to run AT+CSCS="GSM" and see if that helps. 这篇关于如何编写AT + CUSD usdd命令以支持最大听筒数量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-24 12:43