Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从不断增长的文本文件C++;实时_C++_Visual Studio_Ifstream - Fatal编程技术网

C++ 从不断增长的文本文件C++;实时

C++ 从不断增长的文本文件C++;实时,c++,visual-studio,ifstream,C++,Visual Studio,Ifstream,我浏览了所有关于实时阅读文本文件的答案,但似乎没有一个有效。 在我的程序中,1有一个不断增长的文本文件,由一个硬件编写,该硬件提供两个坐标(两列)。 在程序2中,我想实时读取这些坐标,并将另一个硬件移动到正在写入的坐标。 最大的问题是我想以尽可能短的延迟工作(低于50毫秒)。 我试过记事本++,但它的刷新率是3秒,这太多了。 有人能告诉你怎么做吗?你最快的反应是直接轮询(读取硬件)或让硬件创建一个调用你的程序的事件(中断) 写入文件需要时间。操作系统必须在硬盘上找到空间,写入硬盘;更不用说加速马

我浏览了所有关于实时阅读文本文件的答案,但似乎没有一个有效。 在我的程序中,1有一个不断增长的文本文件,由一个硬件编写,该硬件提供两个坐标(两列)。 在程序2中,我想实时读取这些坐标,并将另一个硬件移动到正在写入的坐标。 最大的问题是我想以尽可能短的延迟工作(低于50毫秒)。 我试过记事本++,但它的刷新率是3秒,这太多了。
有人能告诉你怎么做吗?

你最快的反应是直接轮询(读取硬件)或让硬件创建一个调用你的程序的事件(中断)

写入文件需要时间。操作系统必须在硬盘上找到空间,写入硬盘;更不用说加速马达旋转硬盘所需的时间了

写入内存要快得多。更有效的方法是H/W写入内存而不是文件。或者,内存映射文件或RAM驱动器将是下一个最佳选择

还要记住,Windows不是实时操作系统。您的系统中还有其他任务需要调出并执行。这会使您的“实时”需求减少时间。您可能希望研究Windows,看看是否有API允许您的程序以独占方式访问处理器(或使您的程序具有非常高的优先级)

研究“Windows驱动程序”,编写能够为您的H/W服务并实时执行活动的代码

我试过这个:

int main()
{ std::ifstream ifs(“file.txt”)

if(if.is_open())
{
std::字符串行;
while(true)
{

while(std::getline(ifs,line))std::cout文件可能不是正确的选择。您可以访问管道、套接字或其他形式的吗?我认为我无法访问这些。如果不是文本文件,什么可能是正确的选择?硬件如何与PC通信?直接连接(PCI总线)?外部通信,例如USB、RS232、并行、以太网等?也值得更新目标操作系统的问题。这里的人将熟悉您正在使用的任何东西,并可以建议选项。例如,如果您在Windows上运行,邮件槽()这是一种非常简单、开销相对较低的快速传递小消息的方法。我最大的问题是需要刷新记事本文件。我的要求是,只要我更改txt文件中的数据,它就会显示在控制台窗口上。
if (ifs.is_open())
{
    std::string line;
    while (true)
    {
        while (std::getline(ifs, line)) std::cout << line << "\n";
        if (!ifs.eof()) break; 
        ifs.clear();


    }
}

return 0;