win32、C++中的连续串行写入
Continuous serial write in win32 , C++
我需要在串行端口上执行连续串行写入,直到应用程序运行为止。有人能建议在使用win32的串行通信中,以规则的时间间隔连续写入数据的适当步骤是什么吗。
我已经完成了端口打开、写入、读取和关闭按钮点击。这意味着如果我点击打开按钮,它就会打开端口,写入按钮写入,读取按钮读取,关闭按钮关闭端口。我在win32平台上使用了串行端口上的文件操作技术。步骤可以概括为
- 打开端口(createfile)
- 检查端口是否存在
- 设置串行参数
- 设置超时
- 写入数据(写入文件)
- 读取数据(读取文件)
- 关闭端口
我这样做是为了学习串行通信。但实际上,我必须连续写入数据,直到应用程序运行,同时在串行端口中可用时读取数据。我在程序中没有实现线程概念。线程对我来说是一个新话题,如果我必须使用它来实现我的目标,请建议一个适当的步骤。我的目标是
- 连续写入数据,直到应用程序运行
- 连续数据应该以一定的时间间隔写入。(c++中有定时器的概念吗?)
- 只要串行端口上有数据可用,就从该端口读取数据
我们将非常感谢你的帮助。
stopSignal=CreateEvent(stuff); //signal this with SetEvent() to stop the serial thread.
..
CreateThread(blah,SerialThreadProc,blah);
..
void* SerialThreadProc(){
open port (createfile);
check port exist or not;
set serial parameters;
set timeouts;
do{
write data (writefile);
read data (readfile);
}while(WAIT_TIMEOUT==WaitForSingleObject(stopSignal,commsInterval));//expect yoda flame
close port
};
如果您想同时进行Windows API串行读取和写入,则需要有一个读取线程和一个写入线程。如果您在GUI程序中执行此操作,那么这些线程应该与主GUI线程分离。
MSDN的这篇文章描述了详细信息,并提到了一个名为MTTTY的示例代码,它结合了读、写和GUI。不幸的是,MTTTY似乎在MSDN上不再可用。如果您可以访问旧的MSDN库磁盘,也许您可以找到它。
http://msdn.microsoft.com/en-us/library/ff802693.aspx
相关文章:
- 模板元程序查找相似的连续类型名称
- EASTL矢量<向量<int>>连续的
- 当需要超过16GB的连续内存时,内存分配失败
- 我应该如何表示我拥有的连续元素序列?
- 蛇在C++不会连续转两次
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 如何知道n!是否可以表示为三个连续数字的乘法?
- 连续枚举 C++11
- 两个连续的 OpenMP 并行区域会相互减慢速度
- 可以将两个相同类型的连续数组视为一个数组吗?
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 这种用于查找连续子数组中最大和的递归算法有什么优势吗?
- std::stack 是连续的吗?
- 检查连续对的字符串C++
- 如何使用 fprintf 将连续的 512 字节保存到文件中
- 使用连续字符及其路径查找矩阵中最长路径的长度
- 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?
- 向量的内存位置不连续
- 查找给定范围内最长连续 1 的频率