我的问题是我需要通过蓝牙在Java中控制移动机器人E-puck,通过发送命令如“D,100,100”来设置速度,“E”来获得速度等等.我有一些代码:
String command = "D,100,100";
OutputStream mOutputToPort = serialPort.getOutputStream();
mOutputToPort.write(command.getBytes());
所以用这种方法写我只能发送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();
解决方法:
代码注释中的主要细节.现在,您可以通过在命令窗口D,1000,-500中键入并按Enter键来更改车轮速度.
public class serialRo