gpt4 book ai didi

c - 如何在 C 中的缓冲区中放置和使用两个不同的值?

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:40 25 4
gpt4 key购买 nike

以下是使机器人在其模拟器中移动的 C 代码的一部分。

while (1)
{
sprintf(buf, "M LR 100 100\n"); //motor left and right moves with speed 100 each.
write(sock, buf, strlen(buf)); //sends the buffer to the socket (simulator)
int lme, rme; //lme and rme are right and left motor encoder values, the other value I need to send to buffer.
sprintf(buf, "S MELR\n"); //sensor command to find ME values
sscanf(buf, "S MELR %i %i\n", &lme, &rme); //sending the actual ME values, that need to be sent to a(nother?) buffer.
printf(buf, "lme , rme"); //the values of MEncoders.
memset(buf, 0, 80); //clear the buffer, set buffer value to 0
read(sock, buf, 80); //read from socket to get results.
}

这不起作用,因为虽然机器人以 100 的速度移动,终端只显示 S MELR 而没有电机编码器值,但它显示了 M LR 命令被删除时的值所以我认为它与MELR 值未发送到缓冲区。如何改进或如何为 MELR 值设置新缓冲区?

最佳答案

在我看来,有些东西缺失/错误。我在这里注释你的代码:

while (1)
{
sprintf(buf, "M LR 100 100\n"); //motor left and right moves with speed 100 each.

buf 现在包含字符串“M LR 100 100\n”

    write(sock, buf, strlen(buf));     //sends the buffer to the socket (simulator)

命令写入sock

        int lme, rme;                  //lme and rme are right and left motor encoder values, the other value I need to send to buffer.

sprintf(buf, "S MELR\n"); //sensor command to find ME values

一个新命令被写入buf

        sscanf(buf, "S MELR %i %i\n", &lme, &rme);       //sending the actual ME values, that need to be sent to a(nother?) buffer.

尝试从 buf 中读取 - 但它包含 "S MELR\n"...

--> probably want another write(sock, buf, strlen(buf)); read(sock,buf,80); here

    printf(buf, "lme , rme");      //the values of MEncoders.
memset(buf, 0, 80); //clear the buffer, set buffer value to 0

将一个字符串写入buf,然后立即再次清除它?

    read(sock, buf, 80);               //read from socket to get results.        
}

也许我误解了 buf 是如何操作的,但它似乎是一个字符串缓冲区 - 至少使用一个 write(sock... 操作证明了这一点。

如果您解决了上述问题,您可能会成功。

关于c - 如何在 C 中的缓冲区中放置和使用两个不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14862810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com