using HH.WCS.Hexafluo.util;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
|
namespace HH.WCS.Hexafluo.device
|
{
|
/// <summary>
|
/// oitcp中转
|
/// </summary>
|
public class OITcpHelper
|
{
|
private static string url = Settings.OITcpSeverUrl;
|
private static string token = "";
|
private static HttpHelper apiHelper = new HttpHelper();
|
|
#region 1. 中转请求操作
|
/// <summary>
|
/// 1.1. 请求 json内容
|
/// </summary>
|
public static void JsonTransit()
|
{
|
var req = JsonConvert.SerializeObject(new JsonTransitData());
|
var feedback = apiHelper.WebPost($"{url}/api/transit/json?access_token={token}", req);
|
if (feedback != "")
|
{
|
var result = JsonConvert.DeserializeObject<JsonTransitResult>(feedback);
|
}
|
}
|
/// <summary>
|
/// 1.2. 请求 ascii内容
|
/// </summary>
|
public static StrTransitResult AsciiTransit(StrTransitData model)
|
{
|
StrTransitResult result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/transit/ascii?access_token={token}", req);
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<StrTransitResult>(feedback);
|
}
|
return result;
|
}
|
/// <summary>
|
/// 1.3. 请求 hex内容
|
/// </summary>
|
public static StrTransitResult HexTransit(StrTransitData model)
|
{
|
StrTransitResult result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/transit/hex?access_token={token}", req);
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<StrTransitResult>(feedback);
|
}
|
Console.WriteLine($"HexTransit req={req} res={feedback}");
|
return result;
|
}
|
public class BaseTransitData
|
{
|
public string host { get; set; }
|
public int port { get; set; } = 502;
|
public int timeout { get; set; } = 2000;
|
|
}
|
public class JsonTransitData : BaseTransitData
|
{
|
public object data { get; set; }
|
}
|
public class JsonTransitResult : BaseResponseModel
|
{
|
public object result { get; set; }
|
}
|
public class StrTransitData : BaseTransitData
|
{
|
public string data { get; set; }
|
}
|
public class StrTransitResult : BaseResponseModel
|
{
|
public string result { get; set; }
|
}
|
#endregion
|
|
#region 2. Modbus处理操作
|
#region 2.1. 读取输出线圈状态 01 功能
|
/// <summary>
|
/// 2.1. 读取输出线圈状态 01 功能
|
/// </summary>
|
public static RelayReadOutResult RelayReadOutPut(RelayReadOutPutModel model)
|
{
|
RelayReadOutResult result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/relay/readoutput?access_token={token}", req);
|
Console.WriteLine($"读取输出线圈状态 modbus/relay/readoutput req={req} res={feedback}");
|
Console.Write($"读取输出线圈状态 modbus/relay/readoutput req={req} res={feedback}");
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<RelayReadOutResult>(feedback);
|
}
|
return result;
|
}
|
public class RelayReadOutPutModel : BaseRequestModel
|
{
|
public int bitNum { get; set; }
|
//public object tcpModel { get; set; }
|
//public int msgNo { get; set; }
|
}
|
public class RelayReadOutResult : BaseResponseModel
|
{
|
public int[] result { get; set; }
|
}
|
#endregion
|
|
#region 2.2. 读取输入离散量 02 功能
|
/// <summary>
|
/// 2.2. 读取输入离散量 02 功能
|
/// </summary>
|
public static void RelayReadInPut(BaseRequestModel model)
|
{
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/relay/readinput?access_token={token}", req);
|
if (feedback != "")
|
{
|
var result = JsonConvert.DeserializeObject<RelayReadInPutResult>(feedback);
|
}
|
}
|
public class RelayReadInPutResult : BaseRequestModel
|
{
|
public int result { get; set; }
|
}
|
#endregion
|
|
#region 2.3. 读取输出寄存器数据 03 功能
|
/// <summary>
|
/// 2.3. 读取输出寄存器数据 03 功能
|
/// </summary>
|
public static RegisterReadOutPutResult RegisterReadOutPut(RegisterReadOutPutModel model)
|
{
|
RegisterReadOutPutResult result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/register/readoutput?access_token={token}", req);
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<RegisterReadOutPutResult>(feedback);
|
}
|
return result;
|
}
|
/// <summary>
|
/// 2.3. 读取输出寄存器数据 03 功能
|
/// </summary>
|
public RegisterReadOutPutResult RegisterReadOutPutZc(RegisterReadOutPutModel model)
|
{
|
RegisterReadOutPutResult result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/register/readoutput?access_token={token}", req);
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<RegisterReadOutPutResult>(feedback);
|
}
|
return result;
|
}
|
public class RegisterReadOutPutModel : BaseRequestModel
|
{
|
|
/// <summary>
|
/// 写入的数据
|
/// </summary>
|
public int dataNum { get; set; }
|
//public int msgNo { get; set; }
|
}
|
public class RegisterReadOutPutResult : BaseResponseModel
|
{
|
public int[] result { get; set; }
|
}
|
#endregion
|
|
#region 2.4. 读取输入寄存器数据 04 功能
|
/// <summary>
|
/// 2.4. 读取输入寄存器数据 04 功能
|
/// </summary>
|
public static void RegisterReadInPut()
|
{
|
var req = JsonConvert.SerializeObject(new RegisterReadInPutModel());
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/register/readinput?access_token={token}", req);
|
if (feedback != "")
|
{
|
var result = JsonConvert.DeserializeObject<RegisterReadOutPutResult>(feedback);
|
}
|
}
|
|
public class RegisterReadInPutModel : BaseResponseModel
|
{
|
public int[] result { get; set; }
|
}
|
#endregion
|
|
#region 2.5. 写单个输出线圈 05 功能
|
/// <summary>
|
/// 2.5. 写单个输出线圈 05 功能
|
/// </summary>
|
public static BaseResponseModel RelayWriteOutPut(RelayWriteOutPutModel model)
|
{
|
BaseResponseModel result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/relay/writeoutput?access_token={token}", req);
|
Console.WriteLine($"写单个输出线圈 modbus/relay/writeoutput req={req} res={feedback}");
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<BaseResponseModel>(feedback);
|
}
|
return result;
|
}
|
public class RelayWriteOutPutModel : BaseRequestModel
|
{
|
public bool status { get; set; }
|
}
|
#endregion
|
|
#region 2.6. 写单个输出寄存器 06 功能
|
public static BaseResponseModel RegisterWriteOutPut(RegisterWriteOutPutModel model)
|
{
|
BaseResponseModel result = null;
|
var req = JsonConvert.SerializeObject(model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/register/writeoutput?access_token={token}", req);
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<BaseResponseModel>(feedback);
|
}
|
return result;
|
}
|
public class RegisterWriteOutPutModel : BaseRequestModel
|
{
|
public int data { get; set; }
|
}
|
#endregion
|
|
#region 2.7. 写多个输出线圈 15 功能
|
public static void RelayWriteOutPutMulti()
|
{
|
var req = JsonConvert.SerializeObject(new RelayWriteOutPutModelMulti());
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/relay/writeoutputmulti?access_token={token}", req);
|
if (feedback != "")
|
{
|
var result = JsonConvert.DeserializeObject<BaseResponseModel>(feedback);
|
}
|
}
|
public class RelayWriteOutPutModelMulti : BaseRequestModel
|
{
|
public int bitNum { get; set; }
|
public int[] data { get; set; }
|
}
|
#endregion
|
|
#region 2.8. 写多个输出寄存器 16 功能
|
public static void RegisterWriteOutPutMulti()
|
{
|
var req = JsonConvert.SerializeObject(new RegisterWriteOutPutModelMulti());
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/register/writeoutputmulti?access_token={token}", req);
|
if (feedback != "")
|
{
|
var result = JsonConvert.DeserializeObject<BaseResponseModel>(feedback);
|
}
|
}
|
public static List<BaseResponseModel> RegisterWriteOutPutMultiZc(List<RegisterWriteOutPutModelMulti> Model)
|
{
|
List<BaseResponseModel> result = new List<BaseResponseModel>();
|
var req = JsonConvert.SerializeObject(Model);
|
var feedback = apiHelper.WebPost($"{url}/api/modbus/register/writeoutputmulti?access_token={token}", req);
|
if (feedback != "")
|
{
|
result = JsonConvert.DeserializeObject<List<BaseResponseModel>>(feedback);
|
}
|
return result;
|
}
|
public class RegisterWriteOutPutModelMulti : BaseRequestModel
|
{
|
public int[] data { get; set; }
|
}
|
#endregion
|
|
#endregion
|
|
|
public class ReadInPutResult : BaseResponseModel
|
{
|
public int result { get; set; }
|
}
|
public class BaseResponseModel
|
{
|
public int errCode { get; set; }
|
public string errMsg { get; set; }
|
}
|
public class BaseRequestModel
|
{
|
/// <summary>
|
/// ip地址
|
/// </summary>
|
public string host { get; set; }
|
|
/// <summary>
|
/// 写入目标设备的IP端口
|
/// </summary>
|
public int port { get; set; } = 502;
|
public int timeout { get; set; } = 1000;
|
public int deviceNo { get; set; } = 1;
|
/// <summary>
|
/// 通道
|
/// </summary>
|
public int addr { get; set; }
|
public object tcpModel { get; set; } = new { msgNo = 1 };
|
}
|
}
|
}
|