我需要将一个恒定的数据流从计算机发送到设备。该设备连接到ftdi芯片,ftdi通过usb与计算机进行通信。不幸的是,在全速运行时,器件需要在每个传输的字节之间延迟。
问题:
目前我正在使用带有手写延迟的WriteFile()(这只是一个示例,而不是完整的代码):
for (i = 0; i < size; i++)
{
WriteFile( m_hIDComDev, (LPSTR) &ucByte, 1, &dwBytesWritten, &m_OverlappedWrite )
QueryPerformanceCounter(&start);
QueryPerformanceCounter(&stop);
while (double(stop.QuadPart - start.QuadPart) < DELAY)
{
QueryPerformanceCounter(&stop);
}
}
根据机器的情绪,此延迟在100 us和近1 s之间有所不同。我使用Scope来显示ftdi输出的延迟。
问题:
有没有办法在每个字节之间配置一个定义的延迟的com端口或ftdi? 用过多的单词,摆脱“for”并使用WriteFile与数据的大小而不是1。
或者,有没有人知道不同的方式,哪个适合?
限制:
整个计划应该进行时间优化。该器件可以230.4kBaud运行。以较低的速度(38,4k波特)运行已经解决了这个问题。但是,总时间太长。
使用Visual Studio在C中编程。