Моя проблема в том, что мне нужно управлять мобильным роботом E-Puck через Bluetooth на Java, отправив ему команды типа «D, 100,100» для установки скорости «E», чтобы получить скорость, и т.д. у меня есть некоторый код:Последовательный порт Java для записи/отправки данных ASCII
String command = "D,100,100";
OutputStream mOutputToPort = serialPort.getOutputStream();
mOutputToPort.write(command.getBytes());
Так с этим методом write
я могу только послать byte[]
данных, но мой робот не поймет этого. Например, раньше я использую эти команды на Matlab так:
s = serial('COM45');
fopen(s);
fprintf(s,'D,100,100','async');
Или по программе Putty типа только:
D,100,100 `enter`
Дополнительная информация:
Я также понял, что у Matlab есть другое решение для одной и той же вещи.
s = serial('COM45');
fopen(s);
data=[typecast(int8('-D'),'int8') typecast(int16(500),'int8') typecast(int16(500),'int8')];
В этом случае:
data = [ -68 -12 1 -12 1];
fwrite(s,data,'int8','async');
не было бы то же самое в Java:
byte data[] = new byte[5];
data[0] = -'D';
data[1] = (byte)(500 & 0xFF);
data[2] = (byte)(500 >> 8);
data[3] = (byte)(500 & 0xFF);
data[4] = (byte)(500>> 8);
И потом:
OutputStream mOutputToPort = serialPort.getOutputStream();
mOutputToPort.write(data);
mOutputToPort.flush();
В конце концов, это все байт. как вы генерируете байты? – jtahlborn
байт [] - это единственное, что НИЧЕГО понимает, я не вижу твоей проблемы. Может быть, более конкретным. –
Это лучший совет, который я могу дать вам с предоставленной вами информацией. Проверьте соответствие робота. –