山西建龙封存,新增施耐德写入
This commit is contained in:
@ -496,14 +496,467 @@ namespace HTCoreServiceApp.Communicate.ModbusTcp
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Write(WritePara writePara)
|
/// <summary>
|
||||||
|
/// 写入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="writePara"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int Write(WritePara writePara)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
//var t1 = DateTime.Now;
|
||||||
|
int reCode = 0;
|
||||||
|
//JObject valueJson = JObject.Parse(writePara);
|
||||||
|
var srcValue = writePara.Value; //valueJson[propertyName: "Value"].ToString();
|
||||||
|
var writeAddress = writePara.WriteAddress;//valueJson[propertyName: "WriteAddress"].ToString();
|
||||||
|
var dataType = writePara.DataType;//short.Parse(valueJson[propertyName: "DataType"].ToString());
|
||||||
|
//var groupName = writePara.GroupName; //valueJson[propertyName: "GroupName"].ToString();
|
||||||
|
//var windex = writeAddress.IndexOf(".");
|
||||||
|
//writeAddress = writeAddress.Remove(windex, 1).Insert(windex, ",");
|
||||||
|
//var array = writeAddress.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
//var DBNum_string = array[0].ToString();
|
||||||
|
//var DBNum = int.Parse(Regex.Replace(DBNum_string, "[a-z]", "", RegexOptions.IgnoreCase));
|
||||||
|
|
||||||
|
var address = writeAddress;
|
||||||
|
string startaddress = Regex.Replace(address, "[a-z]", "", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
int address_dem = 0;
|
||||||
|
int address_int = 0;
|
||||||
|
if (startaddress.Contains(".") && startaddress.Length > 2)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] address_arr = startaddress.Split('.');
|
||||||
|
address_int = int.Parse(address_arr[0]);
|
||||||
|
address_dem = int.Parse(address_arr[1]);
|
||||||
|
}
|
||||||
|
catch (Exception exp)
|
||||||
|
{
|
||||||
|
//logger
|
||||||
|
LogHelper.LogWrite("MB写入数据出错,分离浮点的起始地址和bit位置出错 Address:" + writeAddress.ToString() + ",ERROR:" + exp.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
address_int = int.Parse(startaddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
//int start = int.Parse(startaddress);
|
||||||
|
|
||||||
|
int[] revbuffer_w;// = new byte[maxreg + 2];
|
||||||
|
decimal value = decimal.Parse(srcValue);
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
if (dataType == (short)DataType.BOOL)
|
||||||
|
{
|
||||||
|
var boolbyte = new int[2];
|
||||||
|
var rebooltempread = ReadHoldingRegisters(address_int, 1, ref boolbyte);// ReadArea(132, DBNum, address_int, 1, 2, ref boolbyte);
|
||||||
|
byte lowByte = (byte)(boolbyte[0] & 0xFF); // 低字节
|
||||||
|
byte highByte = (byte)((boolbyte[0] >> 8) & 0xFF); // 高字节
|
||||||
|
var writeintarray = new int[2] { lowByte, highByte };
|
||||||
|
Console.WriteLine(rebooltempread);
|
||||||
|
var writeint = 0;
|
||||||
|
if (address_dem<8)
|
||||||
|
{
|
||||||
|
var bytetemp = ConvertDecimalToBinary(lowByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(bytetemp[0], highByte);
|
||||||
|
//writeintarray[0] = writeint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
address_dem = address_dem - 8;
|
||||||
|
var bytetemp = ConvertDecimalToBinary(highByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(lowByte, bytetemp[0]);
|
||||||
|
//writeintarray[1] = writeint;
|
||||||
|
}
|
||||||
|
ushort combined = (ushort)((highByte << 8) | lowByte);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteSingleRegister(address_int, writeint);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入布尔数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.FLOAT)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertFloatToRegisters((float)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入浮点数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.IFLOAT)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertFloatToRegisters((float)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入浮点数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.INT)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertIntToRegisters((int)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入整型数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.WORD)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertLongToRegisters((long)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入字数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.BYTE)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertIntToRegisters((int)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入字节数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.PBOOL)
|
||||||
|
{
|
||||||
|
var boolbyte = new int[2];
|
||||||
|
var rebooltempread = ReadHoldingRegisters(address_int, 1, ref boolbyte);// ReadArea(132, DBNum, address_int, 1, 2, ref boolbyte);
|
||||||
|
byte lowByte = (byte)(boolbyte[0] & 0xFF); // 低字节
|
||||||
|
byte highByte = (byte)((boolbyte[0] >> 8) & 0xFF); // 高字节
|
||||||
|
var writeintarray = new int[2] { lowByte, highByte };
|
||||||
|
Console.WriteLine(rebooltempread);
|
||||||
|
var writeint = 0;
|
||||||
|
if (address_dem < 8)
|
||||||
|
{
|
||||||
|
var bytetemp = ConvertDecimalToBinary(lowByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(bytetemp[0], highByte);
|
||||||
|
//writeintarray[0] = writeint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
address_dem = address_dem - 8;
|
||||||
|
var bytetemp = ConvertDecimalToBinary(highByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(lowByte, bytetemp[0]);
|
||||||
|
//writeintarray[1] = writeint;
|
||||||
|
}
|
||||||
|
ushort combined = (ushort)((highByte << 8) | lowByte);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteSingleRegister(address_int, writeint);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入P布尔数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Console.WriteLine(writePara);
|
||||||
|
//var t2 = DateTime.Now;
|
||||||
|
//var timediff = t2 - t1;
|
||||||
|
//Console.WriteLine($"S7写入耗时:{timediff}");
|
||||||
|
return reCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int WriteBlock(WriteBlockPara writePara)
|
public int WriteBlock(WriteBlockPara writePara)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
//var t1 = DateTime.Now;
|
||||||
|
int reCode = 0;
|
||||||
|
//JObject valueJson = JObject.Parse(writePara);
|
||||||
|
var srcValue = writePara.Value; //valueJson[propertyName: "Value"].ToString();
|
||||||
|
var writeAddress = writePara.WriteAddress;//valueJson[propertyName: "WriteAddress"].ToString();
|
||||||
|
var dataType = writePara.DataType;//short.Parse(valueJson[propertyName: "DataType"].ToString());
|
||||||
|
var windex = writeAddress.IndexOf(".");
|
||||||
|
writeAddress = writeAddress.Remove(windex, 1).Insert(windex, ",");
|
||||||
|
var array = writeAddress.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
var DBNum_string = array[0].ToString();
|
||||||
|
var DBNum = int.Parse(Regex.Replace(DBNum_string, "[a-z]", "", RegexOptions.IgnoreCase));
|
||||||
|
|
||||||
|
var address = array[1].ToString();
|
||||||
|
string startaddress = Regex.Replace(address, "[a-z]", "", RegexOptions.IgnoreCase);
|
||||||
|
int address_dem = 0;
|
||||||
|
int address_int = 0;
|
||||||
|
if (startaddress.Contains(".") && startaddress.Length > 2)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] address_arr = startaddress.Split('.');
|
||||||
|
address_int = int.Parse(address_arr[0]);
|
||||||
|
address_dem = int.Parse(address_arr[1]);
|
||||||
|
}
|
||||||
|
catch (Exception exp)
|
||||||
|
{
|
||||||
|
//logger
|
||||||
|
LogHelper.LogWrite("S7写入数据出错,分离浮点的起始地址和bit位置出错 Address:" + writeAddress.ToString() + ",ERROR:" + exp.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
address_int = int.Parse(startaddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] revbuffer_w;// = new byte[maxreg + 2];
|
||||||
|
decimal value = decimal.Parse(srcValue);
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
if (dataType == (short)DataType.BOOL)
|
||||||
|
{
|
||||||
|
var boolbyte = new int[2];
|
||||||
|
var rebooltempread = ReadHoldingRegisters(address_int, 1, ref boolbyte);// ReadArea(132, DBNum, address_int, 1, 2, ref boolbyte);
|
||||||
|
byte lowByte = (byte)(boolbyte[0] & 0xFF); // 低字节
|
||||||
|
byte highByte = (byte)((boolbyte[0] >> 8) & 0xFF); // 高字节
|
||||||
|
var writeintarray = new int[2] { lowByte, highByte };
|
||||||
|
Console.WriteLine(rebooltempread);
|
||||||
|
var writeint = 0;
|
||||||
|
if (address_dem < 8)
|
||||||
|
{
|
||||||
|
var bytetemp = ConvertDecimalToBinary(lowByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(bytetemp[0], highByte);
|
||||||
|
//writeintarray[0] = writeint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
address_dem = address_dem - 8;
|
||||||
|
var bytetemp = ConvertDecimalToBinary(highByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(lowByte, bytetemp[0]);
|
||||||
|
//writeintarray[1] = writeint;
|
||||||
|
}
|
||||||
|
ushort combined = (ushort)((highByte << 8) | lowByte);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteSingleRegister(address_int, writeint);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入布尔数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.FLOAT)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertFloatToRegisters((float)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入浮点数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.IFLOAT)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertFloatToRegisters((float)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入浮点数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.INT)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertIntToRegisters((int)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入整型数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.WORD)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertLongToRegisters((long)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入字数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.BYTE)
|
||||||
|
{
|
||||||
|
var writeBuff = ModbusClient.ConvertIntToRegisters((int)value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteMultipleRegisters(address_int, writeBuff);//.WriteArea(132, DBNum, address_int, 4, 2, revbuffer_w);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入字节数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dataType == (short)DataType.PBOOL)
|
||||||
|
{
|
||||||
|
var boolbyte = new int[2];
|
||||||
|
var rebooltempread = ReadHoldingRegisters(address_int, 1, ref boolbyte);// ReadArea(132, DBNum, address_int, 1, 2, ref boolbyte);
|
||||||
|
byte lowByte = (byte)(boolbyte[0] & 0xFF); // 低字节
|
||||||
|
byte highByte = (byte)((boolbyte[0] >> 8) & 0xFF); // 高字节
|
||||||
|
var writeintarray = new int[2] { lowByte, highByte };
|
||||||
|
Console.WriteLine(rebooltempread);
|
||||||
|
var writeint = 0;
|
||||||
|
if (address_dem < 8)
|
||||||
|
{
|
||||||
|
var bytetemp = ConvertDecimalToBinary(lowByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(bytetemp[0], highByte);
|
||||||
|
//writeintarray[0] = writeint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
address_dem = address_dem - 8;
|
||||||
|
var bytetemp = ConvertDecimalToBinary(highByte);
|
||||||
|
Thread.Sleep(10);
|
||||||
|
var temval = (float)value;
|
||||||
|
bool bl = temval > 0.0f ? true : false;
|
||||||
|
//var rtbyte = revbuffer_w[address_int];
|
||||||
|
//var rtbuff = Sharp7.S7. rtbyte
|
||||||
|
SetBitAt(ref bytetemp, 0, address_dem, bl);
|
||||||
|
writeint = ConvertBinaryToInt(lowByte, bytetemp[0]);
|
||||||
|
//writeintarray[1] = writeint;
|
||||||
|
}
|
||||||
|
ushort combined = (ushort)((highByte << 8) | lowByte);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Client.WriteSingleRegister(address_int, writeint);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
reCode = -1;
|
||||||
|
LogHelper.LogWrite($"{DriverName}的modbus写入数据出错,写入P布尔数据出错 Address:" + writeAddress.ToString() + ",ERROR:" + ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Console.WriteLine(writePara);
|
||||||
|
//var t2 = DateTime.Now;
|
||||||
|
//var timediff = t2 - t1;
|
||||||
|
//Console.WriteLine($"S7写入耗时:{timediff}");
|
||||||
|
return reCode;
|
||||||
|
}
|
||||||
|
public byte[] ConvertDecimalToBinary(int decimalNumber)
|
||||||
|
{
|
||||||
|
// 计算需要多少个字节来表示这个数
|
||||||
|
int byteCount = (int)Math.Ceiling(Math.Log(decimalNumber + 1, 2) / 8.0);
|
||||||
|
|
||||||
|
// 确保至少有一个字节,即使输入是0
|
||||||
|
byteCount = Math.Max(byteCount, 1);
|
||||||
|
|
||||||
|
byte[] binary = new byte[byteCount];
|
||||||
|
|
||||||
|
for (int i = 0; i < byteCount; i++)
|
||||||
|
{
|
||||||
|
// 从低位到高位填充字节
|
||||||
|
binary[i] = (byte)(decimalNumber >> (8 * i) & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 反转数组,因为我们是从低位开始填充的
|
||||||
|
Array.Reverse(binary);
|
||||||
|
|
||||||
|
return binary;
|
||||||
|
}
|
||||||
|
public int ConvertBinaryToInt(byte lowByte, byte highByte)
|
||||||
|
{
|
||||||
|
ushort combined = (ushort)((highByte << 8) | lowByte);
|
||||||
|
|
||||||
|
return combined;
|
||||||
|
}
|
||||||
|
public static void SetBitAt(ref byte[] Buffer, int Pos, int Bit, bool Value)
|
||||||
|
{
|
||||||
|
byte[] Mask = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
|
||||||
|
if (Bit < 0) Bit = 0;
|
||||||
|
if (Bit > 7) Bit = 7;
|
||||||
|
|
||||||
|
if (Value)
|
||||||
|
Buffer[Pos] = (byte)(Buffer[Pos] | Mask[Bit]);
|
||||||
|
else
|
||||||
|
Buffer[Pos] = (byte)(Buffer[Pos] & ~Mask[Bit]);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<!--<InvariantGlobalization>true</InvariantGlobalization>-->
|
<!--<InvariantGlobalization>true</InvariantGlobalization>-->
|
||||||
@ -57,9 +57,9 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="libplctag" Version="1.2.0" />
|
<PackageReference Include="libplctag" Version="1.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.1" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.166" />
|
<PackageReference Include="SqlSugarCore" Version="5.1.4.166" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||||
|
@ -125,9 +125,9 @@ namespace HTCoreServiceApp
|
|||||||
async (string tagName, string value,HttpContext context, DeviceControl dc)
|
async (string tagName, string value,HttpContext context, DeviceControl dc)
|
||||||
=> Results.Content(await dc.SetDeviceTagData(tagName, value ,context)));
|
=> Results.Content(await dc.SetDeviceTagData(tagName, value ,context)));
|
||||||
|
|
||||||
deviceControl.MapGet("/SetBlockData/driverName={driverName}&address={address}&value={value}",
|
deviceControl.MapGet("/SetDeviceBlockData/driverName={driverName}&address={address}&value={value}",
|
||||||
async (string driverName, string address, string value, DeviceControl dc)
|
async (string driverName, string address, string value, DeviceControl dc)
|
||||||
=> Results.Content(await dc.SetBlockData(driverName, address, value)));
|
=> Results.Content(await dc.SetDeviceBlockData(driverName, address, value)));
|
||||||
|
|
||||||
var sampleTodos = new Todo[] {
|
var sampleTodos = new Todo[] {
|
||||||
new(1, "Walk the dog"),
|
new(1, "Walk the dog"),
|
||||||
|
@ -244,7 +244,7 @@ namespace HTCoreServiceApp.WebApi
|
|||||||
return reCode.ToString();
|
return reCode.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> SetBlockData(string driverName, string address, string value)
|
public async Task<string> SetDeviceBlockData(string driverName, string address, string value)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"Type": "SqlServer",
|
"Type": "SqlServer",
|
||||||
"SqlServer": "Zk48ARnbLq1Lk+lzxvCij1zzENjv04mu23Y8D8hdM3VxApXnvB2iA7xm5JfYWNkbR4m0u8SvmSkPpW1HqgyIlX9lbHiIuIQpS6lLThUT43JYrzX58HTXFtr/7DZ/QgrdUaOZqOBpVB9riZ4eSsJ+swn6WOptm+aEuvxLC/6Te15/OW/WsUX/Mhwb55VidHdGGLY2nbbpX8GYelD8PXMznA=="
|
"SqlServer": "Zk48ARnbLq1Lk+lzxvCij1zzENjv04mu23Y8D8hdM3VxApXnvB2iA7xm5JfYWNkbyFTPYdwgHe54spCgmPUkzbL5/xWeXNpL5Ipe5+CdPqI+3KVDSaT3SB+v2dgdez3xKByNOkqT3RgONsqI1KDtQjqQMv4zDQlzlPfn0ORsvuomcEOokHHiIw3CIFjEHtfnGcA4a/Gznsypv4sQcSbThw=="
|
||||||
},
|
},
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
|
Reference in New Issue
Block a user