Enviar código ASCII pela porta serial

Olá.

Estou desenvoilvendo um programa pra enviar comandos para o controlador de um robô aqui no lab. O controlador funciona com porta serial, e código ASCII. Primeiramente, estou tentando controlar os comandos mas simples, como posicionar os motores.

Este comando é escrito da seguinte forma : “B+150\r”, Onde B é a identificação do motor, o sinal é a direção, e o valor numérico é a contagem de enconder. O /r é o terminador, (Código 13 de ASCII).

Já trabalhei com porta serial antes, então achei que não seria problema. O programa está pronto, e funciona perfeitamente quando comunica com outro computador.

O problema é que o controlador não faz nada quando envio estes comandos. Percebi então que o Java utiliza códigos Unicode e não ASCII, e cacei uma solução.

Tentei tudo que achei no santo Google e aqui no GUJ, mas nada deu certo. Eu sei que tudo aqui está funcionando, pois quando envio os comandos pela porta no matlab, tudo funciona.

Alguém tem uma ideia de como fazer isso ?

Aqui estão as tentativas que eu fiz mais não deram resultador.

método charAt() com e sem cast de int, com e sem cast de byte:
String comando = "B+150\r"; for(i=0;i<comando.length();i++){ saidaSerial.write((int) comando.charAt(i)); }

enviar a letra separada como char, e o resto como inteiro:
[code]

   saidaSerial.wite('B');
   saidaSerial.write('+');
   saidaSerialwrite(150);
   saidaSerial.write(13);

[/code]

Além de tentar várias ‘mixagens’ entre esses códigos. Estou sem idéias, e desde ontem não achei uma outra solução, então venho pedir ajuda a alguém que já passou por isso, ou saiba como resolver?

Ah mais uma coisa, Esse controlador é bem antigo, tem uns 20-25 anos, então poderia ser alguma diferença no código ASCII ?

Mais uma informação, acabei de fazer um teste, pedindo para ser mostrado o resultado final da seguinte linha de código:

(int) comando.charAt(i);

Todos os códigos resultantes estão corretos, conferi na tabela ASCII. De alguma forma esses dados estão chegando diferente na porta.

Isso costuma ser problema de configuração (stop bits, data bits, parity, baud rate etc.)

De qualquer maneira, uma string não é um array de bytes, embora exista até um método na classe String que converta de uma string para um array de bytes - getBytes().

Tente evitar usar strings, já que caracteres não-ASCII (ou seja, fora do intervalo 0 até 127) serão codificados pelo Java não em 1 byte, mas em 2 ou mais bytes.

Thingol,

Po cara valew, e bati tanto no ance do ASCII, que num tinha pensando nisso. Eu fiz uma parte de configuração na porta, e tava faltando acrescentar uma linha de código lá.

Agora está tudo funcionando. Obrigado pela ajuda.