|
@@ -455,9 +455,15 @@ namespace UAS_PLCDataReader
|
|
|
/// </summary>
|
|
|
List<int> PollSettingPaintRowIndex = new List<int>();
|
|
|
|
|
|
+ List<string> StartDecode = new List<string>();
|
|
|
+
|
|
|
+ List<string> StartDccode = new List<string>();
|
|
|
+
|
|
|
private void ButtonStartPolling_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
GridView grid = GridViewPollSetting;
|
|
|
+ StartDecode.Clear();
|
|
|
+ StartDccode.Clear();
|
|
|
for (int i = 0; i < GridPollingSetting.RowCount; i++)
|
|
|
{
|
|
|
Polling pl = new Polling();
|
|
@@ -467,9 +473,10 @@ namespace UAS_PLCDataReader
|
|
|
pl.CommandCode = GridViewPollSetting.GetRowCellValue(i, "DPC_DCCODE").ToString();
|
|
|
pl.Interval = int.Parse(GridViewPollSetting.GetRowCellValue(i, "DPC_INTERVAL").ToString());
|
|
|
pl.Enable = GridViewPollSetting.GetRowCellValue(i, "DPC_ENABLE").ToString() != "0";
|
|
|
- pl.Dh = new DataHelper();
|
|
|
if (pl.Enable)
|
|
|
{
|
|
|
+ StartDecode.Add(pl.DeviceCode);
|
|
|
+ StartDccode.Add(pl.CommandCode);
|
|
|
//插入轮询日志
|
|
|
sql.Clear();
|
|
|
sql.Append("insert into DEVICEPOLLINGLOG(dpg_id,dpg_decode,dpg_starttime,dpg_interval)values");
|
|
@@ -483,6 +490,8 @@ namespace UAS_PLCDataReader
|
|
|
}
|
|
|
else LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "设备未启用", DeviceStatus.Stopped, 0);
|
|
|
}
|
|
|
+ DNC = (DataTable)dh.ExecuteSql("select dnc_ip,dnc_port from DEVICENETCONFIG where dnc_decode in (" + BaseUtil.ArrayToString(StartDecode) + ")", "select");
|
|
|
+ DC = (DataTable)dh.ExecuteSql("select dc_sendcoding,dc_value,dc_receivecoding,dc_type from devicecommand where dc_code in (" + BaseUtil.ArrayToString(StartDccode) + ") order by dc_dataindex", "select");
|
|
|
ButtonSaveCommandSet.DoSaveAfterHandler(false);
|
|
|
}
|
|
|
|
|
@@ -529,6 +538,9 @@ namespace UAS_PLCDataReader
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ DataTable DNC;
|
|
|
+ DataTable DC;
|
|
|
+
|
|
|
Dictionary<string, ModBusTCPClient> client = new Dictionary<string, ModBusTCPClient>();
|
|
|
/// <summary>
|
|
|
/// 轮询执行的业务
|
|
@@ -539,24 +551,23 @@ namespace UAS_PLCDataReader
|
|
|
{
|
|
|
PollingTimer timer = (PollingTimer)sender;
|
|
|
Polling pl = (Polling)timer.Polling;
|
|
|
- DataHelper dh = pl.Dh;
|
|
|
string Decode = pl.DeviceCode;
|
|
|
string Dccode = pl.CommandCode;
|
|
|
string DpcID = pl.Id.ToString();
|
|
|
- DataTable DNC = (DataTable)dh.ExecuteSql("select dnc_ip,dnc_port from DEVICENETCONFIG where dnc_decode='" + Decode + "'", "select");
|
|
|
- DataTable DC = (DataTable)dh.ExecuteSql("select dc_sendcoding,dc_value,dc_receivecoding,dc_type from devicecommand where dc_code='" + Dccode + "' order by dc_dataindex", "select");
|
|
|
- if (DNC.Rows.Count > 0)
|
|
|
+ DataRow[] dnc_dr = DNC.Select("dnc_decode='" + pl.DeviceCode + "'");
|
|
|
+ DataRow[] dc_dr = DC.Select("dc_decode='" + pl.DeviceCode + "'");
|
|
|
+ if (dnc_dr.Length > 0)
|
|
|
{
|
|
|
- string IP = DNC.Rows[0]["dnc_ip"].ToString() + ":" + DNC.Rows[0]["dnc_port"].ToString();
|
|
|
+ string IP = dnc_dr[0]["dnc_ip"].ToString() + ":" + dnc_dr[0]["dnc_port"].ToString();
|
|
|
string SendCoding = "";
|
|
|
string ReceiveCoding = "";
|
|
|
string Command = "";
|
|
|
int SendCommandByteSize = 0;
|
|
|
- if (DC.Rows.Count > 0)
|
|
|
+ if (dc_dr.Length > 0)
|
|
|
{
|
|
|
- SendCoding = DC.Rows[0]["dc_sendcoding"].ToString();
|
|
|
- ReceiveCoding = DC.Rows[0]["dc_receivecoding"].ToString();
|
|
|
- Command = DC.Rows[0]["dc_value"].ToString();
|
|
|
+ SendCoding = dc_dr[0]["dc_sendcoding"].ToString();
|
|
|
+ ReceiveCoding = dc_dr[0]["dc_receivecoding"].ToString();
|
|
|
+ Command = dc_dr[0]["dc_value"].ToString();
|
|
|
SendCommandByteSize = Encoding.Default.GetBytes(Command.ToCharArray()).Length;
|
|
|
}
|
|
|
if (client.ContainsKey(DpcID))
|
|
@@ -605,18 +616,18 @@ namespace UAS_PLCDataReader
|
|
|
Dictionary<string, string> ItemData = new Dictionary<string, string>();
|
|
|
int[] Arr = BaseUtil.GetDecimalData(BaseUtil.ASCIIToString(client[DpcID].Returnvalue[IP]), 8);
|
|
|
//返回的参数个数和定义的参数个数相等或者小于的时候
|
|
|
- if (Arr.Length == DC.Rows.Count || DC.Rows.Count > Arr.Length)
|
|
|
+ if (Arr.Length == dc_dr.Length || dc_dr.Length > Arr.Length)
|
|
|
{
|
|
|
for (int i = 0; i < Arr.Length; i++)
|
|
|
{
|
|
|
- ItemData.Add(DC.Rows[i]["dc_type"].ToString(), Arr[i].ToString());
|
|
|
+ ItemData.Add(dc_dr[i]["dc_type"].ToString(), Arr[i].ToString());
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- for (int i = 0; i < DC.Rows.Count; i++)
|
|
|
+ for (int i = 0; i < dc_dr.Length; i++)
|
|
|
{
|
|
|
- ItemData.Add(DC.Rows[i]["dc_type"].ToString(), Arr[i].ToString());
|
|
|
+ ItemData.Add(dc_dr[i]["dc_type"].ToString(), Arr[i].ToString());
|
|
|
}
|
|
|
}
|
|
|
if (!ReturnData.ContainsKey(Decode))
|