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#コードが何をするのか正確にはわかりませんが、2番目の

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

百万マイル離れて見えません。同様に最初の

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

それはあなたが望むものに近いように見えます。

于 2012-11-09T17:00:13.633 に答える