## **PanaCIM松下扣料机服务**
#### **项目介绍**
生产车间拥有松下扣料机设备,需要采集读取多个送下设备生产报文,数据用于MES WMS计算生产排产和报表等功能。
#### **工作内容**
搭建TCP Server框架,并在现场调通设备通信。
#### **技术栈**
C# .NET Core TCP通信框架: DotNetty
#### **成果**
目前在江苏天宝汽车电子有限公司生产服务器局域网运行。
#### **难点**
该程序将会启用一个TCP服务器,车间内的松下设备会是客户端全部与服务器进行连接,同时不断发送XML报文。需要将XML报文拼成一个完整的报文发送到接下来的Channel进行处理。
再此期间需要编写解码器应对报文的沾包,断包,多包等问题。
相关:https://cybersicko.net/article/25.html
#### **代码片段(解码器)**
```C#
using DotNetty.Buffers;
using DotNetty.Codecs;
using DotNetty.Transport.Channels;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace He3.PanaCIM.SocketServer.Handler
{
///
/// 解码
///
public class DecoderHandler : ByteToMessageDecoder
{
private static log4net.ILog log = log4net.LogManager.GetLogger("Log.DecoderHandler");
private IByteBuffer byteBuffer = ByteBufferUtil.DefaultAllocator.Buffer();
protected override void Decode(IChannelHandlerContext context, IByteBuffer input, List