一 客户端端工作流程图如下所示:
二:代码实现以及详细注释:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using PCHMI;
using System.Text.Json;
using System.IO;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using Newtonsoft.Json;
using System.Windows.Forms;
using System.Text.Json.Nodes;
using NPOI.SS.Formula.Functions;
using Newtonsoft.Json.Linq;
namespace MesDemo
{
//注意:
//任务单一定要严格按照约定格式发送 否则有可能导致数据解析失败
//格式如下
/*
{ "Plan":{
"ProductModel":"81D 971 369",
"KbarCode":"81D 971 369 2022-05-18 A 002@A30321661",
"TestNum":"50"
}
}
*/
//从plc获取的存储在txt文件中的生产结果格式如下:
/*
[ {
"Number":"1",
"Result":"OK",
"With":"10",
"Height":"20"
}
{
"Number":"1",
"Result":"OK",
"With":"10",
"Height":"20"
}
]
*/
//plc中不存在工艺名称,向服务器返回信息报错,返回的格式如下:
/*
{ "Error":{
"KbarCode":"81D 971 369*2022-05-18*A*002@A30321661",
"Message":"没有该配方!"
}
}
*/
public class MesClient
{
// 添加一个字段来存储信息 方便在全局调用
public static string _productModel; //产品编码。
public static string _KbarCode; //MES 条码。
public static string _TestNum; //加工的数
public static string PlcTechName = "DT01250"; //plc存储工艺名称的地址
public static string PlcPlanCount = "DT00000"; //plc计划产量存储地址
public string ip = "192.168.6.26"; //后期根据实际ip进行更改
public int port = 8080;
private Socket clientSocket;
//连接到服务器
public void ConnectToServer()
{
try
{
clientSocket = new So