using System; using HH.WCS.Mobox3.HaiCheng.Util.Helper; using Newtonsoft.Json; namespace HH.WCS.Mobox3.HaiCheng.Util.EquipmentCommunication { /// /// oitcp中转 /// public class OITcpHelper { private static string url = Settings.HASeverUrl; private static string token = ""; private static HttpHelper apiHelper = new HttpHelper(); #region 1. 中转请求操作 /// /// 1.1. 请求 json内容 /// public static void JsonTransit() { var req = JsonConvert.SerializeObject(new JsonTransitData()); var feedback = apiHelper.WebPost($"{url}/Controller/transit/json?access_token={token}", req); if (feedback != "") { var result = JsonConvert.DeserializeObject(feedback); } } /// /// 1.2. 请求 ascii内容 /// public static StrTransitResult AsciiTransit(StrTransitData model) { StrTransitResult result = null; var req = JsonConvert.SerializeObject(model); var feedback = apiHelper.WebPost($"{url}/Controller/transit/ascii?access_token={token}", req); if (feedback != "") { result = JsonConvert.DeserializeObject(feedback); } return result; } /// /// 1.3. 请求 hex内容 /// public static StrTransitResult HexTransit(StrTransitData model) { StrTransitResult result = null; var req = JsonConvert.SerializeObject(model); var feedback = apiHelper.WebPost($"{url}/Controller/transit/hex?access_token={token}", req); if (feedback != "") { result = JsonConvert.DeserializeObject(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 功能 /// /// 2.1. 读取输出线圈状态 01 功能 /// public static RelayReadOutResult RelayReadOutPut(RelayReadOutPutModel model) { RelayReadOutResult result = null; var req = JsonConvert.SerializeObject(model); var feedback = apiHelper.WebPost($"{url}/Controller/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(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 功能 /// /// 2.2. 读取输入离散量 02 功能 /// public static void RelayReadInPut(BaseRequestModel model) { var req = JsonConvert.SerializeObject(model); var feedback = apiHelper.WebPost($"{url}/Controller/modbus/relay/readinput?access_token={token}", req); if (feedback != "") { var result = JsonConvert.DeserializeObject(feedback); } } public class RelayReadInPutResult : BaseRequestModel { public int result { get; set; } } #endregion #region 2.3. 读取输出寄存器数据 03 功能 /// /// 2.3. 读取输出寄存器数据 03 功能 /// public static RegisterReadOutPutResult RegisterReadOutPut(RegisterReadOutPutModel model) { RegisterReadOutPutResult result = null; var req = JsonConvert.SerializeObject(model); var feedback = apiHelper.WebPost($"{url}/Controller/modbus/register/readoutput?access_token={token}", req); if (feedback != "") { result = JsonConvert.DeserializeObject(feedback); } return result; } public class RegisterReadOutPutModel : BaseRequestModel { public int dataNum { get; set; } //public int msgNo { get; set; } } public class RegisterReadOutPutResult : BaseResponseModel { public int[] result { get; set; } } #endregion #region 2.4. 读取输入寄存器数据 04 功能 /// /// 2.4. 读取输入寄存器数据 04 功能 /// public static void RegisterReadInPut() { var req = JsonConvert.SerializeObject(new RegisterReadInPutModel()); var feedback = apiHelper.WebPost($"{url}/Controller/modbus/register/readinput?access_token={token}", req); if (feedback != "") { var result = JsonConvert.DeserializeObject(feedback); } } public class RegisterReadInPutModel : BaseResponseModel { public int[] result { get; set; } } #endregion #region 2.5. 写单个输出线圈 05 功能 /// /// 2.5. 写单个输出线圈 05 功能 /// public static BaseResponseModel RelayWriteOutPut(RelayWriteOutPutModel model) { BaseResponseModel result = null; var req = JsonConvert.SerializeObject(model); var feedback = apiHelper.WebPost($"{url}/Controller/modbus/relay/writeoutput?access_token={token}", req); Console.WriteLine($"写单个输出线圈 modbus/relay/writeoutput req={req} res={feedback}"); if (feedback != "") { result = JsonConvert.DeserializeObject(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}/Controller/modbus/register/writeoutput?access_token={token}", req); if (feedback != "") { result = JsonConvert.DeserializeObject(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}/Controller/modbus/relay/writeoutputmulti?access_token={token}", req); if (feedback != "") { var result = JsonConvert.DeserializeObject(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}/Controller/modbus/register/writeoutputmulti?access_token={token}", req); if (feedback != "") { var result = JsonConvert.DeserializeObject(feedback); } } 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 { public string host { get; set; } public int port { get; set; } = 502; public int timeout { get; set; } = 1000; public int deviceNo { get; set; } = 1; public int addr { get; set; } public object tcpModel { get; set; } = new { msgNo = 1 }; } } }