MFC程序+modbus协议+modebus poll测试

2024-09-01 18:18

本文主要是介绍MFC程序+modbus协议+modebus poll测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

##1. modebus poll和modbus slave决定收发帧格式
参考博客
https://blog.csdn.net/tt094534/article/details/54928878?locationNum=11&fps=1
《Modbus软件开发实战》第63页—4.2.4借助工具软件观察和理解

####首先定义从机的发送帧
打开model slave
这里写图片描述
具体修改是直接在编辑框输入,右击格式设置为Hex(16进制),注意这里每一行代表2个字节
编辑框右击设置属性,点击 slave defi…(F8)
这里写图片描述
address 起始地址 Quantity 代表从起始位置连续的个数 这里为从0-5
View 显示方式
以上设置后之后点击上方Connencton进行发送
这里写图片描述
串口设置那一栏代表从com1发送到com2
至此发送机完毕,然后MFC程序中的代码可参照上述去写

然后主机测试

打开modbus poll 编辑框设置和slave保持一致 设置Alias 不用设置后面的值,那是接受过来的数据
这里写图片描述
设置读取起始位置和长度
这里写图片描述
连接
这里写图片描述
就可以看到发过来的数据
这里写图片描述
##2.MFC程序设计

查看所要发送的格式

在modbus poll中打开display->Comm…然后可以看到收过来的数据
这里写图片描述
Rx是收过来的数据
具体为
这里写图片描述
回传帧解析
这里写图片描述

设计发送帧

根据上文可以知道发送的数据为
Rx:2798-01 03 0C 00 00 00 0D 00 18 00 09 00 45 00 02 1F F4
其中01为地址为 03为功能码 0C为数据位长度 后面至02都为数据位(每两组代表一个指示)
代码实现时,全部把这些都带上就行
例如

	CByteArray  arraySend;//设备地址(2)+摄像头(2)+小时(2)+分钟(2)+秒(2)+宽度(2)+高度(2)+校验(2) = 16个字节int datalen = 12;BYTE bytSend[17];//发送字符串 bytSend[0] = addr;bytSend[1] = 0x03;//功能位bytSend[2] = datalen;//数据长度//数据bytSend[3] = ((camera & 0xff00) >> 8);//发送高八位  摄像头bytSend[4] = (camera & 0xff);//发送低八位bytSend[5] = ((hour & 0xff00) >> 8);//发送高八位bytSend[6] = (hour & 0xff);//发送低八位bytSend[7] = ((minute & 0xff00) >> 8);bytSend[8] = (minute & 0xff);bytSend[9] = ((sceond & 0xff00) >> 8);bytSend[10] = (sceond & 0xff);bytSend[11] = ((width & 0xff00) >> 8);bytSend[12] = (width & 0xff);bytSend[13] = ((hight & 0xff00) >> 8);bytSend[14] = (hight & 0xff);USHORT CRC = MBCRC16((UCHAR *)bytSend, 15);//CRC校验bytSend[15] = (CHAR)(CRC & 0xFF);bytSend[16] = (CHAR)((CRC & 0xFF00) >> 8);arraySend.RemoveAll();arraySend.SetSize(17);for (int i = 0; i < 17; i++){arraySend.SetAt(i, bytSend[i]);   //数据存在arraySend里面了   }m_ctrlComm.put_Output(COleVariant(arraySend));

发送时改为自动发送
就完成了要求,即符合modbus的串口通信

第一个询问码说明:
01 03 00 00 00 06 C5 C8
01为设备地址,一个子节
03为功能码,一个字节
00 00 为寄存器起始地址,两个字节
00 06 为寄存器长度,两个字节
C5 C8为校检位
相应的
返回帧
01 03 0C 00 00 00 0D 00 19 00 09 00 49 00 02 A6 F6
01为设备地址,一个字节
03为功能码,一个字节
0C为有效字节为,12, 一个字节,表示后12位为有效数据
00 00为摄像头参数 两个字节
00 0D为小时 两个字节
00 19为分钟 两个字节
00 09为秒 两个字节
00 49为宽度 两个字节
00 02为高度两个字节
A6 F6为校检位

这篇关于MFC程序+modbus协议+modebus poll测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127694

相关文章

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb