串口事件不触发,

xiaoyilong19 2017-07-01 04:05:23
有一个接线是接了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
{

}
}

}
连事件断点都进不去。

请问该怎么整,重分酬谢。
...全文
418 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyilong19 2017-07-18
  • 打赏
  • 举报
回复
谢谢最后协调客户换了脚踏,程序没改。。。老脚踏拿回来了,再用诸位的方案试试。
lgstudyvc 2017-07-06
  • 打赏
  • 举报
回复
串口调试助手 调试 调试
sichuanwww 2017-07-05
  • 打赏
  • 举报
回复
引用 8 楼 zhujinqiang 的回复:
m_ComCTl.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 初始化的时候。选择: 非流控
zgl7903 2017-07-03
  • 打赏
  • 举报
回复
if(!m_bInistComCtl)return; 这之前设置断点 m_bInistComCtl 什么时候修改为TRUE的?
ckc 2017-07-03
  • 打赏
  • 举报
回复
很久没接触过这个了,好像要在初始化的时候去掉流控什么的 或者是在电脑这边的串口头上多焊几根线,让电脑认为串口一直正常
zhujinqiang 2017-07-03
  • 打赏
  • 举报
回复
m_ComCTl.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 初始化的时候。选择: 非流控
worldy 2017-07-03
  • 打赏
  • 举报
回复
RThreshold 属性必须设置为1,每个接收字符触发一次
oyljerry 2017-07-03
  • 打赏
  • 举报
回复
先用工具测试一下,看串口是否有正确事件发送
sevancheng 2017-07-03
  • 打赏
  • 举报
回复
直接搜CSerialPort 吧
homesos 2017-07-02
  • 打赏
  • 举报
回复
是参数不对?可以先用第三方的COM口测试工具,测一下数据的接收与发送。
schlafenhamster 2017-07-02
  • 打赏
  • 举报
回复
接线对不对,2-》3 3-》2 是 交叉 连接 (也就是 0 modem)

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧