描述:
各位大侠好:
我要用mscomm通过串口从一个仪器上读数据;那个仪器有一个按钮,按下后,用超级终端可以看到发出的数据内容;
我自己用vc写的程序,加好mscomm控件并初始化后,在OnComm里面加入对应的代码;
但调试的时候,按了仪器上的按钮后,程序根本不执行OnComm函数。
我已经设置m_MSComm.SetRThreshold(1);了。
我的问题是:
是不是只要外部有数据发到串口,MSComm控件的OnComm函数就一定会捕捉对应的事件?
很郁闷!
void CRSDlg::exInitMSComm() //初始化串口
{
m_MSComm.SetCommPort(1);
m_MSComm.SetInBufferSize(1024);
m_MSComm.SetOutBufferSize(512);
if(!m_MSComm.GetPortOpen())
m_MSComm.SetPortOpen(TRUE);
m_MSComm.SetInputMode(1);
m_MSComm.SetSettings("9600,n,8,1");
m_MSComm.SetRThreshold(1);
m_MSComm.SetSThreshold(1);
m_MSComm.SetInputLen(0);
}
//手动发送数据时,OnOnComm() 有响应,并被执行
void CRSDlg::OnButtonCommand()
{
// TODO: Add your control notification handler code here
CString str;
str.Format("hello");
m_MSComm.SetOutput(COleVariant(str));
}
//串口响应函数
//调试时,仪器通过串口发送数据的按钮按下后,该函数并没有执行)
void CRSDlg::OnOnComm()
{
// TODO: Add your control notification handler code here
int Event = 0;
Event = m_MSComm.GetCommEvent();
CString str;
str.Format("%d", Event);
m_strEdit += str;
UpdateData(FALSE);
}
请大家不吝赐教!