When connecting Samsung Galaxy S via USB to Hyperterminal, I cannot retrieve any messages from the modem. The commands AT and AT+CMGF=1 work, and AT+CPMS=? returns different memories available.
But when I try to execute the following command: AT+CPMS="SM" (or any other memory) I get: cms error 321. Can anybody help me? Thanks!
Additional info:
AT+CPMS=?
+CPMS: ("BM","ME","SM","SR"),("ME","SM"),("BM","ME","SM","SR")
AT+CPMS="SM"
+CMS ERROR: 321
From 27.005 +CMS ERROR 321 means invalid memory index.
The AT+CPMS command has three parameters with official syntax AT+CPMS=<mem1>[,<mem2>[,<mem3>]]. However I think that the problem is that the phone chokes at having different <mem1> and <mem2> values.
So although the official valid syntax would allow for only giving <mem1> I suspect the syntax to actually be AT+CPMS=<mem1>,<mem2>[,<mem3>] on some phones due to some implementation issue, (possibly limited to just certain values/combinations for <memN>). As far as I remember this was the case for phones from SonyEricsson, but I have always given both <mem1> and <mem2> with the same value for many years, so my memory might be a bit rusty.
I do think it is might be the case for other phones as well; if you search for example use cases of AT+CPMS you will see that giving both is more common than just <mem1> (and frankly I have a hard time imagining scenarios where you really want to read/delete from one storage and write/send from another storage). Given that my memory is correct, the described behaviour should be applicable for your phone as well since Samsung uses software from ST-Ericsson in their Galaxy phones.
来源:https://stackoverflow.com/questions/14460323/trouble-setting-preferred-message-storage-with-atcpms-on-samsung-galaxy