命令在27.007限定,並且給出的語法
+CUSD=[<n>[,<str>[,<dcs>]]]
所以實際上所有的參數是可選的,它是有效的與爲0,1,2或3個參數來調用該命令。
關於<dsc>
值,其指定的默認值0映射到GSM 7位默認字母用德語和值15是GSM 7位默認字母沒有根據23.038據我可以告訴任何特定的語言。它也說
GSM 7位默認字母表的實施是強制性的。其他字符集的支持是可選的。
因此,如果諾基亞設備提供了錯誤與AT+CUSD=1,"*123#"
我會解釋,由於沒有任何德語語言支持,因此它失敗。至於索尼愛立信的手機,我不能說爲什麼它失敗,如果它失敗了任何價值的論點(當然會有幾個值將失敗,但它應該支持15)。嘗試遍歷語言,看看你是否受到任何打擊(例如英語支持?)。
您可能會嘗試以其他方式指定GSM 7位,例如32(或可能通過探索Any reserved codings shall be assumed to be the GSM 7 bit default alphabet (the same as codepoint 00001111) by a receiving entity.
,儘管這可能不適用於所有手機)。
既然你正在檢查的最終結果代碼的任何AT命令你在任何情況下發出(你是吧?),它不是實現回退算法那麼多額外的工作:
- 首先嚐試使用dcs = 15調用
- 如果失敗,則調用dcs = 32
- 最後,如果以上所有失敗都嘗試不使用dcs。
這應該是在大量手機上調用AT+CUSD
最便攜的方式。
順便說一句,請注意,對於<n>
的0
值在27.007規範下劃線。這是一個有點微妙,但它意味着它是一個默認值,沒有說明確這樣(像做了<dsc>
例如)。所以AT+CUSD=
是一樣的AT+CUSD=0
(實際上,你甚至可以調用AT+CUSD=,"*123#"
一樣的AT+CUSD=0,"*123#"
,雖然你可能會遇到無法正確解析這個手機,所有手機/索尼埃裏克森年初生產的,幾乎所有的生產後調制解調器,並所有基於ST-Ericsson平臺的手機都可以正確解析)。
如果你想進行自動化測試,你可以這樣做用我 atinout程序,例如:
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。
更新:像this answer描述你所選字符的字符串集可能很可能是這裏的問題。嘗試運行AT+CSCS="GSM"
,看看是否有幫助。
設置字符設置爲GSM,將反應是英語嗎? –
更改字符編碼不會改變的內容,只是它的表現。請對此進行測試並更新我們的結果。 – hlovdal
問題是設置AT + CSCS = 「GSM」 後得到解決。現在索尼ericson手機也接受第三個參數。但我仍然收到人類可讀格式的迴應。它是否打算行爲?我想如果我將CSCS設置爲GSM,那麼我將以某種非人類可讀格式接收響應。 –