设为首页 加入收藏

TOP

.NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用(四)
2019-09-17 18:24:27 】 浏览:69
Tags:.NET Core 跨平台 串口 通讯 Windows/Linux flyfire.CustomSerialPort 使用
udRate, parity, databits, stopBits) { }
//无意义,只是因为父类的 Sp_DataReceived() 不是 public public void 开始后台监控() { Sp_DataReceived(new object(), new SerialDataReceivedEventArgs(SerialData.Eof)); } } }
using System;

namespace SerialPortTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化串口通讯服务
            SerialSerice 串口功能 = new SerialSerice();

            //显示串口列表、并让用户选择串口
            串口功能.GetSerial();
            string portname= Console.ReadLine();

            //步骤 2 
            串口功能.初始化(portname);
            串口功能.开启后台监听();
            Console.WriteLine("输入你想发送给客户端的内容,退出请输入 exit");
            //因为示例了三种写入方法,第三种方法需要转换,非数字会报错
            //实际上你可以发送如何类型的数据,就看你怎么写步骤 3 的方法
            Console.WriteLine("只能输入数字!8进制、10进制、16进制均可,请勿输入字符串");
            while (true)
            {
                string str = Console.ReadLine();
                if (str == "exit")
                    break;

                //步骤 3
                串口功能.写入(str);
            }

            Console.ReadKey();
        }
    }
}

 

为了实现串口通讯,我们把这个项目复制到别的目录,另外打开运行。即同一份代码变成两份,运行时就有两个控制台了。

 

 

 

注:你会发现,输入一条消息,会收到几条信息。那是因为笔者在写入方法那部分,给出了三个写入方式,删除2个即可。

为了便于理解,笔者使用了中文对方法进行命名。

串口通讯已经已经实现了,如何实现 Modbus 协议,跟设备(单片机、开发板之类的小设备)进行约定通讯呢~笔者的另一篇文章~

 

项目源码已经上传到 http://pan.whuanle.cn/?dir=uploads/dotnet-core-串口

8,Modbus 协议的实现例子

由于时间和篇幅问题,这里简单说一下 Modbus 和实现的示例。

Modbus 是一种通信协议,有 ASCII、RTU、TCP等实现方式,广泛应用于物联网设备、工业控制、自动化场景等。

协议的实现,由一台主机、多个从机组成,我们把它想象成智能家居吧,一台电脑是主机,空调、电视机、冰箱等是从机。那么多设备,它们只能向主机发送数据,不能直接通讯,每台设备都有其地址。

传输的数据流格式如下

(以上两张图来自互联网)

然后,我实现了Modbus协议,对要发送的消息进行检验、封装、打包成帧、接收、处理发送。

分为服务器、客户端。每个客户端都有一个地址,下面示范,

我在服务器使用了 02 04 00 01 25 26,

代表:客户端地址02,功能码:04(代表要设备要干嘛),要读取设备的温湿度数据:00 01(00 02,00 03代表读取其他数据),后面 25 26 有其他功能作用,不过笔者手里没有真实的设备,所以没对其进行实现,理解就行。

服务端向客户端(02)发送数据,功能是读取寄存器(04),然后是读取温度数据还是湿度数据(00 01 代表两个都读取),25 26( 转为10进制为 9510 ) 可以定义为 要客户端发返回 9510 条记录。

返回的2 4 0 1 25 26 BB 4B,后面两个是 CRC 检验,由于数据传输可能发送丢失或出错,使用后面两位由于检验数据是否正确接收。

上面是在控制台输入 16 进制的数,下面是 直接 输入 10 进制的数。

刚刚实习工作~愿一切顺利~~~

水平有限,文章有错请评论指出~谢谢啦~

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇.NET高级代码审计(第一课)XmlSe.. 下一篇.NET开源快速开发框架Colder发布 ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目