当前位置: 首页 > wzjs >正文

泉州比较好的网站开发建设公司网页设计个人主页模板

泉州比较好的网站开发建设公司,网页设计个人主页模板,网站建设后端工程师岗位职责,仙游有人做网站上一篇,我们读写TCP-S7基本辅助类已完成, C#使用TCP-S7协议读写西门子PLC(一)-CSDN博客 这里,我们开始进行读写西门子PLC, 西门子PLC作为Socket通信的服务端【TCP-Server】 在读写PLC之前,我们先进行Socket-Client程序编写,用于连接TCP服务端【也就是西门子PLC】,为…

上一篇,我们读写TCP-S7基本辅助类已完成,

C#使用TCP-S7协议读写西门子PLC(一)-CSDN博客

这里,我们开始进行读写西门子PLC,

西门子PLC作为Socket通信的服务端【TCP-Server】

在读写PLC之前,我们先进行Socket-Client程序编写,用于连接TCP服务端【也就是西门子PLC】,为了方便进行,我们使用部分类partial的方式【当然使用父子继承类亦可】,

新建类文件SiemensS7ProtocolUtil.cs

SiemensS7ProtocolUtil类是部分类,需使用关键字partial

关键的几个函数

(1)连接指定的服务端

public OperateResult<Socket> ConnectPlc(IPEndPoint endPoint, int timeout = 3000) 

(2)发送字节数组读写命令并等待服务端反馈结果报文【定长报文】
返回的数据报文的前四个字节代表消息头Header 【指令头报文 03 00 00 1E 前两个0x0300是固定,第三第四 0x001E就是30个字节】

public OperateResult<byte[]> SendDataAndWaitResult(Socket socket, byte[] sendBuffer)

(3)接收一条完整的数据,使用异步接收完成,包含了指令头信息

    第一次只接收4个字节,用于校验指令头并获取后续接收的字节数【总字节个数-4】
    第二次接收剩余字节,就是【总字节个数-4】
    将两次接收的数据拼接到一起,接收反馈数据才完成

private OperateResult<byte[]> ReceiveMessage(Socket socket, int timeout)

源程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace PlcSiemesS7Demo
{/// <summary>/// 西门子PLC的S7通信,基本Socket-Client封装/// 主要方法:///  (1).ConnectPlc(IPEndPoint endPoint, int timeout = 3000) ///  (2).OperateResult&lt;byte[]&gt; SendDataAndWaitResult(Socket socket, byte[] sendBuffer)/// </summary>public partial class SiemensS7ProtocolUtil{/// <summary>/// 西门子PLC型号,默认S1500/// </summary>SiemensPlcCategory SiemensPlcCategory { get; set; } = SiemensPlcCategory.S1500;private bool isConnected = false;/// <summary>/// 连接PLC的IP地址/// </summary>public string IpAddress { get; set; }/// <summary>/// 连接PLC的端口,默认102/// </summary>public int Port { get; set; } = 102;/// <summary>/// 连接或接收数据超时时间/// </summary>public int Timeout { get; set; } = 3000;/// <summary>/// 通讯类的核心套接字/// </summary>public Socket CoreSocket = null;/// <summary>/// 是否连接PLC并且握手两次成功/// </summary>public bool IsConnected {get {return CoreSocket != null && isConnected;}}/// <summary>/// 记录日志事件/// </summary>public event Action<string> RecordLogEvent;/// <summary>/// 连接指定的服务端,如果连接成功,返回Socket对象/// </summary>/// <param name="endPoint"></param>/// <param name="timeout"></param>/// <returns></returns>public OperateResult<Socket> ConnectPlc(IPEndPoint endPoint, int timeout = 3000) {this.IpAddress = endPoint.Address.ToString();this.Port = endPoint.Port;this.Timeout = timeout;OperateResult<Socket> operateResult = new OperateResult<Socket>();Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);socket.ReceiveTimeout = timeout;ManualResetEvent connectDone = new ManualResetEvent(false);StateObject state = new StateObject();try{state.WaitDone = connectDone;state.WorkSocket = socket;socket.BeginConnect(endPoi
http://www.dtcms.com/wzjs/415738.html

相关文章:

  • 权威的深圳网站推广seo的基本工作内容
  • 百度关键词优化公司哪家好谷歌优化师
  • aspcms 网站标签调用semir是什么牌子
  • 东莞市阳光网首页郑州seo软件
  • 手机app界面设计模板图片seo优化网站查询
  • 政府网站建设先进材料保健品的营销及推广方案
  • 中文网站做google广告怎么样网络营销策划书ppt
  • j2ee做的网站线上线下整合营销方案
  • 网站开发技术的发展流程图高级seo是什么职位
  • 宣城网站开发专业制sem推广优化
  • 网易企业邮箱注册申请免费seo全网优化指南
  • 怎么在备案号添加网站google中文搜索引擎
  • 网站制作工作室制作平台谷歌浏览器下载电脑版
  • 南通旅游网站建设福建seo推广方案
  • 西宁房地产网站建设跨界营销案例
  • 相亲网站策划书课程培训
  • 佛山最好的网站建设企业网站建设的基本流程
  • 代做毕业设计网站有哪些卖网站链接
  • 郴州建设工程信息网站独立站seo怎么做
  • qq网站登录入口宁波seo网络推广优化价格
  • 网页编辑的软件工具包括惠州抖音seo策划
  • 个人做网站需要备案吗推广链接点击器安卓版
  • 濮阳做网站 汉狮网络公司网站如何制作设计
  • 学做电商的网站网络营销推广是做什么的
  • 做网站用什么语言简单制作企业网站的公司
  • 外贸自己做网站google官网下载安装
  • 网页游戏网站hpjy企业培训机构排名
  • 苏州网站建设公司电话网站竞价推广都有哪些
  • 做数码后期上数码网站百度登录入口百度
  • 威海网络推广公司福建搜索引擎优化