estou desenvolvendo um software para fazer algumas leituras em uma impressora fiscal.
Bom o protocolo da impressora funciona com o envio de strings para porta serial. Até ai tranquilo =)
Bom o fato é que ao final de cada string eu preciso enviar um caracter de checksum. O checksum é obtido através da soma dos bytes de cada caracter da string divido (módulo) por 256. Até aqui tranquilo também.
public class NewClass {
public static void main (String[] args) {
char stx = '\u0002'; // Fixo
char etx = '\u0003'; // Fixo
char seq = '\u002a'; // Fixo
String dados = "15"; // Variável
int dadosSoma = 0;
for (int i = 0; i < dados.length(); i++) {
dadosSoma += (int) dados.charAt(i);
}
int checkSum = (((int) stx) + ((int) etx) + ((int) seq) + dadosSoma) % 256;
System.out.println(checkSum);
}
}
Meu checkSum nesse caso dá 149.
Bom aqui começam os meus problemas. Digitando ALT+0149 eu obtenho o caracter de checkSum que nesse caso é ? (bolinha preta caso não consigam visualizar). Em java isso seria representado pelo "unicode" \u2022
Bom minha dúvida é como sair do 149 e chegar no \u2022, ou seja como converter o 149 -> ? (bolinha preta) -> \u2022 ou se existir um meio de converter o 149 -> \u2022
Obrigado antecipadamente por qualquer dica ou ajuda!!
Sendo chato mesmo, será que você não pode trabalhar com arrays de bytes, em vez de strings? Uma hora acaba acontecendo um problema desses, que é difícil de resolver.
É claro que você pode otimizar meu código, é só um exemplo para você entender. Por exemplo, estou efetuando N vezes a operação custosa de converter uma string para bytes.