科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件RS-232-C端口实时监控软件的设计实现

RS-232-C端口实时监控软件的设计实现

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了在Microsoft Visual C++ 6.0环境下对RS-232-C串行端口进行编程,以及后台监控

作者:郎锐 来源:yesky 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
(四) 控制命令的发送

  控制命令可以从对话条上的编辑框获取,然后就可以通过写文件形式从端口发送出去,这部分实现起来较简单,也牵扯不到线程等技术。主要的代码主要有:

……
file://从对话条获取命令行
nRead=m_wndDlgBar.GetDlgItemText(IDC_EDIT_SEND,buf,500);
file://向端口发送命令
if(nRead>0)
{
buf[nRead]=0x0d;
buf[nRead+1]=0x00;
::WriteFile(g_hCom,buf,nRead+1,&dwActWrite,NULL);
}
……

  (五) 监测信息的显示

  本程序选择了列表视图作为数据的显示途径。为了能及时的将接收到的数据反馈给监控者,在视类中通过定时器完成定时刷新的功能,可以在视类的OnCreate() 函数里用SetTimer(……)函数在程序开始执行时打开定时器,在OnDestroy()里用KillTimer(……)函数在程序退出前先关闭定时器。在定时器消息 WM_TIMER的响应函数里完成向列表控件添加最新接收到的信息。主要语句有:

……
file://获取列表视相关的列表空间的句柄
CListCtrl &ListCtrl=GetListCtrl();
file://列表有两列:收到字符的时间和对应的信息
CTime t = CTime::GetCurrentTime();
CString szTemp;
szTemp.Format("%02d:%02d:%02d",t.GetHour(),t.GetMinute(),t.GetSecond());
file://向列表添加信息
int nIndex=ListCtrl.InsertItem(0, szTemp);
if(-1!=nIndex)
{
m_Buf[m_nCurPoint]=0;
ListCtrl.SetItemText(nIndex,1,LPTSTR(m_Buf));
}
……

  四、 调试与检测

  现在程序已经写完,可以编译运行。我们最好先检验一下机器串口是否能正常工作,可用DOS下的Comdebug程序检查。在确认串口工作正常后,如果条件允许最好同另一台计算机或外设相连,进行检测,如笔者用的是一台高频段数传电台。如果只有一台计算机也可以进行简单的测试:将计算机串口的第2脚和第3脚短接,即自己发送、接收数据。如果接有外设,当有采集到的数据送到端口时就会在列表中将时间和信息内容记录下来,也可以在对话条中输入命令来控制外设的工作状态,完全具备实时监控软件所需的功能。

  小结:

  串行通讯在通讯领域被广泛应用,标准的RS-232-C接口已成为计算机、外设、交换机和许多通讯设备的标准接口。计算机与计算机、计算机与外设等都可以通过RS-232-C接口进行方便的连接,以实现监视、控制外设和传输数据等目的。对于其他类型的串口通讯程序本文所介绍的方法也是值得借鉴的。本程序由
Microsoft Visual C++ 6.0编译、在Windows 98下运行通过。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章