// 打开互斥量
hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, g_strNcom);
if( hMutex == NULL )
{
AfxMessageBox("open Mutex error...");
return 1;
}
// 失败
if ( WaitForSingleObject(hMutex, INFINITE) == WAIT_FAILED )
{
return 1;
}
CByteArray m_Array;
// 读出发送数据
int Count=lpData->length;
m_Array.RemoveAll();
m_Array.SetSize(Count);
for(int i=0;i
{
m_Array.SetAt(i,lpData->data[i]);
}
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·246·
// 使用串口发送数据
lpData->pComm->SetOutput(COleVariant(m_Array));
// 释放互斥量
ReleaseMutex(hMutex);
return 0;
}
(3)初始化互斥量
为对话框添加初始化互斥量的成员函数InitMutex,代码如下:
bool CSCommDlg::InitMutex()
{
g_hMutex = CreateMutex(NULL, false, g_strNcom);
if( g_hMutex == NULL )
{
AfxMessageBox("创建互斥对象错误");
return false;
}
return true;
}
(4)初始化串口
为对话框添加初始化串口的成员函数InitComm,代码如下:
bool CSCommDlg::InitComm()
{
CCommSettingDlg dlg;
if( dlg.DoModal() == IDOK )
{
m_nIndex = atoi(LPCTSTR(dlg.m_nCommID) );
}
//通信参数设置
// 设置串口号
m_Comm.SetCommPort(m_nIndex);
// 设置数据获取方式
m_Comm.SetInputMode(1);
枫叶文学网www.fywxw.com
第9 章 多线程
·247·
// 设置传输参数
m_Comm.SetSettings("9600,n,8,