From f8d23dcf8d6501482db1a5180325194232afe96c Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 18 七月 2025 17:30:09 +0800 Subject: [PATCH] 封装部分业务代码,继续优化日志打印流程 --- device/ModbusFactory.cs | 154 +++++++++++++++++++++++++------------------------- 1 files changed, 77 insertions(+), 77 deletions(-) diff --git a/device/ModbusFactory.cs b/device/ModbusFactory.cs index 83a15ae..4c84a8a 100644 --- a/device/ModbusFactory.cs +++ b/device/ModbusFactory.cs @@ -21,28 +21,28 @@ // 甯哥敤鐨凪odbus鍔熻兘鐮佹柟娉� /// <summary> - /// 璇讳竴涓垨澶氫釜绾垮湀锛岃繑鍥炰竴涓猙it鐪熷亣鏁扮粍 + /// 璇讳竴涓垨澶氫釜绾垮湀,杩斿洖涓�釜bit鐪熷亣鏁扮粍 /// </summary> /// <param name="startingAddress"></param> /// <param name="quantity"></param> /// <returns></returns> bool[] ReadCoils(int startingAddress, int quantity); /// <summary> - /// 璇讳竴涓垨澶氫釜绂绘暎杈撳叆锛岃繑鍥炰竴涓猙it鐪熷亣鏁扮粍 + /// 璇讳竴涓垨澶氫釜绂绘暎杈撳叆,杩斿洖涓�釜bit鐪熷亣鏁扮粍 /// </summary> /// <param name="startingAddress"></param> /// <param name="quantity"></param> /// <returns></returns> bool[] ReadDiscreteInputs(int startingAddress, int quantity); /// <summary> - /// 鎵归噺璇诲彇鎴栧崟鐙鍙栦繚鎸佸瘎瀛樺櫒锛岃繑鍥炵殑鏄�2浣峣nt鏁扮粍 + /// 鎵归噺璇诲彇鎴栧崟鐙鍙栦繚鎸佸瘎瀛樺櫒,杩斿洖鐨勬槸32浣峣nt鏁扮粍 /// </summary> /// <param name="startingAddress"></param> /// <param name="quantity"></param> /// <returns></returns> int[] ReadHoldingRegisters(int startingAddress, int quantity); /// <summary> - /// 璇讳竴涓垨澶氫釜杈撳叆瀵勫瓨鍣紝杩斿洖涓�釜int32浣嶆暟缁�+ /// 璇讳竴涓垨澶氫釜杈撳叆瀵勫瓨鍣�杩斿洖涓�釜int32浣嶆暟缁� /// </summary> /// <param name="startingAddress"></param> /// <param name="quantity"></param> @@ -92,8 +92,8 @@ case ModbusCommunicationType.TcpSocket: return new TcpSocketCommunicator(); default: - //throw new ArgumentException("涓嶆敮鎸佺殑Modbus閫氫俊鏂瑰紡锛氳閫夋嫨EasyModbus鎴朤cpSocket"); - LogHelper.Info("涓嶆敮鎸佺殑Modbus閫氫俊鏂瑰紡锛氳閫夋嫨EasyModbus鎴朤cpSocket"); + //throw new ArgumentException("涓嶆敮鎸佺殑Modbus閫氫俊鏂瑰紡:璇烽�鎷〦asyModbus鎴朤cpSocket"); + LogHelper.Info("涓嶆敮鎸佺殑Modbus閫氫俊鏂瑰紡:璇烽�鎷〦asyModbus鎴朤cpSocket"); return null; } } @@ -127,10 +127,10 @@ _modbusClient.Connect(); if (IsConnected) { - LogHelper.Info($"杩炴帴鎴愬姛锛歿ipAddress}:{port}"); + LogHelper.Info($"杩炴帴鎴愬姛:{ipAddress}:{port}"); } else { - LogHelper.Info($"杩炴帴澶辫触锛歿ipAddress}:{port}"); + LogHelper.Info($"杩炴帴澶辫触:{ipAddress}:{port}"); } } @@ -143,10 +143,10 @@ _modbusClient?.Disconnect(); if (IsConnected) { - LogHelper.Info($"杩炴帴鎴愬姛锛歿_modbusClient.IPAddress}:{_modbusClient.Port}"); + LogHelper.Info($"杩炴帴鎴愬姛:{_modbusClient.IPAddress}:{_modbusClient.Port}"); } else { - LogHelper.Info($"杩炴帴澶辫触锛歿_modbusClient.IPAddress} : {_modbusClient.Port}"); + LogHelper.Info($"杩炴帴澶辫触:{_modbusClient.IPAddress} : {_modbusClient.Port}"); } } @@ -169,11 +169,11 @@ res = _modbusClient.ReadCoils(startingAddress, quantity); if (res.Length != 0) { //璇诲彇鎴愬姛 - LogHelper.Info($"璇诲彇鎴愬姛锛歊eadCoils:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇鎴愬姛:ReadCoils:IP:{ip},Port:{port}"); } else { //璇诲彇澶辫触 - LogHelper.Info($"璇诲彇澶辫触锛歊eadCoils:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇澶辫触:ReadCoils:IP:{ip},Port:{port}"); } } catch (Exception ex) { @@ -181,7 +181,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -196,11 +196,11 @@ res = _modbusClient.ReadDiscreteInputs(startingAddress, quantity); if (res.Length != 0) { //璇诲彇鎴愬姛 - LogHelper.Info($"璇诲彇鎴愬姛锛歊eadDiscreteInputs:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇鎴愬姛:ReadDiscreteInputs:IP:{ip},Port:{port}"); } else { //璇诲彇澶辫触 - LogHelper.Info($"璇诲彇澶辫触锛歊eadDiscreteInputs:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇澶辫触:ReadDiscreteInputs:IP:{ip},Port:{port}"); } } catch (Exception ex) { @@ -208,7 +208,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -220,24 +220,24 @@ var ip = client.IPAddress; var port = client.Port; try { - //涓�釜瀵勫瓨鍣ㄦ槸16浣嶏紝杩斿洖2涓猧nt绫诲瀷 + //涓�釜瀵勫瓨鍣ㄦ槸16浣�杩斿洖2涓猧nt绫诲瀷 res = client.ReadHoldingRegisters(startingAddress, quantity); if (res.Length != 0) { //璇诲彇鎴愬姛 - LogHelper.Info($"璇诲彇鎴愬姛锛歊eadHoldingRegisters:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇鎴愬姛:ReadHoldingRegisters:IP:{ip},Port:{port}"); } else { //璇诲彇澶辫触 - LogHelper.Info($"璇诲彇澶辫触锛歊eadHoldingRegisters:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇澶辫触:ReadHoldingRegisters:IP:{ip},Port:{port}"); } } catch (Exception ex) { - //濡傛灉璇锋眰鏁伴噺瓒呭嚭淇濇寔瀵勫瓨鍣ㄧ殑鏈�ぇ鏁版嵁琛屾暟锛屼細鎶ラ敊 + //濡傛灉璇锋眰鏁伴噺瓒呭嚭淇濇寔瀵勫瓨鍣ㄧ殑鏈�ぇ鏁版嵁琛屾暟,浼氭姤閿� LogHelper.InfoEx(ex); } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -252,11 +252,11 @@ res = client.ReadInputRegisters(startingAddress, quantity); if (res.Length != 0) { //璇诲彇鎴愬姛 - LogHelper.Info($"璇诲彇鎴愬姛锛歊eadInputRegisters:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇鎴愬姛:ReadInputRegisters:IP:{ip},Port:{port}"); } else { //璇诲彇澶辫触 - LogHelper.Info($"璇诲彇澶辫触锛歊eadInputRegisters:IP:{ip},Port:{port}"); + LogHelper.Info($"璇诲彇澶辫触:ReadInputRegisters:IP:{ip},Port:{port}"); } } catch (Exception ex) { @@ -264,7 +264,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -280,11 +280,11 @@ res = value == client.ReadCoils(coilAddress, 1)[0]; if (res) { //鍐欏叆鎴愬姛 - LogHelper.Info($"鍐欏叆鎴愬姛锛歐riteSingleCoil:IP:{ip},Port:{port}"); + LogHelper.Info($"鍐欏叆鎴愬姛:WriteSingleCoil:IP:{ip},Port:{port}"); } else { //鍐欏叆澶辫触 - LogHelper.Info($"鍐欏叆澶辫触锛歐riteSingleCoil:IP:{ip},Port:{port}"); + LogHelper.Info($"鍐欏叆澶辫触:WriteSingleCoil:IP:{ip},Port:{port}"); } } catch (Exception ex) { @@ -292,7 +292,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -308,11 +308,11 @@ res = value == client.ReadHoldingRegisters(registerAddress, 1)[0]; if (res) { //鍐欏叆鎴愬姛 - LogHelper.Info($"鍐欏叆鎴愬姛锛歐riteSingleRegister:IP:{ip},Port:{port}"); + LogHelper.Info($"鍐欏叆鎴愬姛:WriteSingleRegister:IP:{ip},Port:{port}"); } else { //鍐欏叆澶辫触 - LogHelper.Info($"鍐欏叆澶辫触锛歐riteSingleRegister:IP:{ip},Port:{port}"); + LogHelper.Info($"鍐欏叆澶辫触:WriteSingleRegister:IP:{ip},Port:{port}"); } } catch (Exception ex) { @@ -320,7 +320,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -337,11 +337,11 @@ res = values.SequenceEqual(dataRead); if (res) { //鍐欏叆鎴愬姛 - LogHelper.Info($"鍐欏叆鎴愬姛锛歐riteMultipleCoils:IP:{ip},Port:{port}"); + LogHelper.Info($"鍐欏叆鎴愬姛:WriteMultipleCoils:IP:{ip},Port:{port}"); } else { //鍐欏叆澶辫触 - LogHelper.Info($"鍐欏叆澶辫触锛歐riteMultipleCoils:IP:{ip},Port:{port}"); + LogHelper.Info($"鍐欏叆澶辫触:WriteMultipleCoils:IP:{ip},Port:{port}"); } } catch (Exception ex) { @@ -349,7 +349,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -377,7 +377,7 @@ } } else { - LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄锛屾垨瀵硅薄鏈垚鍔熻繛鎺�); + LogHelper.Info($"鏈壘鍒癕odbus璁惧瀹炰緥瀵硅薄,鎴栧璞℃湭鎴愬姛杩炴帴"); } return res; } @@ -421,16 +421,16 @@ if (quantity < 1 || quantity > 2000) throw new ArgumentException("Quantity must be between 1 and 2000"); - // 鏋勫缓璇锋眰鎶ユ枃锛�2瀛楄妭锛�+ // 鏋勫缓璇锋眰鎶ユ枃 (12瀛楄妭) byte[] request = new byte[12]; request[0] = 0x00; // 浜嬪姟ID楂樺瓧鑺�- request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺傦紙绀轰緥鍊硷級 - request[2] = 0x00; // 鍗忚ID楂樺瓧鑺傦紙鍥哄畾0锛�- request[3] = 0x00; // 鍗忚ID浣庡瓧鑺傦紙鍥哄畾0锛�- request[4] = 0x00; // 闀垮害楂樺瓧鑺傦紙鍚庣画6瀛楄妭锛�+ request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺�(绀轰緥鍊� + request[2] = 0x00; // 鍗忚ID楂樺瓧鑺�(鍥哄畾0) + request[3] = 0x00; // 鍗忚ID浣庡瓧鑺�(鍥哄畾0) + request[4] = 0x00; // 闀垮害楂樺瓧鑺�(鍚庣画6瀛楄妭) request[5] = 0x06; // 闀垮害浣庡瓧鑺� request[6] = unitIdentifier; // 鍗曞厓鏍囪瘑绗�- request[7] = 0x01; // 鍔熻兘鐮侊紙璇荤嚎鍦堬級 + request[7] = 0x01; // 鍔熻兘鐮�(璇荤嚎鍦� request[8] = (byte)(startingAddress >> 8); // 璧峰鍦板潃楂樺瓧鑺� request[9] = (byte)startingAddress; // 璧峰鍦板潃浣庡瓧鑺� request[10] = (byte)(quantity >> 8); // 鏁伴噺楂樺瓧鑺�@@ -439,19 +439,19 @@ // 鍙戦�璇锋眰 _networkStream.Write(request, 0, request.Length); - // 璇诲彇鍝嶅簲澶达紙8瀛楄妭锛�+ // 璇诲彇鍝嶅簲澶�(8瀛楄妭) byte[] responseHeader = new byte[8]; int bytesRead = _networkStream.Read(responseHeader, 0, 8); if (bytesRead != 8) throw new Exception("Invalid response header length"); - // 鏍¢獙浜嬪姟ID銆佸崗璁甀D銆佸崟鍏冩爣璇嗙 + // 鏍¢獙浜嬪姟ID,鍗忚ID,鍗曞厓鏍囪瘑绗� if (responseHeader[0] != request[0] || responseHeader[1] != request[1] || responseHeader[2] != 0x00 || responseHeader[3] != 0x00 || responseHeader[6] != unitIdentifier) throw new Exception("Invalid response header"); - // 妫�煡寮傚父鍝嶅簲锛堝姛鑳界爜 + 0x80锛�+ // 妫�煡寮傚父鍝嶅簲 (鍔熻兘鐮�+ 0x80) if (responseHeader[7] == 0x81) { int errorCode = _networkStream.ReadByte(); throw new Exception($"Modbus error. Code: {errorCode}"); @@ -459,14 +459,14 @@ else if (responseHeader[7] != 0x01) throw new Exception("Invalid function code in response"); - // 璇诲彇鏁版嵁閮ㄥ垎锛堝瓧鑺傛暟 + 瀹為檯鏁版嵁锛�+ // 璇诲彇鏁版嵁閮ㄥ垎 (瀛楄妭鏁�+ 瀹為檯鏁版嵁) byte byteCount = responseHeader[8]; byte[] responseData = new byte[byteCount]; bytesRead = _networkStream.Read(responseData, 0, byteCount); if (bytesRead != byteCount) throw new Exception("Invalid response data length"); - // 瑙f瀽绾垮湀鐘舵�锛堟瘡涓綅琛ㄧず涓�釜绾垮湀锛�+ // 瑙f瀽绾垮湀鐘舵� (姣忎釜浣嶈〃绀轰竴涓嚎鍦� bool[] coils = new bool[quantity]; for (int i = 0; i < quantity; i++) { int byteIndex = i / 8; @@ -478,16 +478,16 @@ } public bool[] ReadDiscreteInputs(int startingAddress, int quantity) { - // 鎶ユ枃缁撴瀯涓嶳eadCoils鍑犱箮鐩稿悓锛屼粎鍔熻兘鐮佹敼涓�x02 + // 鎶ユ枃缁撴瀯涓嶳eadCoils鍑犱箮鐩稿悓,浠呭姛鑳界爜鏀逛负0x02 byte[] request = new byte[12]; request[0] = 0x00; // 浜嬪姟ID楂樺瓧鑺�- request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺傦紙绀轰緥鍊硷級 - request[2] = 0x00; // 鍗忚ID楂樺瓧鑺傦紙鍥哄畾0锛�- request[3] = 0x00; // 鍗忚ID浣庡瓧鑺傦紙鍥哄畾0锛�- request[4] = 0x00; // 闀垮害楂樺瓧鑺傦紙鍚庣画6瀛楄妭锛�+ request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺�(绀轰緥鍊� + request[2] = 0x00; // 鍗忚ID楂樺瓧鑺�(鍥哄畾0) + request[3] = 0x00; // 鍗忚ID浣庡瓧鑺�(鍥哄畾0) + request[4] = 0x00; // 闀垮害楂樺瓧鑺�(鍚庣画6瀛楄妭) request[5] = 0x06; // 闀垮害浣庡瓧鑺� request[6] = unitIdentifier; - request[7] = 0x02; // 鍔熻兘鐮侊細璇荤鏁h緭鍏�+ request[7] = 0x02; // 鍔熻兘鐮�璇荤鏁h緭鍏� request[8] = (byte)(startingAddress >> 8); // 璧峰鍦板潃楂樺瓧鑺� request[9] = (byte)startingAddress; // 璧峰鍦板潃浣庡瓧鑺� request[10] = (byte)(quantity >> 8); // 鏁伴噺楂樺瓧鑺�@@ -499,7 +499,7 @@ byte[] responseHeader = new byte[8]; _networkStream.Read(responseHeader, 0, 8); - // 鏍¢獙鍜屽紓甯稿鐞嗭紙鍙傝�ReadCoils锛�+ // 鏍¢獙鍜屽紓甯稿鐞�(鍙傝�ReadCoils) if (responseHeader[7] == 0x82) // 寮傚父鍝嶅簲 { int errorCode = _networkStream.ReadByte(); @@ -525,16 +525,16 @@ if (quantity < 1 || quantity > 125) throw new ArgumentException("Quantity must be between 1 and 125"); - // 鏋勫缓璇锋眰鎶ユ枃锛�2瀛楄妭锛�+ // 鏋勫缓璇锋眰鎶ユ枃 (12瀛楄妭) byte[] request = new byte[12]; - request[0] = 0x00; // 浜嬪姟ID楂樺瓧鑺傦紙绀轰緥鍊硷級 + request[0] = 0x00; // 浜嬪姟ID楂樺瓧鑺�(绀轰緥鍊� request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺�- request[2] = 0x00; // 鍗忚ID楂樺瓧鑺傦紙鍥哄畾0锛�- request[3] = 0x00; // 鍗忚ID浣庡瓧鑺傦紙鍥哄畾0锛�- request[4] = 0x00; // 闀垮害楂樺瓧鑺傦紙鍚庣画6瀛楄妭锛�+ request[2] = 0x00; // 鍗忚ID楂樺瓧鑺�(鍥哄畾0) + request[3] = 0x00; // 鍗忚ID浣庡瓧鑺�(鍥哄畾0) + request[4] = 0x00; // 闀垮害楂樺瓧鑺�(鍚庣画6瀛楄妭) request[5] = 0x06; // 闀垮害浣庡瓧鑺� request[6] = unitIdentifier; // 鍗曞厓鏍囪瘑绗�- request[7] = 0x03; // 鍔熻兘鐮侊紙璇讳繚鎸佸瘎瀛樺櫒锛�+ request[7] = 0x03; // 鍔熻兘鐮�(璇讳繚鎸佸瘎瀛樺櫒) request[8] = (byte)(startingAddress >> 8); // 璧峰鍦板潃楂樺瓧鑺� request[9] = (byte)startingAddress; // 璧峰鍦板潃浣庡瓧鑺� request[10] = (byte)(quantity >> 8); // 鏁伴噺楂樺瓧鑺�@@ -543,19 +543,19 @@ // 鍙戦�璇锋眰 _networkStream.Write(request, 0, request.Length); - // 璇诲彇鍝嶅簲澶达紙8瀛楄妭锛�+ // 璇诲彇鍝嶅簲澶�(8瀛楄妭) byte[] responseHeader = new byte[8]; int bytesRead = _networkStream.Read(responseHeader, 0, 8); if (bytesRead != 8) throw new Exception("Invalid response header length"); - // 鏍¢獙浜嬪姟ID銆佸崗璁甀D銆佸崟鍏冩爣璇嗙 + // 鏍¢獙浜嬪姟ID,鍗忚ID,鍗曞厓鏍囪瘑绗� if (responseHeader[0] != request[0] || responseHeader[1] != request[1] || responseHeader[2] != 0x00 || responseHeader[3] != 0x00 || responseHeader[6] != unitIdentifier) throw new Exception("Invalid response header"); - // 妫�煡寮傚父鍝嶅簲锛堝姛鑳界爜 + 0x80锛�+ // 妫�煡寮傚父鍝嶅簲 (鍔熻兘鐮�+ 0x80) if (responseHeader[7] == 0x83) { int errorCode = _networkStream.ReadByte(); throw new Exception($"Modbus error. Code: {errorCode}"); @@ -563,14 +563,14 @@ else if (responseHeader[7] != 0x03) throw new Exception("Invalid function code in response"); - // 璇诲彇鏁版嵁閮ㄥ垎锛堝瓧鑺傛暟 + 瀹為檯鏁版嵁锛�+ // 璇诲彇鏁版嵁閮ㄥ垎 (瀛楄妭鏁�+ 瀹為檯鏁版嵁) byte byteCount = responseHeader[8]; byte[] responseData = new byte[byteCount]; bytesRead = _networkStream.Read(responseData, 0, byteCount); if (bytesRead != byteCount) throw new Exception("Invalid response data length"); - // 瑙f瀽瀵勫瓨鍣ㄥ�锛堝ぇ绔簭锛�+ // 瑙f瀽瀵勫瓨鍣ㄥ� (澶х搴� int[] registers = new int[quantity]; for (int i = 0; i < quantity; i++) { int offset = i * 2; @@ -587,22 +587,22 @@ // 鏋勫缓Modbus TCP璇锋眰鎶ユ枃 byte[] request = new byte[12]; - // 浜嬪姟鏍囪瘑绗︼紙鍙互绠�崟閫掑锛�+ // 浜嬪姟鏍囪瘑绗�(鍙互绠�崟閫掑) request[0] = 0x00; request[1] = 0x01; - // 鍗忚鏍囪瘑绗︼紙Modbus鍥哄畾涓�锛�+ // 鍗忚鏍囪瘑绗�(Modbus鍥哄畾涓�) request[2] = 0x00; request[3] = 0x00; - // 闀垮害瀛楁锛堝悗闈㈣繕鏈�瀛楄妭锛�+ // 闀垮害瀛楁 (鍚庨潰杩樻湁6瀛楄妭) request[4] = 0x00; request[5] = 0x06; // 鍗曞厓鏍囪瘑绗� request[6] = unitIdentifier; - // 鍔熻兘鐮侊紙4琛ㄧず璇昏緭鍏ュ瘎瀛樺櫒锛�+ // 鍔熻兘鐮�(4琛ㄧず璇昏緭鍏ュ瘎瀛樺櫒) request[7] = 0x04; // 璧峰鍦板潃 @@ -677,7 +677,7 @@ _networkStream.Write(request, 0, request.Length); - // 鍝嶅簲搴斾笌璇锋眰瀹屽叏涓�嚧锛堝洖鏄撅級 + // 鍝嶅簲搴斾笌璇锋眰瀹屽叏涓�嚧 (鍥炴樉) byte[] response = new byte[12]; int bytesRead = _networkStream.Read(response, 0, 12); if (bytesRead != 12) @@ -708,7 +708,7 @@ _networkStream.Write(request, 0, request.Length); - // 妫�煡鍥炴樉鍝嶅簲锛堝悓WriteSingleCoil锛�+ // 妫�煡鍥炴樉鍝嶅簲 (鍚學riteSingleCoil) byte[] response = new byte[12]; _networkStream.Read(response, 0, 12); if (!response.SequenceEqual(request)) @@ -722,7 +722,7 @@ if (quantity < 1 || quantity > 1968) throw new ArgumentException("Quantity must be between 1 and 1968"); - // 璁$畻闇�鐨勫瓧鑺傛暟锛堟瘡涓瓧鑺傚瓨鍌�涓嚎鍦堢姸鎬侊級 + // 璁$畻闇�鐨勫瓧鑺傛暟 (姣忎釜瀛楄妭瀛樺偍8涓嚎鍦堢姸鎬� int byteCount = (quantity + 7) / 8; byte[] coilBytes = new byte[byteCount]; @@ -735,7 +735,7 @@ } } - // 鏋勫缓璇锋眰鎶ユ枃锛�3 + 绾垮湀瀛楄妭鏁帮級 + // 鏋勫缓璇锋眰鎶ユ枃 (13 + 绾垮湀瀛楄妭鏁� byte[] request = new byte[13 + coilBytes.Length]; request[0] = 0x00; // 浜嬪姟ID楂樺瓧鑺� request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺�@@ -744,7 +744,7 @@ request[4] = (byte)((7 + coilBytes.Length) >> 8); // 闀垮害楂樺瓧鑺� request[5] = (byte)(7 + coilBytes.Length); // 闀垮害浣庡瓧鑺� request[6] = unitIdentifier; - request[7] = 0x0F; // 鍔熻兘鐮侊紙鍐欏涓嚎鍦堬級 + request[7] = 0x0F; // 鍔熻兘鐮�(鍐欏涓嚎鍦� request[8] = (byte)(startingAddress >> 8); // 璧峰鍦板潃楂樺瓧鑺� request[9] = (byte)startingAddress; // 璧峰鍦板潃浣庡瓧鑺� request[10] = (byte)(quantity >> 8); // 鏁伴噺楂樺瓧鑺�@@ -755,7 +755,7 @@ // 鍙戦�璇锋眰 _networkStream.Write(request, 0, request.Length); - // 璇诲彇鍝嶅簲锛堝浐瀹�2瀛楄妭锛�+ // 璇诲彇鍝嶅簲 (鍥哄畾12瀛楄妭) byte[] response = new byte[12]; int bytesRead = _networkStream.Read(response, 0, 12); if (bytesRead != 12) @@ -774,14 +774,14 @@ if (quantity < 1 || quantity > 123) throw new ArgumentException("Quantity must be between 1 and 123"); - // 灏唘short鏁扮粍杞崲涓哄瓧鑺傛暟缁勶紙澶х搴忥級 + // 灏唘short鏁扮粍杞崲涓哄瓧鑺傛暟缁�(澶х搴� byte[] valueBytes = new byte[quantity * 2]; for (int i = 0; i < quantity; i++) { valueBytes[i * 2] = (byte)(values[i] >> 8); valueBytes[i * 2 + 1] = (byte)values[i]; } - // 鏋勫缓璇锋眰鎶ユ枃锛�3 + 鍊煎瓧鑺傛暟锛�+ // 鏋勫缓璇锋眰鎶ユ枃 (13 + 鍊煎瓧鑺傛暟) byte[] request = new byte[13 + valueBytes.Length]; request[0] = 0x00; // 浜嬪姟ID楂樺瓧鑺� request[1] = 0x01; // 浜嬪姟ID浣庡瓧鑺�@@ -790,7 +790,7 @@ request[4] = (byte)((7 + valueBytes.Length) >> 8); // 闀垮害楂樺瓧鑺� request[5] = (byte)(7 + valueBytes.Length); // 闀垮害浣庡瓧鑺� request[6] = unitIdentifier; - request[7] = 0x10; // 鍔熻兘鐮侊紙鍐欏涓瘎瀛樺櫒锛�+ request[7] = 0x10; // 鍔熻兘鐮�(鍐欏涓瘎瀛樺櫒) request[8] = (byte)(startingAddress >> 8); // 璧峰鍦板潃楂樺瓧鑺� request[9] = (byte)startingAddress; // 璧峰鍦板潃浣庡瓧鑺� request[10] = (byte)(quantity >> 8); // 鏁伴噺楂樺瓧鑺�@@ -801,7 +801,7 @@ // 鍙戦�璇锋眰 _networkStream.Write(request, 0, request.Length); - // 璇诲彇鍝嶅簲锛堝浐瀹�2瀛楄妭锛�+ // 璇诲彇鍝嶅簲 (鍥哄畾12瀛楄妭) byte[] response = new byte[12]; int bytesRead = _networkStream.Read(response, 0, 12); if (bytesRead != 12) -- Gitblit v1.9.1