0

我一直在用头撞墙,尝试了很多不同的方法来做到这一点,但似乎没有一个能正常工作。

注释掉的行是我试图用 C++ 重写的 C# 中的代码。任何帮助将非常感激。

void sendCommand(string command)
{
    //Convert.ToString((8 * startBit) + "4" + command);
    char buffer[50];
    sprintf(buffer, "%d", (8 * startBit));
    motor.printf("sendBuffer: %d\r\n", buffer);
    startBit = 1 - startBit;
    motor.printf("%s%c%s\n\r", buffer, "4", command);
    return;
}

string strAcceleration(int acceleration)
{
    //string accelerationHex = acceleration.ToString("X");
    //accelerationHex = accelerationHex.PadLeft(8,'0');
    char buffer[50];
    sprintf(buffer, "%00000000X", acceleration);
    motor.printf("acc: %s", buffer);
    return buffer;
}

string strSpeed(int speed)
{
/*
    string speedHex = null;
    if (speed == 0) speedHex = "0";
    else if (speed > 0) speedHex = speed.ToString("X");
    else speedHex = 0xFFFFFFFF + speed.ToString("X");

    if(speedHex.Length == 1) speedHex = "0000000" + speedHex;
    if(speedHex.Length == 2) speedHex = "000000" + speedHex;
    if(speedHex.Length == 3) speedHex = "00000" + speedHex;

    return speedHex;

    */
}

谢谢

4

1 回答 1

0

我不确切知道您的 C# 代码做了什么,但第二个

sprintf(buffer, "%08X", acceleration);

看起来不是一百万英里之外。同样对于第一个

std::ostringstream buffer;
buffer << (8 * startBit) <<  "4" << command;
std::string motor = buffer.str();

看起来它接近你想要的。

于 2012-11-09T17:00:13.633 回答