串口事件不触发,
有一个接线是接了2,3线的串口,用原来的程序接受不到串口触发的事件,以前用4,6,8口接线,用触发开关信号,能接受到串口事件。串口是用MSCOMM32.ocx做的。
源代码如下:
//初始化串口控件
m_bInistComCtl=false;
m_ComCTl.put_CommPort(1);
m_ComCTl.put_Settings("9600,N,8,1");
m_ComCTl.put_InputMode(1);
m_ComCTl.put_InBufferSize(1024);
m_ComCTl.put_OutBufferSize(1024);
//设置串口参数,波特率,无奇偶校验,位停止位,位数据位
m_ComCTl.put_InputMode(1); // 以二进制方式检取数据
m_ComCTl.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ComCTl.put_InputLen(0); //设置当前接收区数据长度为0
try{
m_ComCTl.put_PortOpen(TRUE);
}
catch(CException *excp)
{
//ERRLOG("Com1串口打开失败");
(excp->Delete());
excp=(CException*)NULL;
}
串口能打开。
下面就是串口事件:
BEGIN_EVENTSINK_MAP(CMsCommTransDlg, CDialogEx)
ON_EVENT(CMsCommTransDlg, IDC_MSCOMM1, 1, CMsCommTransDlg::OnCommMscomm1, VTS_NONE)
END_EVENTSINK_MAP()
void CMsCommTransDlg::OnCommMscomm1()
{
// TODO: 在此处添加消息处理程序代码
// TODO: 在此处添加消息处理程序代码
if(!m_bInistComCtl)return;
if(m_ComCTl.get_CommEvent()==CMscomm1::comEvCTS &&(m_ComCTl.get_CTSHolding()==TRUE) && (m_ComCTl.get_DSRHolding()==FALSE))
{
/*AfxMessageBox("串口信号");*/
if(m_bPrepared)
{
m_bPrepared=false;
SetTimer(EVENT_COMM_PREPARE,500,NULL);
//开始采集
//postMessage
}
else
{
}
}
}
连事件断点都进不去。
请问该怎么整,重分酬谢。