我应该如何通过Python调用java脚本中的函数

2024-04-25 18:56:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我对代码完全陌生

我有一个java代码来控制设备中探针的温度、移动位置和力。所有函数都已创建。 例如,为了在Python中调用它们,我将使用ser.write(b'p\n')来打开顶部加热器。 以下是一些命令说明:

  • h-原点(完全向下移动至限位开关,然后向上移动至原点位置)
  • P+字节+字节-转到位置测微计[0-65535]
  • t-皮重(零负荷传感器)
  • g+字节+字节-加载目标,克[0-65535]
  • j+字节-温度设定点,摄氏度[0-255]
  • p-顶部加热器打开

以下是该命令的输入:

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,还是空间


Tags: 代码命令inputif字节buffer温度else
1条回答
网友
1楼 · 发布于 2024-04-25 18:56:57

对于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之间的位置

相关问题 更多 >

    热门问题