我对代码完全陌生
我有一个java代码来控制设备中探针的温度、移动位置和力。所有函数都已创建。
例如,为了在Python中调用它们,我将使用ser.write(b'p\n')
来打开顶部加热器。
以下是一些命令说明:
以下是该命令的输入:
void manageCommand() {
int input = Serial.read();
buffer[commandSize++] = input;
if((input == 13) || (input == 10) && commandSize > 0 && buffer[0] != 'g' && buffer[0] != 'P') {
commandSize--; // ignore newline
parseCommand();
commandSize = 0;
}
else if ((buffer[0]=='g' || buffer[0] == 'P') && commandSize == 3) { // commands with DWORD values
parseCommand();
commandSize = 0;
}
else if ((input == 13 || input == 10) && commandSize == 1) commandSize = 0; // ignore solitary newlines
lastHostHeartBeat = time;
}
这适用于p,移动到特定位置:
else if (buffer[0] == 'P') {
int a = buffer[1];
int b = buffer[2];
double tp = ((long) word(b,a));
tp /= 1000; // convert to mm
if (tp > MAXPOSITION) targetpos = MAXPOSITION;
else if (tp < 0) tp = 0;
gotoposition(tp);
}
我的问题是,如果我想进入15mm的位置,我应该在ser.write(b'\n')
中为p添加什么。我不明白“+”是什么意思,也许是P+0+15?还是P,0,15,还是空间
对于15mm位置,由于
tp /= 1000; // convert to mm
,需要传入15000,两个字节为00111010 10011000
。你应该通过b'P\x3a\x98\n'
。注意0000000000001111
(二进制)是3a98
(十六进制)该位置需要两个字节来表示所有可能的值。看看这个范围:
0-65535
。请注意,一个字节是8位,两个字节是16位。您可以用16位表示2^16=65536个不同的值。加号不在发送给控制器的字节中,它们只表示移动探测器的命令格式为P
,后跟两个字节,表示0和65535之间的位置相关问题 更多 >
编程相关推荐