|
@@ -459,11 +459,14 @@ namespace UAS_PLCDataReader
|
|
|
|
|
|
List<string> StartDccode = new List<string>();
|
|
|
|
|
|
+ List<Polling> StartPolling = new List<Polling>();
|
|
|
+
|
|
|
private void ButtonStartPolling_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
GridView grid = GridViewPollSetting;
|
|
|
StartDecode.Clear();
|
|
|
StartDccode.Clear();
|
|
|
+ StartPolling.Clear();
|
|
|
for (int i = 0; i < GridPollingSetting.RowCount; i++)
|
|
|
{
|
|
|
Polling pl = new Polling();
|
|
@@ -477,22 +480,26 @@ namespace UAS_PLCDataReader
|
|
|
{
|
|
|
StartDecode.Add(pl.DeviceCode);
|
|
|
StartDccode.Add(pl.CommandCode);
|
|
|
+ StartPolling.Add(pl);
|
|
|
//插入轮询日志
|
|
|
sql.Clear();
|
|
|
sql.Append("insert into DEVICEPOLLINGLOG(dpg_id,dpg_decode,dpg_starttime,dpg_interval)values");
|
|
|
sql.Append("(DEVICEPOLLINGLOG_seq.nextval,'" + pl.DeviceCode + "',sysdate,'" + pl.Interval + "')");
|
|
|
QueueUpdateDevice.Enqueue(sql.ToString());
|
|
|
LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "设备启动", DeviceStatus.Noanswer, -1);
|
|
|
- pt.AddTask(RunTask, pl);
|
|
|
//添加到状态为运行的行
|
|
|
PollSettingPaintRowIndex.Add(i);
|
|
|
GridPollingSetting.Focus();
|
|
|
}
|
|
|
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);
|
|
|
+ DNC = (DataTable)dh.ExecuteSql("select dnc_ip,dnc_port,dnc_decode from DEVICENETCONFIG where dnc_decode in (" + BaseUtil.ArrayToString(StartDecode) + ")", "select");
|
|
|
+ DC = (DataTable)dh.ExecuteSql("select dc_sendcoding,dc_value,dc_receivecoding,dc_type,dc_code from devicecommand where dc_code in (" + BaseUtil.ArrayToString(StartDccode) + ") order by dc_dataindex", "select");
|
|
|
+ for (int i = 0; i < StartPolling.Count; i++)
|
|
|
+ {
|
|
|
+ pt.AddTask(RunTask, StartPolling[i]);
|
|
|
+ }
|
|
|
+ //ButtonSaveCommandSet.DoSaveAfterHandler(false);
|
|
|
}
|
|
|
|
|
|
private void TimerUpdateSQL_Tick(object sender, EventArgs e)
|
|
@@ -554,19 +561,15 @@ namespace UAS_PLCDataReader
|
|
|
string Decode = pl.DeviceCode;
|
|
|
string Dccode = pl.CommandCode;
|
|
|
string DpcID = pl.Id.ToString();
|
|
|
- DataRow[] dnc_dr = DNC.Select("dnc_decode='" + pl.DeviceCode + "'");
|
|
|
- DataRow[] dc_dr = DC.Select("dc_decode='" + pl.DeviceCode + "'");
|
|
|
+ DataRow[] dnc_dr = DNC.Select("dnc_decode='" + Decode + "'");
|
|
|
+ DataRow[] dc_dr = DC.Select("dc_code='" + Dccode + "'");
|
|
|
if (dnc_dr.Length > 0)
|
|
|
{
|
|
|
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_dr.Length > 0)
|
|
|
{
|
|
|
- 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;
|
|
|
}
|
|
@@ -578,7 +581,7 @@ namespace UAS_PLCDataReader
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- ModBusTCPClient modclient = new ModBusTCPClient(DNC.Rows[0]["dnc_ip"].ToString(), DNC.Rows[0]["dnc_port"].ToString(), pl.DeviceCode, pl.DeviceName);
|
|
|
+ ModBusTCPClient modclient = new ModBusTCPClient(dnc_dr[0]["dnc_ip"].ToString(), dnc_dr[0]["dnc_port"].ToString(), pl.DeviceCode, pl.DeviceName);
|
|
|
modclient.Dh = dh;
|
|
|
client.Add(DpcID, modclient);
|
|
|
}
|