|
|
|
|
@ -44,6 +44,7 @@ public class InovanceImpl:IPlc
|
|
|
|
|
_stringChange = stringChange;
|
|
|
|
|
|
|
|
|
|
this.inovanceTcp = new InovanceTcpNet();
|
|
|
|
|
this.inovanceTcp.Series = InovanceSeries.H3U;
|
|
|
|
|
this.inovanceTcp.ConnectTimeOut = 2000;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -166,56 +167,7 @@ public class InovanceImpl:IPlc
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OperateResult operateResult = new OperateResult();
|
|
|
|
|
int s = 0;
|
|
|
|
|
string[] strArry = address.Split('.');
|
|
|
|
|
|
|
|
|
|
//先读取整个块的内容
|
|
|
|
|
var info = inovanceTcp.ReadInt16(strArry[0]);
|
|
|
|
|
if (info.Content == 0)
|
|
|
|
|
{
|
|
|
|
|
int length = _stringChange.ParseToInt(strArry[1]) + 1;
|
|
|
|
|
string[] array = new string[length];
|
|
|
|
|
for (int i = 0; i < length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (i == _stringChange.ParseToInt(strArry[1]))
|
|
|
|
|
{
|
|
|
|
|
array[i] = value.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
array[i] = "0";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//反转
|
|
|
|
|
Array.Reverse(array);
|
|
|
|
|
byte[] buffer = new byte[array.Length];
|
|
|
|
|
string result = "";
|
|
|
|
|
for (int i = 0; i < array.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
result += (byte)Convert.ToInt32(array[i], 16);
|
|
|
|
|
}
|
|
|
|
|
s = Convert.ToInt32(result.Trim(), 2);
|
|
|
|
|
operateResult = inovanceTcp.Write(strArry[0], (ushort)s);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var inf2 = Convert.ToString(info.Content, 2);
|
|
|
|
|
string[] infoArray = new string[inf2.Length];
|
|
|
|
|
for (int i = 0; i < inf2.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
infoArray[i] = inf2.Substring(i, 1);
|
|
|
|
|
}
|
|
|
|
|
Array.Reverse(infoArray);
|
|
|
|
|
infoArray[_stringChange.ParseToInt(strArry[1])] = value.ToString();
|
|
|
|
|
string result = "";
|
|
|
|
|
foreach (var item in infoArray)
|
|
|
|
|
{
|
|
|
|
|
result = result + item;
|
|
|
|
|
}
|
|
|
|
|
s = Convert.ToInt32(result.Trim(), 10);
|
|
|
|
|
operateResult = inovanceTcp.Write(strArry[0], s);
|
|
|
|
|
}
|
|
|
|
|
OperateResult operateResult = inovanceTcp.Write(address, value);
|
|
|
|
|
if (!operateResult.IsSuccess)
|
|
|
|
|
{
|
|
|
|
|
throw new InvalidOperationException($"根据地址:{address};写入int16数据失败:{operateResult.Message}");
|
|
|
|
|
@ -226,6 +178,68 @@ public class InovanceImpl:IPlc
|
|
|
|
|
{
|
|
|
|
|
throw new InvalidOperationException($"根据地址:{address};写入int16数据异常:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// OperateResult operateResult = new OperateResult();
|
|
|
|
|
// int s = 0;
|
|
|
|
|
// string[] strArry = address.Split('.');
|
|
|
|
|
//
|
|
|
|
|
// //先读取整个块的内容
|
|
|
|
|
// var info = inovanceTcp.ReadInt16(strArry[0]);
|
|
|
|
|
// if (info.Content == 0)
|
|
|
|
|
// {
|
|
|
|
|
// int length = _stringChange.ParseToInt(strArry[1]) + 1;
|
|
|
|
|
// string[] array = new string[length];
|
|
|
|
|
// for (int i = 0; i < length; i++)
|
|
|
|
|
// {
|
|
|
|
|
// if (i == _stringChange.ParseToInt(strArry[1]))
|
|
|
|
|
// {
|
|
|
|
|
// array[i] = value.ToString();
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// array[i] = "0";
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// //反转
|
|
|
|
|
// Array.Reverse(array);
|
|
|
|
|
// byte[] buffer = new byte[array.Length];
|
|
|
|
|
// string result = "";
|
|
|
|
|
// for (int i = 0; i < array.Length; i++)
|
|
|
|
|
// {
|
|
|
|
|
// result += (byte)Convert.ToInt32(array[i], 16);
|
|
|
|
|
// }
|
|
|
|
|
// s = Convert.ToInt32(result.Trim(), 2);
|
|
|
|
|
// operateResult = inovanceTcp.Write(strArry[0], (ushort)s);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// var inf2 = Convert.ToString(info.Content, 2);
|
|
|
|
|
// string[] infoArray = new string[inf2.Length];
|
|
|
|
|
// for (int i = 0; i < inf2.Length; i++)
|
|
|
|
|
// {
|
|
|
|
|
// infoArray[i] = inf2.Substring(i, 1);
|
|
|
|
|
// }
|
|
|
|
|
// Array.Reverse(infoArray);
|
|
|
|
|
// infoArray[_stringChange.ParseToInt(strArry[1])] = value.ToString();
|
|
|
|
|
// string result = "";
|
|
|
|
|
// foreach (var item in infoArray)
|
|
|
|
|
// {
|
|
|
|
|
// result = result + item;
|
|
|
|
|
// }
|
|
|
|
|
// s = Convert.ToInt32(result.Trim(), 10);
|
|
|
|
|
// operateResult = inovanceTcp.Write(strArry[0], s);
|
|
|
|
|
// }
|
|
|
|
|
// if (!operateResult.IsSuccess)
|
|
|
|
|
// {
|
|
|
|
|
// throw new InvalidOperationException($"根据地址:{address};写入int16数据失败:{operateResult.Message}");
|
|
|
|
|
// }
|
|
|
|
|
// return operateResult.IsSuccess;
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// throw new InvalidOperationException($"根据地址:{address};写入int16数据异常:{ex.Message}");
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|