环境VC2008
功能:串口Mscomm通讯,收发字符
1. 初始化内容:
if (!Mscomm)
{
MessageBoxA(NULL,("串口输入错误,请检查串口通讯实例"),NULL,NULL);
return true;
}
Mscomm->put_CommPort(PortNum);//com1
if(Mscomm->get_PortOpen())
{
MessageBoxA(NULL,("串口已打开,请先关闭"),NULL,NULL);
return false;
}
Mscomm->put_InBufferSize(1024);
Mscomm->put_OutBufferSize(512);
if(!Mscomm->get_PortOpen())
{
Mscomm->put_PortOpen(TRUE);
MessageBox(NULL,("串口打开成功"),"成功",NULL);
}
else
MessageBox(NULL,("无法打开串口端口"),NULL,NULL);
// m_mscomm1.SetSettings(chSet);//"4800,n,8,1"
Mscomm->put_Settings("9600,e,7,2");
Mscomm->put_InputMode(Mscomm->comInputModeText);//字符检取数据
Mscomm->put_RThreshold(1);//触发事件字节数
Mscomm->put_InputLen(0);//全部读完
2. oncomm事件响应代码出错:
int CommEvent=Mscomm->get_CommEvent();
if(CommEvent == 2)
{
COleVariant varInput;//VARIANT
COleSafeArray sfarrInput;
static long len,k;
static CString strTemp;
len = Mscomm->get_InBufferCount();
varInput = Mscomm->get_Input();
//sfarrInput.Attach(varInput);//试后同样出错
sfarrInput = varInput;//错误出现,定位于COleSafeArray中重载的"="
//后续省略
}
3. 错误内容:
Assert出错,定位到MFC封装的函数中:
COleSafeArray&COleSafeArray::operator=(const VARIANT & varSrc)
{
ASSERT (varSrc.vt & VT_ARRAY); //varSrc.vt =8,本句出错
AfxCheckError(::VariantCopy(this,(LPVARIANT)&varSrc));
return *this;
}
4. 本程序,原来若初始化InputMode为二进制数据时,成功运行,没有错误。但是初始化为文本时出错。
原因不明。求教。另外因本程序传递的是字符。怎么办才对?
功能:串口Mscomm通讯,收发字符
1. 初始化内容:
if (!Mscomm)
{
MessageBoxA(NULL,("串口输入错误,请检查串口通讯实例"),NULL,NULL);
return true;
}
Mscomm->put_CommPort(PortNum);//com1
if(Mscomm->get_PortOpen())
{
MessageBoxA(NULL,("串口已打开,请先关闭"),NULL,NULL);
return false;
}
Mscomm->put_InBufferSize(1024);
Mscomm->put_OutBufferSize(512);
if(!Mscomm->get_PortOpen())
{
Mscomm->put_PortOpen(TRUE);
MessageBox(NULL,("串口打开成功"),"成功",NULL);
}
else
MessageBox(NULL,("无法打开串口端口"),NULL,NULL);
// m_mscomm1.SetSettings(chSet);//"4800,n,8,1"
Mscomm->put_Settings("9600,e,7,2");
Mscomm->put_InputMode(Mscomm->comInputModeText);//字符检取数据
Mscomm->put_RThreshold(1);//触发事件字节数
Mscomm->put_InputLen(0);//全部读完
2. oncomm事件响应代码出错:
int CommEvent=Mscomm->get_CommEvent();
if(CommEvent == 2)
{
COleVariant varInput;//VARIANT
COleSafeArray sfarrInput;
static long len,k;
static CString strTemp;
len = Mscomm->get_InBufferCount();
varInput = Mscomm->get_Input();
//sfarrInput.Attach(varInput);//试后同样出错
sfarrInput = varInput;//错误出现,定位于COleSafeArray中重载的"="
//后续省略
}
3. 错误内容:
Assert出错,定位到MFC封装的函数中:
COleSafeArray&COleSafeArray::operator=(const VARIANT & varSrc)
{
ASSERT (varSrc.vt & VT_ARRAY); //varSrc.vt =8,本句出错
AfxCheckError(::VariantCopy(this,(LPVARIANT)&varSrc));
return *this;
}
4. 本程序,原来若初始化InputMode为二进制数据时,成功运行,没有错误。但是初始化为文本时出错。
原因不明。求教。另外因本程序传递的是字符。怎么办才对?