gpt4 book ai didi

c++ - 两个事件之间的计时持续时间

转载 作者:行者123 更新时间:2023-11-28 02:35:19 25 4
gpt4 key购买 nike

我想计算发送和接收之间的时间。一旦我开始传输,我的计时器就会开始计时,一旦我收到回复,计时器就会停止。我在我的 arduino uno 上使用 C++。根据我的代码,我只是在测量延迟,这并不好。我要测量的是我发送和接收之间耗时。我希望你可以帮助我。

output image

我的代码

#include <VirtualWire.h>         

const int transmit_pin = 12;
const int receive_pin = 11;
char *controller;

unsigned long start, finished, elapsed;

void setup() {

//receiver settings

Serial.begin(9600); // Debugging only
vw_set_rx_pin(11);
vw_rx_start();

//transmitter settings
pinMode(13, OUTPUT);

vw_set_ptt_inverted(true);
vw_set_tx_pin(12);
vw_setup(1000); // speed of data transfer Kbps

}
void displayResult()
{
float h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%1000;
Serial.print("Raw elapsed time: ");
Serial.println(elapsed);
Serial.print("Elapsed time: ");
Serial.print(h,0);
Serial.print("h ");
Serial.print(m,0);
Serial.print("m ");
Serial.print(s,0);
Serial.print("s ");
Serial.print(ms,0);
Serial.println("ms");
Serial.println();
}

void loop() {

//Transmitter
digitalWrite(13, 1);
controller = "1";
vw_send((uint8_t *)controller, strlen(controller));
vw_wait_tx(); //Wait until the whole message is go

start=millis();
delay(1000); // for debounce
Serial.println("Started...");

//Receiver
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) { // Non-blocking
digitalWrite(13, 0); //Flash a light to show received good
for(int i = 0;i < buflen;i++) {
if (buf[i] == '2')
{

finished=millis();
delay(1000); // for debounce
displayResult();

elapsed=finished-start;
Serial.print(start);
Serial.println(" milliseconds start");
Serial.print(finished);
Serial.println(" milliseconds finished");
Serial.print(elapsed);
Serial.println(" milliseconds elapsed");
Serial.println();

}
}

}
}

最佳答案

你说“根据我的代码,我只是在测量延迟,这是不好的。”

好的,好的:

start=millis();         
delay(1000); // for debounce

好吧,如果您不想将延迟包括在耗时中,那么请将开始时间设为 delay() 之后,而不是之前。

这似乎太明显了,所以我怀疑你真的在问别的问题。您需要展示您得到的输出,为什么您认为它是错误的,以及您期望得到什么输出。

关于c++ - 两个事件之间的计时持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27668534/

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