Mah .... di problemi nel tuo codice ne vedo diversi.Originariamente inviato da veddai
Qualcuno sa dirmi il perché questo succede e cosa dovrei fare per risolvere il mio problema?
Innanzitutto trasformi le stringhe in sequenze di bytes. Quando si fanno queste conversioni String<-->byte[] bisogna sempre prestare attenzione al charset utilizzato. getBytes() usa il charset di "default" della piattaforma. Quale che sia dipende appunto .... dalla piattaforma e potrebbe anche darsi che non sia quello più appropriato per l'invio di questi dati.
Ora ... non ho a portata di mano le specifiche o della documentazione sui comandi AT per i cellulari. Bisognerebbe verificare quale charset è possibile/più appropriato.
Comunque invece di preoccuparti tu di fare la conversione in byte (che rende lungo e poco leggibile il codice), puoi molto più semplicemente usare un Writer. Fai il "wrap" del tuo OutputStream in un OutputStreamWriter (a cui puoi specificare anche un charset) e a quel punto puoi scrivere comodamente char e String!!!
La seconda questione è che fai String.valueOf(invio), suppongo con l'intento di mettere nella stringa un "carriage return". Il problema è che valueOf() ritorna la rappresentazione testuale del numero, nel tuo caso ritorna "13", cioè proprio i caratteri '1' e '3'.
E non è sicuramente quello che volevi!!
Se vuoi mettere un carriage return, metti nella stringa semplicemente \r che è la sequenza di escape per il carriage return.
Idem per gli altri valueOf() che hai usato.