废话不多说,直入主题!

我们的mscomm控件实现plc通信,主要分三步走:

(一)mscomm控件下载,注册

(1)可以百度搜索下载mscomm控件

(2)如果觉得麻烦可以在我上传的资源处下载,地址:https://download.csdn.net/download/u012839256/10677537

注册方法可参照https://blog.csdn.net/u013457167/article/details/45488661的第二种方法,亲测可用。

(3)注册完成之后,可以通过在MFC界面,右击,选择【插入ActiveX控件】,从中选择【Microsoft Communication Control,version 6.0】,点击确定,会看到界面上出现一个【电话图标】,那么我们的控件就成功插入了。

(4)(可选)如果插入的控件出现白边的话,我们可以通过点击选择控件,然后右击【编辑控件】,再点击控件的空白处,然后白边就消失了,是不是很神奇!

(二)MFC界面绘制,参数定义

例如这个窗口,左上角是【输入框】,输入信息后点击【发送】按钮,【接收框】显示接收到的指令。

(1)分别给【输入框】和【接收框】添加一个变量,变量名分别为 m_strTXData 和 m_strRXData 。

添加过程(输入框):点击选中【输入框】,右击【添加变量】,在变量名出添加 m_strTXData ,【类别】选择【Value】,确定。

(三)具体代码实现

我们这里用的是欧姆龙PLC,通过MFC的mscomm控件实现通讯,指令采用FCS校验,发送指令为@00RR0100000140*,然后通过代码给加一个结束符\CR,组成@00RR0100000140*\CR,接受到的有电位变化的指令为@00RR00000141*\CR,无电位变化的指令为@00RR00000040*\CR

(1)获取编辑框数据并加上相应的结束符

CString mstr = m_strTXData;
BYTE commstr[17];
memcpy(commstr,mstr.GetBuffer(mstr.GetLength()),mstr.GetLength());
commstr[17] = 13;

13 为 \CR 的ASCII码。

(2)转化成相应的格式后,通过以下语句进行通讯(发送数据和读取数据)

CByteArray cbaArrayInsA;                    //进行格式转换
cbaArrayInsA.RemoveAll();
for(int nIndex = 0;nIndex<17;++nIndex)
{cbaArrayInsA.Add(commstr[nIndex]);
}
m_ctrlComm.put_Output(COleVariant(cbaArrayInsA));//将数据发送到缓冲区
inputdata1 = m_ctrlComm.get_Input();//读取缓冲区数据

(3)接收框显示

inputdata2 = inputdata1;
for(long j = 0;j<15;++j)
{inputdata2.GetElement(&j,inputdata+j);
}
CString *cstrTemp =new CString((char*)inputdata, 15);
m_strRXData = *cstrTemp;

由于接收框的内容为CString类型,因此需要类型转换,然后再输出显示。

(4)如果需要多次发送和接收指令,则可以通过:while 和 ontimer 来实现

注:如果出现dll方面错误,请将TIS_UDSHL11d.dll复制到相应项目的Debug下。TIS_UDSHL11d.dll的获取依然可以通过我的共享资源和百度两种方式获取。

终于,我们实现了欧姆龙plc,基于FCS校验的MFC上位机通信。

MFC使用mscomm控件实现plc通信相关推荐

  1. VS2008下用MFC 的MSComm控件编写串口程序

    可以在:http://download.csdn.net/detail/plutus_lee/4525446 下载详细文档. 首先感谢网络资源吧,作为一个自动化专业出身的,不懂串口实在让我有点无奈,本 ...

  2. MFC串口通信(二)——使用MSComm控件实现串口通信

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kangshuaibing/articl ...

  3. 在 Wi ndows,MSComm控件在中文Wi的ndows下的通信问题与处理方法.doc

    MSComm控件在中文Wi的ndows下的通信问题与处理方法 MSComm控件在中文Windows下的通信问题与处理方法 摘 要VB 5.0/6.0的MSComm通信控件提供了一系列标准通信命令的接口 ...

  4. Windows串口通信有关的MSComm控件

    问题描述:一般单片机.ARM.FPGA一类的板子基本都会带有RS232串口,因为协议简单,而且成熟,有许多现成的东西可以借鉴使用.在上位机通过串口获取下位机传来的信息或数据,Windows下一般有(1 ...

  5. vc2010串口通信(使用mscomm控件)

    1.下载mscomm控件: (下载地址:http://download.csdn.net/detail/tianhen791/4023983) 2.安装注册控件:下载完成后解压->点击setup ...

  6. VC基于MSCOMM控件串口通讯

    在mfc中进行串口通讯最简单的方法莫过于在对话框中使用MSCOMM控件了,MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem). 还可以发送命 ...

  7. MSComm控件过程中内存溢出和GetOneDimSize出错的问题

    MSComm控件过程中内存溢出和GetOneDimSize出错的问题 现在做的一个项目需要实现上位机和单片机的串口通信,为了方便,使用了MSComm控 件,但写程序时在处理接收数据遇到了问题,程序可以 ...

  8. VC++ 6.0之MSComm控件安装、使用

    Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控 ...

  9. 解决使用MSComm控件过程中内存溢出的问题

    现在做的一个项目需要实现上位机和单片机的串口通信,为了方便,使用了MSComm控件,但写程序时在处理接收数据遇到了问题,程序可以编译通过,但运行的过程中,程序只要接收到串口发来的数据,就会弹出内存溢出 ...

最新文章

  1. swoole 内存Memory
  2. Java synchronized 实现生产者-消费者模型
  3. python ctypes 回调函数_Python ctypes中具有自定义类型的回调
  4. 四十一、ETL工具kettle输出步骤
  5. 一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...
  6. Java正则表达式较验手机号、邮箱
  7. firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码...
  8. php 转化js数组字符串,js数组怎么转为字符串
  9. 在河北当中学老师用不用考计算机,想当教师没编制?两类教师不用考,直接进编制...
  10. python批量打印mathcad_全能批量打印工具-兼容所有打印机
  11. C语言开发七彩连珠游戏,七彩连珠游戏介绍 七彩连珠单机版运行及玩法介绍
  12. echart渲染深圳地图
  13. 电脑连接热点无internet访问权限_Win10连接wifi后显示无internet访问权限如何解决...
  14. “大众摄影”“北外亚非学院”等网站被挂马
  15. 菜鸟好文推荐(七)——他改了密码,姑娘说了“Yes, I do”
  16. 用了这么多年iPhone,你知道包装盒里为何会有两张贴纸?看完涨知识
  17. python训练模型、如何得到模型训练总时长_【绝对干货】机器学习模型训练全流程!...
  18. javaweb实现邮箱验证码
  19. 在背景色和背景图片同时存在的情况下,为什么还要设置背景色?
  20. CSS第二部分——网页布局三大核心

热门文章

  1. 【统计类知识】区间估计(置信区间)、假设检验(两类错误、P值)
  2. 高完整性系统工程(三): Logic Intro Formal Specification
  3. Spark 3.0.1环境搭建(stand alone模式)
  4. 数字电压电流表VCB
  5. ffmpeg 调整相片大小_FFmpeg命令 ---- 封装和图片转换
  6. linux gitlab 9 邮件不发送,GitLab电子邮件通知不发送
  7. cmd命令提示符中,如何清屏
  8. PowerBI开发 第九篇:修改查询
  9. c++简单排序算法(冒泡、选择以及调用algorithm中的sort函数)
  10. 二手车保值率分析预测