串口触发不了OnComm事件解决办法
串口触发不了OnComm事件
我编的串口程序不能触发OnComm事件
我用其它程序试过,可以一切正常,也就是说我的硬件部分是正常的
我的程序是
1)添加Active X,并拖到对话框中,IDC_MSCOMM1;
2)在MFC ClassWizard中将IDC_MSCOMM1绑定到m_MSComm;
3)初始化,抄袭网上的代码:
if(m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
{
m_MSComm.SetPortOpen(FALSE);
}
m_MSComm.SetCommPort(1); //选择COM1
m_MSComm.SetInBufferSize(1024); //接收缓冲区
m_MSComm.SetOutBufferSize(1024);//发送缓冲区
m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_MSComm.SetInputMode(1);//以二进制方式读写数据
m_MSComm.SetRThreshold(3);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
m_MSComm.SetSettings( "9600,n,8,1 ");//波特率9600无检验位,8个数据位,1个停止位
if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
m_MSComm.SetPortOpen(TRUE);//打开串口
else
m_MSComm.SetOutBufferCount(0);
4)在MFC ClassWizard中添加OnComm事件,为方便测试在OnComm事件中添加
AfxMessageBox( "shgfdhdgj ");
结果就是弹不出消息对话框,小弟非常着急,望各位大哥指点!谢谢
------解决方案--------------------
m_MSComm.SetRThreshold(3);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
你确保下位机向上位机发送了3个以上字符吗?
我编的串口程序不能触发OnComm事件
我用其它程序试过,可以一切正常,也就是说我的硬件部分是正常的
我的程序是
1)添加Active X,并拖到对话框中,IDC_MSCOMM1;
2)在MFC ClassWizard中将IDC_MSCOMM1绑定到m_MSComm;
3)初始化,抄袭网上的代码:
if(m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
{
m_MSComm.SetPortOpen(FALSE);
}
m_MSComm.SetCommPort(1); //选择COM1
m_MSComm.SetInBufferSize(1024); //接收缓冲区
m_MSComm.SetOutBufferSize(1024);//发送缓冲区
m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_MSComm.SetInputMode(1);//以二进制方式读写数据
m_MSComm.SetRThreshold(3);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
m_MSComm.SetSettings( "9600,n,8,1 ");//波特率9600无检验位,8个数据位,1个停止位
if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
m_MSComm.SetPortOpen(TRUE);//打开串口
else
m_MSComm.SetOutBufferCount(0);
4)在MFC ClassWizard中添加OnComm事件,为方便测试在OnComm事件中添加
AfxMessageBox( "shgfdhdgj ");
结果就是弹不出消息对话框,小弟非常着急,望各位大哥指点!谢谢
------解决方案--------------------
m_MSComm.SetRThreshold(3);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
你确保下位机向上位机发送了3个以上字符吗?