【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板

从2002年就开始接触Modbus协议,以后陆续在PLC、DOS、Windows、.Net Micro Framework等系统中使用了该协议,在我以前写的一篇博文中详细记载了这一段经历,有兴趣的朋友可以看一看《我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp)》。该协议公开,精简,并且可靠,目前大部分智能仪表,智能模块和一些PLC都采用了该协议,前一段时间有位网友询问相关Modbus的问题,所以这里就以Modbus的实现来来作为.Net MF开发板的串口示例。

本示例包含两部分,一部分运行到开发板上,作为Modbus RTU Slave服务存在;另一部分典型的.Net Framework代码,实现了Modbus RTU Client端功能,可以借助开发板上的Slave服务控制开发板上的LED灯和获取按钮状态。

Slave类的实现如下(具体实现请参见示例源码):

namespace YFSoft.Modbus
{
    public class Slave
    {
        //数据区读写事件
        public event ReadDataEventHandler ReadData;
        public event WriteDataEventHandler WriteData;
        //启动Modbus服务
        public void Start(string portName, int baudRate, Parity parity);
        //停止Modbus服务
        public void Stop();
}
}

调用相对简单,代码如下:

public static void Main()
        {
            Graphics.Clear(Color.Black);
            Graphics.Print("Modbus Rtu Test\r\n");
            … …
            RtuSlave.ReadData += new ReadDataEventHandler(RtuSlave_ReadData);
            RtuSlave.WriteData += new WriteDataEventHandler(RtuSlave_WriteData);
            RtuSlave.Start("COM2", 19200, System.IO.Ports.Parity.None);
            int index = 0;
            while (true)
            {
                //leds[0].Write(!leds[0].Read());
                Graphics.FillRectangle(0, 305, 240, 15, Color.White);
                Graphics.DrawString(5, 306, (index++).ToString(), Color.Blue);
                Thread.Sleep(1000);
            }
            //RtuSlave.Stop();
  }

时间: 2024-09-01 17:46:43

【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板的相关文章

【STM32 .Net MF开发板学习-08】远程PLC读写控制

在工控项目中,PLC一般必不可少,现场控制一般以它为核心,而PC系统一般只是起到远程监控.图表和数据存储的作用.除了PLC之间,PC和PLC之间通信外,一般一些智能显示模块(如型号各异的触摸屏 HMI系统)也和PLC通信,我们就要把把承载.NET MF的系统打造成一个最简单的HMI系统,远程操控PLC. 一般国外每一个PLC厂家,其通信协议一般都是不同的,如西门子PLC的PPI/MPI.欧姆龙 PLC的HostLink.AB PLC的DF1.施奈德 PLC的Modbus等等,由于Modbus协议

mini2440 arm9-用mini2440开发板学习arm9

问题描述 用mini2440开发板学习arm9 之前买过一个mini2440的开发板,一直没时间学习,现在想开始,不知道这时候用mini2440学习arm9是不是有点过时啊 解决方案 初学者应该可以学学看,我也是菜鸟啊

【STM32 .Net MF开发板学习-18】GPRS遥控智能小车

有了Wifi间接控制智能小车的经验,很自然的想到,也可以通过GPRS远程遥控智能小车,因为从通信原理上看,二者其实没有什么本质的不同,都是基于Socket的TCP通信,其控制环节如下: 手机 ===> GPRS(TCP/IP) ===> PC ===> Zigbee(串口232/TTL) ===> 智能小车 与Wifi通信不同,要使手机连接GPRS,还得需要进行一定的编程才能完成,相关内容,我这里也不用介绍了,我以前写的博文<让智能手机和居家电脑互联互通(WM6 GPRS)&

【STM32 .Net MF开发板学习-16】Zigbee遥控智能小车

Zigbee技术目前在物联网领域和RFID一样,受关注度非常高.日前中科院上海微系统与信息技术研究所.无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628.WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.15.4g标准的验证型全集成传感网节点SoC芯片. 其实封装好的Zigbee模块,使用起来和操作串口一样,特别是我们把其通信模式设置为透明传输模式,这时候我们已经感觉不到是在用Zigbee模块,而觉得是

【STM32 .Net MF开发板学习-15】红外遥控智能小车

我前段时间写了<用PWM驱动智能小车>和<红外遥控器编码识别>两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车. 在<红外遥控器编码识别>中,我们用面包板搭建简单的电路,来验证红外接收信号,但是放在小车上是不行的,相关器件我们需要进行焊接,最终完成图如下. 开发板学习-15]红外遥控智能小车-">我们把智能小车和红外板拼装在一起,最终完成图如下:

【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)

选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 开发板学习-11]步进电机控制(非PWM模式)-">四相八拍:A->AB->B ->BC ->C ->CD ->D ->DA 其A.B.C.D指的是uln2003芯片驱动板的1N1.1N2.1N3.1N4,波形在上表示有输入信号,波形在下表示无输入信号. 我们采用红牛开发板进行步进电机控制,为了便于接线,我们需

开发和部署Pocket PC安装程序

应用Microsoft .NET Compact Framework 1.0 Microsoft Visual Studio .NET 2003 概要 了解如何创建独立的 .msi 文件,该文件从桌面运行以便将应用程序安装到不同的 Pocket PC 设备上.开发过程是自动化的,所以能轻松创建和打包所需组件到一个 .msi 文件.示例代码用 C# 和 VB.NET 语言编写. 内容提要 概述 部署 卸载 开发 开发过程自动化 概述 下面所列为开发和部署 Pocket PC 应用程序的要点: Po

安卓软件开发需要学习那些编程语言

 开发需要学习那些编程语言-"> 一.编程语言的学习 安卓应用软件开发中有很多的编程语言可以使用,所以应该重点学习以下几种编程语言. ① C/C++语言. C语言是一种结构化语言.它层次清晰,便于按模块化方法安排程序,易于调试和保护.它的功用丰盛.表达力强.运用活络便当.运用面广.政策程序高.可植入性好,既有高级语言的特征,又有低级语言的许多特征,适宜作为系统描绘语言,既能够用来编写系统软件,也能够用来编写运用软件. ② Java语言.以Java语言是安卓应用软件开发的基础语言,首先把握面

iOS开发:学习笔记—变量、属性、方法、实现

  1.代码说明: Person.h 开发:学习笔记-变量.属性.方法.实现-"> Person.h #import @interface Person : NSObject { int age,sex;//变量的定义 int height,width; } @property int age,sex;//属性的定义 @property char height; //-(void) setAge; -(int) setAge1 :(int)a; -(int) setWH :(int)w :