我16个一样的线程,读不同的串口,有这样的一个配置
3秒,5秒,10分钟,30分钟
我要分别在这几个时间点操作(线程1读串口1,线程2读串口2)。 在线程类(继承自CWinThread)里如何实现
3秒,5秒,10分钟,30分钟
我要分别在这几个时间点操作(线程1读串口1,线程2读串口2)。 在线程类(继承自CWinThread)里如何实现
解决方案 »
- 谁有多线程串口通信程序源码,3至少的串口 --(100相送)
- vc生成的exe可执行文件怎么样可以做成一个可安装程序?
- 高手来解决:我定义了一个结构体,如何清空里面存的数据。
- 请教:VC用StretchBlt将一张图片缩小后,然后DIVX压缩,会有明显的锯齿(或马赛克)
- TreeCtrl控件如何获得鼠标点选item的id??
- 如何得到IP地址
- 简单问题一个
- 请问如何截获API调用????? 100相送!!!!
- VC 里根据XML+XSL生成word,pdf,html文件
- 怎样备份和恢复注册表中的一个主键及其下面的子树?
- 如何将 char数组 转换为 CString?
- 熟悉TCP首部检验和的兄弟请进
在线程的run函数中,取GettickCount去时间,和上次的时间比较,符合条件就做,并记录下这个时间
{
m_evTest[uTimer].SetEvent();
} UINT ThreadTest(LPVOID lParam)
{
WaitForSingleObject(g_pThis->m_evTest[uTimer]->m_hObject, INFINITE); // uTimer是每个线程本身 的ID号,可以与timer相同 // Do something here..........
}
class CMyThread : public CWinThread
{
protected:
static DWORD WINAPI ThreadTimer(LPVOID lpVoid);
public:
int m_nElap; // 间隔时间
volatile bool m_bRun; // 控制是否继续运行
void Start(int nElap);
}DWORD WINAPI CMyThread::ThreadTimer(LPVOID lpVoid)
{
CMyThread *pThread = (CMyThread*)lpVoid;
while( pThread->m_bRun )
{
Sleep(pThread->m_nElap);
pThread->GoWork();
}
}void CMyThread::Start(int nElap)
{
m_nElap = nElap;
m_bRun = true;
CreateThread(NULL, NULL, this, ....);
}