Commit 02a4bc27 authored by leon.huang's avatar leon.huang

add map reflect add

parent 0bbb9e7b
......@@ -30,14 +30,7 @@ namespace ModbusDemo.MessageFormat
public int d6 { get; set; }
public int d7 { get; set; }
public UInt64 ts { get; set; }
public bool bD0HasConfig { get; set; }
public bool bD1HasConfig { get; set; }
public bool bD2HasConfig { get; set; }
public bool bD3HasConfig { get; set; }
public bool bD4HasConfig { get; set; }
public bool bD5HasConfig { get; set; }
public bool bD6HasConfig { get; set; }
public bool bD7HasConfig { get; set; }
}
public class SsItem
......@@ -51,28 +44,110 @@ namespace ModbusDemo.MessageFormat
public string taskId { get; set; }
public List<SsItem> ss { get; set; }
}
public class Cfg
{
public byte d0 { get; set; }
public byte d1 { get; set; }
public byte d2 { get; set; }
public byte d3 { get; set; }
public byte d4 { get; set; }
public byte d5 { get; set; }
public byte d6 { get; set; }
public byte d7 { get; set; }
public string down { get; set; }
public string upper { get; set; }
public UInt64 ts { get; set; }
}
public class pcCfgSsItem
{
public string addr { get; set; }
public Cfg cfg { get; set; }
}
public class pcCfgRoot
{
public string taskId { get; set; }
public List<pcCfgSsItem> ss { get; set; }
}
public class pcModualControlIndex
{
public string srcId { get; set; }
public string srcType { get; set; }
public string srcCh { get; set; }
public string resId { get; set; }
public string resType { get; set; }
public string resCh { get; set; }
public List<string> dstCh { get; set; }
}
public class pcControlMap
{
public List<pcModualControlIndex> chMap { get; set; }
}
public struct ModualRespControl
{
public byte byResModualID;
public string stResChannel;
public modual.eModualType eModualType;
}
public class ModualCntrol
{
public bool bStartControl;
public bool bControlStatus;
public byte sbModbusID;
public byte sbModualIndex;
public bool[] bControlData;
public ushort usDurationTime;
public UInt64 ulStartTime;
public bool[] bControlBit = new bool[8];
public modual.eModualType eModualType;
public ModualRespControl[] xModualRespControl = new ModualRespControl[8];
}
public class pcLiquidLevelConfig
{
public byte byModbusID;
public string stChannelNumber;
public double dUpLevel;
public double dDownLevel;
}
public static List<pcLiquidLevelConfig> cPoolLevelConfig = new List<pcLiquidLevelConfig>();
public static List<ModualCntrol> liModuualControl = new List<ModualCntrol>();
public const ushort usDefineControlTimes = 1;
private static pcControlMap cControlMap = new pcControlMap();
#if DEBUG_TEST
public const string strMapCfg = "{chMap:[{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"90\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
string strMapCfg = "[{ srcId: 123, srcType: \"WTDR66C\", srcCh:\"d0\", dstCh:[\"d0\",\"d1\"]}";
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d6\", \"dstCh\":[\"d6\",\"d7\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"]}";
#endif
public static void vGetaWay_Receive_Control(string sDataString, out string stResponseData)
{
byte byModualIndex = 0;
MqttRoot cControl = new MqttRoot();
var jsonObj = new JObject();
MqttRoot cControl = new MqttRoot();
var jsonObj = new JObject();
try
{
cControl = JsonConvert.DeserializeObject<MqttRoot>(sDataString);
......@@ -92,76 +167,91 @@ namespace ModbusDemo.MessageFormat
usDurationTime = cControl.ss[i].op.duration,
ulStartTime = cControl.ss[i].op.startTime
};
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out cModualCntrol.bControlData, cModualCntrol.sbModbusID, 16, 6);
for (byte j = 0; j < ModualPoll.byX66cNumber; j++)
cModualCntrol.eModualType = eModdusId_Find_ModualType(cControl.ss[i].addr);
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
{
if (cModualCntrol.sbModbusID == ModualPoll.byX66cIdlist[j])
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out cModualCntrol.bControlData, cModualCntrol.sbModbusID, 16, 6);
for (byte j = 0; j < ModualPoll.byX66cNumber; j++)
{
byModualIndex = j;
cModualCntrol.sbModualIndex = j;
break;
if (cModualCntrol.sbModbusID == ModualPoll.byX66cIdlist[j])
{
byModualIndex = j;
cModualCntrol.sbModualIndex = j;
break;
}
else
{
byModualIndex = 0xFF;
cModualCntrol.sbModualIndex = 0xFF;
}
}
else
}
else if(cModualCntrol.eModualType == modual.eModualType.WTDR78C)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out cModualCntrol.bControlData, cModualCntrol.sbModbusID, 16, 8);
for (byte j = 0; j < ModualPoll.byX66cNumber; j++)
{
byModualIndex = 0xFF;
cModualCntrol.sbModualIndex = 0xFF;
if (cModualCntrol.sbModbusID == ModualPoll.byX78cIdlist[j])
{
byModualIndex = j;
cModualCntrol.sbModualIndex = j;
break;
}
else
{
byModualIndex = 0xFF;
cModualCntrol.sbModualIndex = 0xFF;
}
}
}
if (jsonObj["ss"][i]["op"] != null)
{
if (jsonObj["ss"][i]["op"]["d0"] != null)
{
cControl.ss[i].op.bD0HasConfig = true;
cModualCntrol.bControlData[0] = Convert.ToBoolean(cControl.ss[i].op.d0);
cModualCntrol.bControlBit[0] = true;
vFindChannelMap(cControl.ss[i].addr,"d0",Convert.ToBoolean(cControl.ss[i].op.d0),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d1"] != null)
{
cControl.ss[i].op.bD1HasConfig = true;
cModualCntrol.bControlData[1] = Convert.ToBoolean(cControl.ss[i].op.d1);
cModualCntrol.bControlBit[1] = true;
vFindChannelMap(cControl.ss[i].addr,"d1",Convert.ToBoolean(cControl.ss[i].op.d1),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d2"] != null)
{
cControl.ss[i].op.bD2HasConfig = true;
cModualCntrol.bControlData[2] = Convert.ToBoolean(cControl.ss[i].op.d2);
cModualCntrol.bControlBit[2] = true;
vFindChannelMap(cControl.ss[i].addr,"d2",Convert.ToBoolean(cControl.ss[i].op.d2),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d3"] != null)
{
cControl.ss[0].op.bD3HasConfig = true;
cModualCntrol.bControlData[3] = Convert.ToBoolean(cControl.ss[i].op.d3);
cModualCntrol.bControlBit[3] = true;
vFindChannelMap(cControl.ss[i].addr,"d3",Convert.ToBoolean(cControl.ss[i].op.d3),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d4"] != null)
{
cControl.ss[i].op.bD4HasConfig = true;
cModualCntrol.bControlData[4] = Convert.ToBoolean(cControl.ss[i].op.d4);
cModualCntrol.bControlBit[4] = true;
vFindChannelMap(cControl.ss[i].addr,"d4",Convert.ToBoolean(cControl.ss[i].op.d4),ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d5"] != null)
{
cControl.ss[i].op.bD5HasConfig = true;
cModualCntrol.bControlData[5] = Convert.ToBoolean(cControl.ss[i].op.d5);
cModualCntrol.bControlBit[5] = true;
vFindChannelMap(cControl.ss[i].addr, "d5", Convert.ToBoolean(cControl.ss[i].op.d5), ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d6"] != null)
{
cControl.ss[i].op.bD6HasConfig = true;
cModualCntrol.bControlData[6] = Convert.ToBoolean(cControl.ss[i].op.d6);
cModualCntrol.bControlBit[6] = true;
vFindChannelMap(cControl.ss[i].addr, "d6", Convert.ToBoolean(cControl.ss[i].op.d6), ref cModualCntrol);
}
if (jsonObj["ss"][i]["op"]["d7"] != null)
{
cControl.ss[i].op.bD7HasConfig = true;
cModualCntrol.bControlData[7] = Convert.ToBoolean(cControl.ss[i].op.d7);
cModualCntrol.bControlBit[7] = true;
vFindChannelMap(cControl.ss[i].addr, "d7", Convert.ToBoolean(cControl.ss[i].op.d7), ref cModualCntrol);
}
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && cModualCntrol.ulStartTime <= Form1.GetTimeStamp())
{
cModualCntrol.bStartControl = true;
ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(cModualCntrol.sbModbusID, 16, cModualCntrol.bControlData);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, cModualCntrol.sbModbusID, 16, 6);
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, cModualCntrol.sbModbusID, 16, 6);
else if(cModualCntrol.eModualType == modual.eModualType.WTDR78C)
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, cModualCntrol.sbModbusID, 16, 8);
if (Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
{
cModualCntrol.bControlStatus = true;
}
}
if (jsonObj["ss"][i]["op"]["ts"] != null)
{
......@@ -169,7 +259,7 @@ namespace ModbusDemo.MessageFormat
}
if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
if (cModualCntrol.bStartControl == true && cModualCntrol.ulStartTime != 0 && cModualCntrol.bControlStatus == true)
{
liModuualControl.Add(cModualCntrol);
}
......@@ -178,174 +268,58 @@ namespace ModbusDemo.MessageFormat
liModuualControl.Add(cModualCntrol);
}
}
if (cControl.ss[i].op.bD0HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d0"] = 1;
if (byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[0] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[0] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[0] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
else if (cControl.ss[i].op.bD0HasConfig == true)
{
jsonObj["ss"][i]["op"]["d0"] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[0] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[0] +=usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[0] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[0] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (cControl.ss[i].op.bD1HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d1"] = 1;
if (byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[1] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[1] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[1] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
else if (cControl.ss[i].op.bD1HasConfig == true)
{
jsonObj["ss"][i]["op"]["d1"] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[1] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[1] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[1] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[1] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (cControl.ss[i].op.bD2HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d2"] = 1;
if (byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[2] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[2] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[2] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
else if (cControl.ss[i].op.bD2HasConfig == true)
{
jsonObj["ss"][i]["op"]["d2"] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[2] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[2] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[2] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[2] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (cControl.ss[i].op.bD3HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d3"] = 1;
if (byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[3] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[3] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[3] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
else if (cControl.ss[i].op.bD3HasConfig == true)
{
jsonObj["ss"][i]["op"]["d3"] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[3] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[3] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[3] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[3] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (cControl.ss[i].op.bD4HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d4"] = 1;
if (byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[4] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[4] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[4] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
else if (cControl.ss[i].op.bD4HasConfig == true)
{
jsonObj["ss"][i]["op"]["d4"] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[4] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[4] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[4] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[4] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (cControl.ss[i].op.bD5HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
for (int k = 0; k < 8; k++)
{
jsonObj["ss"][i]["op"]["d5"] = 1;
if (byModualIndex != 0xFF)
if (cModualCntrol.bControlBit[k] == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[5] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[5] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[5] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
else if (cControl.ss[i].op.bD5HasConfig == true)
{
jsonObj["ss"][i]["op"]["d5"] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[5] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[5] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[5] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
string str = "d"+k.ToString();
jsonObj["ss"][i]["op"][str] = 1;
if (byModualIndex != 0xFF && k < 6)
{
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[k] = 0;
if (cModualCntrol.bStartControl == true && Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
else if(cModualCntrol.eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usCommFailTimes[k+8] = 0;
if (cModualCntrol.bStartControl == true && cModualCntrol.bStartControl == true)
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
if (Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
else if (cModualCntrol.bControlBit[k] == true)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[5] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
string str = "d"+k.ToString();
jsonObj["ss"][i]["op"][str] = 0;
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR && byModualIndex != 0xFF)
{
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usCommFailTimes[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
else if (cModualCntrol.eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usCommFailTimes[k+8] += usDefineControlTimes;
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
if (!Enumerable.SequenceEqual(cModualCntrol.bControlData, btReadTempData) && byModualIndex != 0xFF && cModualCntrol.bStartControl == true)
{
if (cModualCntrol.eModualType == modual.eModualType.WTDR66C)
ModualPoll.cx66c.sX66cAlarmStruct[byModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
else if (cModualCntrol.eModualType == modual.eModualType.WTDR78C)
ModualPoll.cx78c.sX78cAlarmStruct[byModualIndex].usNowAlarmCode[k + 8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
if (cControl.ss[i].op.bD6HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d6"] = 1;
}
else if (cControl.ss[i].op.bD6HasConfig == true)
{
jsonObj["ss"][i]["op"]["d6"] = 0;
}
if (cControl.ss[i].op.bD7HasConfig == true && ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
jsonObj["ss"][i]["op"]["d7"] = 1;
}
else if (cControl.ss[i].op.bD7HasConfig == true)
{
jsonObj["ss"][i]["op"]["d7"] = 0;
}
}
}
stResponseData = jsonObj.ToString();
......@@ -353,6 +327,7 @@ namespace ModbusDemo.MessageFormat
public static void vControl_Poll()
{
cControlMap = JsonConvert.DeserializeObject<pcControlMap>(strMapCfg);
while (true)
{
for (sbyte i = 0; i < liModuualControl.Count; i++)
......@@ -365,8 +340,18 @@ namespace ModbusDemo.MessageFormat
liModuualControl[i].bStartControl = true;
bool[] bControlData = new bool[6];
bool[] btReadTempData;
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
for (sbyte j = 0; j < 6; j++)
byte ChannelNumber = 0;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
ChannelNumber = 6;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 8);
ChannelNumber = 8;
}
for (sbyte j = 0; j < ChannelNumber; j++)
{
if (liModuualControl[i].bControlBit[j] == true)
{
......@@ -377,29 +362,48 @@ namespace ModbusDemo.MessageFormat
liModuualControl[i].bControlData[j] = bControlData[j];
}
ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(liModuualControl[i].sbModbusID, 16, bControlData);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, 6);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, ChannelNumber);
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
for (sbyte k = 0; k < 6; k++)
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
}
else if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
for (sbyte k = 0; k < 6; k++)
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
}
......@@ -413,8 +417,18 @@ namespace ModbusDemo.MessageFormat
ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
bool[] bControlData = new bool[6];
bool[] btReadTempData;
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
for (sbyte j = 0; j < 6; j++)
byte ChannelNumber = 0;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 6);
ChannelNumber= 6;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ChannelNumber = 8;
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out bControlData, liModuualControl[i].sbModbusID, 16, 8);
}
for (sbyte j = 0; j < ChannelNumber; j++)
{
if (liModuualControl[i].bControlBit[j] == true)
{
......@@ -422,29 +436,48 @@ namespace ModbusDemo.MessageFormat
}
}
ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(liModuualControl[i].sbModbusID, 16, bControlData);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, 6);
ModbusErrorCode |= ModbusComm.Modbus_ReadCoilsTask(out btReadTempData, liModuualControl[i].sbModbusID, 16, ChannelNumber);
if (ModbusErrorCode != ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
for (sbyte k = 0; k < 6; k++)
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] += usDefineControlTimes;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] += usDefineControlTimes;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] |= (ushort)ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
}
else if (ModbusErrorCode == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
{
for (sbyte k = 0; k < 6; k++)
for (sbyte k = 0; k < ChannelNumber; k++)
{
if (liModuualControl[i].bControlBit[k] == true && liModuualControl[i].sbModualIndex != 0xFF)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
if (liModuualControl[i].eModualType == modual.eModualType.WTDR66C)
{
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx66c.sX66cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
else if (liModuualControl[i].eModualType == modual.eModualType.WTDR78C)
{
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelCommunError;
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] = 0;
if (Enumerable.SequenceEqual(bControlData, btReadTempData))
ModualPoll.cx78c.sX78cAlarmStruct[liModuualControl[i].sbModualIndex].usNowAlarmCode[k+8] &= (ushort)~ModualAlarm.eAlarmCode.ChannelControlError;
}
}
}
}
......@@ -453,11 +486,142 @@ namespace ModbusDemo.MessageFormat
}
}
}
Thread.Sleep(100);
}
}
Thread.Sleep(100);
public static modual.eModualType eModdusId_Find_ModualType(string sModbusID)
{
for (int i = 0; i < cControlMap.chMap.Count; i++)
{
if (sModbusID == cControlMap.chMap[i].srcId)
{
if(cControlMap.chMap[i].srcType == "WTDR14P")
return modual.eModualType.WTDR14P;
else if(cControlMap.chMap[i].srcType == "WTDR18X")
return modual.eModualType.WTDR18X;
else if(cControlMap.chMap[i].srcType == "WTDR78C")
return modual.eModualType.WTDR78C;
else if(cControlMap.chMap[i].srcType == "WTDR66C")
return modual.eModualType.WTDR66C;
}
}
return modual.eModualType.IDLE;
}
private static void vFindChannelMap(string stContrID, string stChannelName, bool bControlValue,ref ModualCntrol cModualCntrol)
{
for (int i = 0; i < cControlMap.chMap.Count; i++)
{
if (cControlMap.chMap[i].srcId == stContrID)
{
if (cControlMap.chMap[i].srcCh == stChannelName && cControlMap.chMap[i].dstCh.Count != 0)
{
for (int j = 0; j < cControlMap.chMap[i].dstCh.Count; j++)
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (cControlMap.chMap[i].dstCh[j] == str)
{
cModualCntrol.bControlData[k] = bControlValue;
cModualCntrol.bControlBit[k] = true;
cModualCntrol.xModualRespControl[k].byResModualID = byte.Parse(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl[k].eModualType = eModdusId_Find_ModualType(cControlMap.chMap[i].resId);
cModualCntrol.xModualRespControl[k].stResChannel = cControlMap.chMap[i].resCh;
}
}
}
}
else
{
for (int k = 0; k < 8; k++)
{
string str = "d" + k.ToString();
if (stChannelName == str)
{
cModualCntrol.bControlData[k] = bControlValue;
cModualCntrol.bControlBit[k] = true;
}
}
}
}
}
}
private void v
//public static ModbusComm.eModbusErrorCode eOperation_Machine(modual.eModualType eModualType, byte bMoualID, bool[] bControldata,bool[] bControlBit, out bool bControlStatus,ModualRespControl sModualRespControl)
//{
// ushort[] usRegData,usRegType;
// ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
// if (sModualRespControl.eModualType == modual.eModualType.WTDR78C)
// {
// double[] dConvertData = new double[8];
// string[] strDoubleString;
// _418X c18xformulasormual = new _418X();
// if ((ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(bMoualID, 16, bControldata)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
// {
// for (int i = 0; i < 8; i++)
// {
// ModualPoll.cx18x.sX18xAlarmstruct
// }
// }
// ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegData, bMoualID, 0, 8);
// ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegType, bMoualID, 10,8);
// strDoubleString = c18xformulasormual.Value(usRegData, usRegType);
// for (int i = 0; i < 8; i++)
// {
// dConvertData[i] = double.Parse(strDoubleString[i]);
// }
// }
//}
public static void vPoolLevelParse(string stConfigString, out string stResponseStrign)
{
pcCfgRoot cCfgRoot = new pcCfgRoot();
var jsonObj = new JObject();
try
{
cCfgRoot = JsonConvert.DeserializeObject<pcCfgRoot>(stConfigString);
jsonObj = JObject.Parse(stConfigString);
for (int i = 0; i < cCfgRoot.ss.Count; i++)
{
string strChannelString = "d" + i.ToString();
pcLiquidLevelConfig cLiquidLevelConfig = new pcLiquidLevelConfig
{
byModbusID = byte.Parse(cCfgRoot.ss[i].addr),
dUpLevel = double.Parse(cCfgRoot.ss[i].cfg.upper),
dDownLevel = double.Parse(cCfgRoot.ss[i].cfg.down)
};
if (jsonObj["ss"][i]["cfg"][strChannelString] != null)
{
cLiquidLevelConfig.stChannelNumber = strChannelString;
jsonObj["ss"][i]["cfg"][strChannelString] = 1;
}
else
{
jsonObj["ss"][i]["cfg"][strChannelString] = 0;
continue;
}
if (jsonObj["ss"][i]["cfg"]["ts"] != null)
{
jsonObj["ss"][i]["cfg"]["ts"] = Form1.GetTimeStamp();
}
cPoolLevelConfig.Add(cLiquidLevelConfig);
}
}
catch (Exception exception)
{
Form1.totxt.Log(exception + "Cfg Mqtt Parse Fail");
stResponseStrign = "";
}
finally
{
stResponseStrign = jsonObj.ToString();
}
}
}
}
}
\ No newline at end of file
......@@ -71,8 +71,8 @@ namespace ModbusDemo.Modular
public static modual.pcx78C cx78c = new modual.pcx78C(byX78cIdlist);
#if DEBUG_TEST
public const byte byX66cNumber = 3;
public static byte[] byX66cIdlist = {16,31,35};
public const byte byX66cNumber = 5;
public static byte[] byX66cIdlist = {16,31,35,39,90};
#else
public const byte byX66cNumber = 32;
public static byte[] byX66cIdlist = {4,5,7,8,9,10,14,15,19,22,23,24,26,30,32,36,37,38,40,41,42,43,44,46,47,48,49,50,51,52,54,57};
......
......@@ -21,6 +21,14 @@ namespace ModbusDemo.Modular
Normal = 0,
Null,
}
public enum eModualType : byte
{
IDLE = 0,
WTDR14P,
WTDR18X,
WTDR78C,
WTDR66C,
}
public struct psxModualAlarm
{
public bool bDataNotFirstIncreaseOrDecrease;
......
......@@ -41,7 +41,7 @@ namespace ModbusDemo
public Form1()
{
InitializeComponent();
m_bgw0.WorkerSupportsCancellation = true;
m_bgw0.WorkerSupportsCancellation = false;
m_bgw0.DoWork += m_bgw0_DoWork;
}
private void Form1_Load(object sender, EventArgs e)
......@@ -77,6 +77,8 @@ namespace ModbusDemo
public const string mqttSn = "66666666";
public const string mqttSubscribeControlTopic = "Witium/WTDS78X/" + mqttSn + "/Ctrl";
public const string mqttBackTopic = "Witium/WTDS78X/" + mqttSn + "/Back";
public const string mqttCfgTopic = "Witium/WTDS78X/" + mqttSn + "/Config";
public const string mqttCfgResTopic = "Witium/WTDS78X/" + mqttSn + "/CfgRes";
public const string mqttTopic = "Witium/WTDS78X/" + mqttSn + "/Data";
public const string sAlarmTopic = "Witium/WTDS78X/" + mqttSn + "/Alarm";
string mqttData;//数据
......@@ -156,6 +158,18 @@ namespace ModbusDemo
await mqttClient.PublishAsync(message);
totxt.Log("我在247,执行了Back");
}
private async Task vCfgResponseBack(string data)
{
var message = new MqttApplicationMessageBuilder()
.WithTopic(mqttCfgResTopic)
.WithPayload(data)
.WithAtMostOnceQoS()
.WithRetainFlag(false)
.Build();
await mqttClient.PublishAsync(message);
totxt.Log("我在247,执行了Back");
}
private async Task Subscribe()
{
if (!mqttClient.IsConnected)
......@@ -171,11 +185,17 @@ namespace ModbusDemo
.Build()
);
await mqttClient.SubscribeAsync(new TopicFilterBuilder()
.WithTopic(mqttCfgTopic)
.WithAtMostOnceQoS()
.Build()
);
Invoke((new Action(() =>
{
Console.WriteLine("已订阅[{topic}]主题{Environment.NewLine}");
txtReceiveMessage.AppendText($"已订阅[{mqttSubscribeControlTopic}]主题{Environment.NewLine}");
txtReceiveMessage.AppendText($"已订阅[{mqttCfgTopic}]主题{Environment.NewLine}");
//totxt.Log($"已订阅[{mqttSubscribeTopic}]主题{Environment.NewLine}");
//txtReceiveMessage.AppendText($"已订阅[{Data}]主题{Environment.NewLine}");
......@@ -325,6 +345,11 @@ namespace ModbusDemo
ModualControl.vGetaWay_Receive_Control(stConvertString, out mqttData_Back);
await vControlResponseBack();
}
else if (e.ApplicationMessage.Topic == mqttCfgTopic)
{
ModualControl.vPoolLevelParse(stConvertString, out mqttData_Back);
await vCfgResponseBack(mqttData_Back);
}
})));
Invoke((new Action(() =>
{
......@@ -358,7 +383,7 @@ namespace ModbusDemo
private void Sendout()
{
Control.CheckForIllegalCrossThreadCalls = false;
MQTTTimer.Interval = 20000;//120500
MQTTTimer.Interval = 60000;//120500
MQTTTimer.Enabled = true;
MQTTTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
MQTTTimer.Start();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment