From 08fead719bdbad1b748b305081cf830d31ad17e0 Mon Sep 17 00:00:00 2001 From: Gavin Date: Thu, 23 Nov 2017 23:20:07 +0800 Subject: [PATCH] fix some bugs --- SCADA/Program/DataService/ExtensionMethods.cs | 14 ++++++++------ SCADA/Program/DataService/PLCGroup.cs | 2 +- .../SiemensPLCDriver/SiemensPLCDriver.cs | 2 +- SCADA/dll/SiemensPLCDriver.dll | Bin 22528 -> 22528 bytes 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/SCADA/Program/DataService/ExtensionMethods.cs b/SCADA/Program/DataService/ExtensionMethods.cs index f27440d..d92cb40 100644 --- a/SCADA/Program/DataService/ExtensionMethods.cs +++ b/SCADA/Program/DataService/ExtensionMethods.cs @@ -1,9 +1,7 @@ using System; -using System.Text; -using System.Net; using System.Collections.Generic; -using System.Runtime.InteropServices; -using System.Data.SqlClient; +using System.Net; +using System.Text; namespace DataService { @@ -771,10 +769,12 @@ namespace DataService public static unsafe short NetToInt16(byte[] value, int startIndex) { - if (value == null || startIndex > value.Length - 2) + if (value == null || startIndex > value.Length) { throw new NotImplementedException(); } + if (startIndex > value.Length - 2) + return value[value.Length - startIndex]; fixed (byte* numRef = &(value[startIndex])) { return (short)((numRef[0] << 8) | numRef[1]); @@ -783,10 +783,12 @@ namespace DataService public static unsafe int NetToInt32(byte[] value, int startIndex) { - if (value == null || startIndex > value.Length - 4) + if (value == null || startIndex > value.Length) { throw new NotImplementedException(); } + if (startIndex > value.Length - 4) + return value[value.Length - startIndex]; fixed (byte* numRef = &(value[startIndex])) { return (int)((numRef[0] << 24) | (numRef[1] << 16) | (numRef[2] << 8) | numRef[3]); diff --git a/SCADA/Program/DataService/PLCGroup.cs b/SCADA/Program/DataService/PLCGroup.cs index cea6922..c9b4e79 100644 --- a/SCADA/Program/DataService/PLCGroup.cs +++ b/SCADA/Program/DataService/PLCGroup.cs @@ -363,7 +363,7 @@ namespace DataService ushort size = addr.DataSize; for (int i = 0; i < size; i++) { - if (rcvBytes[iByte1 + i] != cache[iByte + i]) + if (iByte1 + i < rcvBytes.Length && rcvBytes[iByte1 + i] != cache[iByte + i]) { _changedList.Add(index); break; diff --git a/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs b/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs index 36e2509..482b59f 100644 --- a/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs +++ b/SCADA/Program/SiemensPLCDriver/SiemensPLCDriver.cs @@ -784,7 +784,7 @@ namespace SiemensPLCDriver ushort size = addr.DataSize; for (int i = 0; i < size; i++) { - if (rcvBytes[iByte1 + i] != cache[iByte + i]) + if (iByte1 + i < rcvBytes.Length && rcvBytes[iByte1 + i] != cache[iByte + i]) { _changedList.Add(index); break; diff --git a/SCADA/dll/SiemensPLCDriver.dll b/SCADA/dll/SiemensPLCDriver.dll index 709ceca2df1955ee16259fed188c67b275775fa0..6ff125971d7c824f6b32d86a45eea98dfc2b568e 100644 GIT binary patch delta 309 zcmZqJz}T>XaY6_4@n>QayJZ=FOAdjF}gdkgAroPzZ2TCH$+Kgh8zbI*nZWiPaj}YcyU=ZXG zh*@Ef+-^n@3Qi6^$AbS}Y+<=$^$ne`dQ+c_nK*N)?x$n-|`fd1m z+WKwIA*am&o)YXjKtDx+Tno}5!^ptU1N2c(00To%uuHI$)~cOt40F9_ub)}XaY6^PlC0>&Zdt~66IX^a&Y8@}sLq;_$G{*nS&>O+awMZV(-;5AO^kJd z7xEdvzynA!F|aZ$*(}H;F3%V`SyNGiQEzgPqAKI_$rXwgjOQnBRFq;2-+V@qnNc;A zL6ECDhJk@gSX4|{Oxu`2kWG+BP%L61n;UCoM^xf0M}Mj A@c;k-