gpt4 book ai didi

c++ - 加快数据记录代码

转载 作者:行者123 更新时间:2023-11-30 03:49:53 25 4
gpt4 key购买 nike

我有一个以 1KHz 的速率输出 64 位二进制数据的设备。我正在通过第三方 DLL 通过 USB 读取设备,将二进制数据转换为 float ,为其添加时间戳,然后写入文件。

我现在有以下设置:

int main(int argc, char* argv[])
{

unsigned char Message_Rx[64];
USHORT Bytes_Read=0;
std::ofstream out(argv[1]);

do
{
Result = Comms.USBRead(&Message_Rx[0],&Bytes_Read);
unsigned long now = getTickCount(start);
if(Result != 0)
{

uint16_t msb (Message_Rx[11] & 0xff) \\leftshited 8;
uint16_t lsb (Message_Rx[12] & 0xff);
uint16_t rate = msb | lsb;
char outstring[1024];
sprintf(outstring, "%d\t%.7f", now, (float)rate*0.03125);
out << outstring << "\n";
}

}while(!kbhit());

out.close();

}

(抱歉,格式被 >><< 弄乱了)。

这在我的桌面上产生了非常好的结果。似乎没有任何数据丢失,时间戳是连续的,间隔 1 毫秒。

143379582   -0.5937500143379583   -1.5312500143379584   -1.6250000143379585   -1.4062500143379586   -1.1875000143379587   -1.3437500143379588   -1.3125000143379589   -1.3125000143379590   -1.1562500

但是当我在我需要使用的旧笔记本电脑上运行它时,我得到了以 block 形式出现的时间戳,看起来一定有一些数据丢失了:

143379582   -0.5937500143379582   -1.5312500143379582   -1.6250000143379582   -1.4062500143379582   -1.1875000143379593   -1.3437500143379593   -1.3125000143379593   -1.3125000143379593   -1.1562500

有没有办法加快我的代码速度,这样我就不会丢失数据?

最佳答案

大声说清楚:对于任何不是英特尔 486SX 的 PC,64kb/s 是一个非常可笑的速率。通过 USB 获得几 Mb/s 的速度对于小型的单片微 Controller 来说非常可行,无需任何优化。 无论出现什么问题,都比您的代码更需要调查。

我不知道 Comms 库,但那是我寻找花费时间的地方。

除此之外,将内容打印到屏幕上的时间应该比处理时间多几个数量级,但仍然不成问题。如前所述,1kS/s * 64 b/S 对于现代(阅读:过去二十年)PC 硬件来说什么都不是

关于c++ - 加快数据记录代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186028/

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