1.初始化项目。保险起见bin目录完整提交 2.基于现场代码为调整过的初始项目(此次提交还未解决代码差异问题)
This commit is contained in:
@@ -0,0 +1,630 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Data;
|
||||
using System.Threading;
|
||||
using Agv_Info;
|
||||
using BllSql;
|
||||
using AGVSystem.A17168;
|
||||
//using Agv_Control;
|
||||
|
||||
namespace AGVSystem
|
||||
{
|
||||
public class Func
|
||||
{
|
||||
/// <summary>
|
||||
/// 表示每个AGV的btn
|
||||
/// </summary>
|
||||
//public static AgvLib.HxAgv[] AgvBtn;
|
||||
public static AgvCar.Agv[] agvcar;
|
||||
public static Cls.AgvInfo[] AgvInfo;
|
||||
|
||||
public static ClsDBConn_sql db_conn = new ClsDBConn_sql();
|
||||
|
||||
public static BllBase bBllBase = new BllBase();
|
||||
|
||||
/// <summary>
|
||||
///AGV位置变更时,记录位置信息的Temp
|
||||
/// </summary>
|
||||
public static int[] Agv_Location_Temp;
|
||||
|
||||
/// <summary>
|
||||
/// 创建地标容器
|
||||
/// </summary>
|
||||
/// <param name="id">地标编号</param>
|
||||
/// <param name="b">1.左端(后退) 2.右端(前进) 3.顶部(向上) 4.底部(向下)</param>
|
||||
/// <param name="x">容器放置坐标x</param>
|
||||
/// <param name="y">容器放置坐标y</param>
|
||||
///
|
||||
|
||||
public static void CreatePanelLocation(string id, int direction, int x, int y, int area, string Assembly_ID)
|
||||
{
|
||||
Panel pl = new Panel();
|
||||
if (area == 1)
|
||||
{
|
||||
pl.Parent = mainfrm.Map1;
|
||||
}
|
||||
else if (area == 2)
|
||||
{
|
||||
pl.Parent = mainfrm.Map2;
|
||||
}
|
||||
else
|
||||
{
|
||||
pl.Parent = mainfrm.Map3;
|
||||
}
|
||||
pl.BackColor = Color.Transparent;
|
||||
Label lab = new Label();
|
||||
|
||||
//Button lab = new Button();
|
||||
lab.Visible = Cls.Param.Location_ID_Dispaly;
|
||||
lab.Text = id;
|
||||
if (Assembly_ID != "0" || Assembly_ID != "")
|
||||
{
|
||||
lab.Tag = Assembly_ID + "-" + id;
|
||||
lab.DoubleClick += new System.EventHandler(Cls.Path_Reset.label12_DoubleClick);
|
||||
lab.MouseClick += new MouseEventHandler(label_MouseClick);
|
||||
}
|
||||
else if (Cls.Param.Display_CrossID == false)
|
||||
{
|
||||
lab.ForeColor = Color.Black;
|
||||
}
|
||||
lab.AutoSize = false;
|
||||
lab.Height = Cls.Param.Icon_Size;
|
||||
lab.Width = Cls.Param.Icon_Size;
|
||||
|
||||
pl.Width = Cls.Param.Icon_Size;
|
||||
pl.Height = Cls.Param.Icon_Size;
|
||||
lab.Parent = pl;
|
||||
lab.BackColor = Color.Transparent;
|
||||
lab.Font = new Font("宋体", 9, FontStyle.Regular);
|
||||
lab.TextAlign = ContentAlignment.MiddleCenter;
|
||||
if (direction == 1)
|
||||
{
|
||||
pl.Location = new Point(x, y - Cls.Param.Icon_Size / 2);
|
||||
pl.Tag = id + "-" + "1";
|
||||
lab.Dock = DockStyle.Left;
|
||||
}
|
||||
else if (direction == 2)
|
||||
{
|
||||
pl.Location = new Point(x, y - Cls.Param.Icon_Size / 2);
|
||||
pl.Tag = id + "-" + "2";
|
||||
lab.Dock = DockStyle.Left;
|
||||
}
|
||||
else if (direction == 3)
|
||||
{
|
||||
pl.Location = new Point(x - Cls.Param.Icon_Size / 2, y);
|
||||
pl.Tag = id + "-" + "3";
|
||||
lab.Dock = DockStyle.Top;
|
||||
}
|
||||
else if (direction == 4)
|
||||
{
|
||||
pl.Location = new Point(x - Cls.Param.Icon_Size / 2, y);
|
||||
pl.Tag = id + "-" + "4";
|
||||
lab.Dock = DockStyle.Top;
|
||||
}
|
||||
}
|
||||
|
||||
public static int loc_flag = 0;
|
||||
private static void label_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == System.Windows.Forms.MouseButtons.Right)
|
||||
{
|
||||
loc_flag = Convert.ToInt16(((Label)sender).Text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static object obj_dgvupdate = new object();
|
||||
public static void DgvUpdate(DataGridView dgv, int row, string columnname, bool value)
|
||||
{
|
||||
lock (obj_dgvupdate)
|
||||
{
|
||||
dgvUpdate(dgv, row, columnname, value);
|
||||
}
|
||||
}
|
||||
private static void dgvUpdate(DataGridView dgv, int row, string columnname, bool value)
|
||||
{
|
||||
dgv.Rows[row].Cells[columnname].Value = value;
|
||||
if (columnname == "Status")
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
dgv.Rows[row].DefaultCellStyle.ForeColor = Color.Red;
|
||||
}
|
||||
else
|
||||
{
|
||||
dgv.Rows[row].Cells["联网状态"].Value = value;
|
||||
dgv.Rows[row].DefaultCellStyle.ForeColor = Color.Gray;
|
||||
}
|
||||
}
|
||||
else if (columnname == "联网状态")
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
dgv.Rows[row].DefaultCellStyle.ForeColor = Color.Black;
|
||||
}
|
||||
else
|
||||
{
|
||||
dgv.Rows[row].DefaultCellStyle.ForeColor = Color.Red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static object obj_AgvIpToId = new object();
|
||||
public static int AgvIpToId(string IP)
|
||||
{
|
||||
lock (obj_AgvIpToId)
|
||||
{
|
||||
string ip = IP;
|
||||
int ID = 0; ;
|
||||
DataView rowfilter = new DataView(mainfrm.ds_Agvlist.Tables[0]);
|
||||
rowfilter.RowFilter = "IPAddress='" + ip + "'";
|
||||
rowfilter.RowStateFilter = DataViewRowState.OriginalRows;
|
||||
DataTable dt = rowfilter.ToTable();
|
||||
try
|
||||
{
|
||||
ID = Convert.ToInt16(dt.Rows[0]["ID"].ToString());
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return ID;
|
||||
}
|
||||
}
|
||||
|
||||
private static int run_time;
|
||||
private static int run_model;
|
||||
private static int next_loc = 0;
|
||||
/// <summary>
|
||||
/// 显示AGV位置状态
|
||||
/// </summary>
|
||||
/// <param name="agv_id">AGV编号</param>
|
||||
/// <param name="run_status">运动状态:运行/停止</param>
|
||||
/// <param name="warn_level">报警等级</param>
|
||||
/// <param name="current_location">当前位置</param>
|
||||
/// <param name="map_id">所属地图编号</param>
|
||||
/// <param name="run_fx">运动方向:直行/左转/右转</param>
|
||||
public static void Agv_Car_Status(int agv_id,
|
||||
bool run_status,
|
||||
int warn_level,
|
||||
int current_location,
|
||||
int map_id,
|
||||
int run_fx)
|
||||
{
|
||||
try
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Car_Warn_Level = warn_level;
|
||||
|
||||
if (current_location != Agv_Location_Temp[agv_id - 1])
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Run_Status = false;
|
||||
Agv_Location_Temp[agv_id - 1] = current_location;
|
||||
}
|
||||
else
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Run_Status = run_status;
|
||||
}
|
||||
|
||||
if (current_location == 0) return;
|
||||
run_time = 0;
|
||||
run_model = 0;
|
||||
next_loc = 0;
|
||||
Panel pl_new_parent = new Panel();//xin panel
|
||||
Panel pl_old_parent = new Panel();//jiu panel
|
||||
Panel parent_pnl = new Panel();
|
||||
|
||||
if (map_id == 1)
|
||||
{
|
||||
parent_pnl = mainfrm.Map1;
|
||||
}
|
||||
else if (map_id == 2)
|
||||
{
|
||||
parent_pnl = mainfrm.Map2;
|
||||
}
|
||||
else
|
||||
{
|
||||
parent_pnl = mainfrm.Map3;
|
||||
}
|
||||
|
||||
foreach (System.Windows.Forms.Control ctl in parent_pnl.Controls)
|
||||
{
|
||||
if (ctl.GetType().Name == "Panel")
|
||||
{
|
||||
if (Convert.ToInt16(ctl.Tag.ToString().Split('-')[0]) == current_location)
|
||||
{
|
||||
pl_new_parent = (Panel)ctl;
|
||||
|
||||
//AGV移动到新的管控停止位
|
||||
if (pl_new_parent != (Panel)Func.agvcar[agv_id - 1].Parent && !Func.agvcar[agv_id - 1].Run_Status)
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Refresh();
|
||||
pl_old_parent = (Panel)Func.agvcar[agv_id - 1].Parent;
|
||||
Func.agvcar[agv_id - 1].Parent = pl_new_parent;
|
||||
Func.agvcar[agv_id - 1].BringToFront();
|
||||
if (pl_new_parent.Tag.ToString().Split('-')[1] == "1")
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Dock = DockStyle.Left;
|
||||
}
|
||||
else if (pl_new_parent.Tag.ToString().Split('-')[1] == "2")
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Dock = DockStyle.Right;
|
||||
}
|
||||
else if (pl_new_parent.Tag.ToString().Split('-')[1] == "3")
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Dock = DockStyle.Top;
|
||||
}
|
||||
else if (pl_new_parent.Tag.ToString().Split('-')[1] == "4")
|
||||
{
|
||||
Func.agvcar[agv_id - 1].Dock = DockStyle.Bottom;
|
||||
}
|
||||
}
|
||||
|
||||
//AGV从停止位出发
|
||||
else if (pl_new_parent == (Panel)Func.agvcar[agv_id - 1].Parent &&
|
||||
Func.agvcar[agv_id - 1].Run_Status)
|
||||
{
|
||||
if (Func.agvcar[agv_id - 1].Parent != parent_pnl)
|
||||
{
|
||||
pl_old_parent = (Panel)Func.agvcar[agv_id - 1].Parent;
|
||||
Func.agvcar[agv_id - 1].Dock = DockStyle.None;
|
||||
Func.agvcar[agv_id - 1].Parent = parent_pnl;
|
||||
string ss = parent_pnl.Name;
|
||||
|
||||
Func.agvcar[agv_id - 1].Location = pl_old_parent.Location;
|
||||
Func.agvcar[agv_id - 1].BringToFront();
|
||||
|
||||
nextStation(Convert.ToInt16((Func.agvcar[agv_id - 1].Tag.ToString().Split('-'))[1]), current_location, run_fx, out run_time, out run_model, out next_loc);
|
||||
Func.agvcar[agv_id - 1].TimeLong = run_time;
|
||||
Func.agvcar[agv_id - 1].Run_Model = run_model;
|
||||
if (next_loc != 0)
|
||||
{
|
||||
foreach (System.Windows.Forms.Control c in parent_pnl.Controls)
|
||||
{
|
||||
if (c.GetType().Name == "Panel")
|
||||
{
|
||||
if (Convert.ToInt16(c.Tag.ToString().Split('-')[0]) == next_loc)
|
||||
{
|
||||
Func.agvcar[agv_id - 1].NextLocation = c.Location;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
//以下设置新容器大小
|
||||
int i = 0;
|
||||
foreach (System.Windows.Forms.Control ctl in pl_new_parent.Controls)
|
||||
{
|
||||
i = i + Cls.Param.Icon_Size;
|
||||
}
|
||||
if (pl_new_parent.Tag != null && (pl_new_parent.Tag.ToString().Split('-')[1] == "3" || pl_new_parent.Tag.ToString().Split('-')[1] == "4"))
|
||||
{
|
||||
pl_new_parent.Height = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
pl_new_parent.Width = i;
|
||||
}
|
||||
}catch(Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取下一个站点
|
||||
/// </summary>
|
||||
/// <param name="Assembly_ID">线体编号</param>
|
||||
/// <param name="Landmark_ID">位置编号</param>
|
||||
/// <param name="flag">区分</param>
|
||||
/// <param name="p">返回下一个站点坐标</param>
|
||||
/// <param name="run_time">返回到下一个站点的时间</param>
|
||||
/// <param name="run_model">返回AGV图标运动模式</param>
|
||||
private static void nextStation(int Assembly_ID, int Landmark_ID, int flag, out int run_time1, out int run_model1, out int next_loc1)
|
||||
{
|
||||
run_time1 = 0;
|
||||
run_model1 = 0;
|
||||
next_loc1 = 0;
|
||||
DataView rowfilter = new DataView(mainfrm.ds_linelandmark.Tables[0]);
|
||||
rowfilter.RowFilter = "Assembly_Line=" + Assembly_ID + " and LOC_ID= " + Landmark_ID;
|
||||
rowfilter.RowStateFilter = DataViewRowState.OriginalRows;
|
||||
DataTable dt = rowfilter.ToTable();
|
||||
try
|
||||
{
|
||||
if (dt.Rows.Count == 1)
|
||||
{
|
||||
if (flag == 1)
|
||||
{
|
||||
next_loc1 = Convert.ToInt16(dt.Rows[0]["Next_Station1"]);
|
||||
run_time1 = Convert.ToInt16(dt.Rows[0]["LongTime1"]);
|
||||
run_model1 = Convert.ToInt16(dt.Rows[0]["Drict1"]);
|
||||
}
|
||||
else if (flag == 2)
|
||||
{
|
||||
next_loc1 = Convert.ToInt16(dt.Rows[0]["Next_Station1"]);
|
||||
run_time1 = Convert.ToInt16(dt.Rows[0]["LongTime2"]);
|
||||
run_model1 = Convert.ToInt16(dt.Rows[0]["Drict2"]);
|
||||
}
|
||||
else if (flag == 3)
|
||||
{
|
||||
next_loc1 = Convert.ToInt16(dt.Rows[0]["Next_Station1"]);
|
||||
run_time1 = Convert.ToInt16(dt.Rows[0]["LongTime2"]);
|
||||
run_model1 = Convert.ToInt16(dt.Rows[0]["Drict2"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AGV实时故障显示
|
||||
/// </summary>
|
||||
/// <param name="del_agv_no"></param>
|
||||
/// <param name="Assembly_Name"></param>
|
||||
/// <param name="Assembly_Id"></param>
|
||||
/// <param name="AGV_Internal_No"></param>
|
||||
/// <param name="AlarmInfo"></param>
|
||||
/// <param name="agv_no"></param>
|
||||
public static void Agv_Alarm_Insert(int del_agv_no, string Assembly_Name, string Assembly_Id, int AGV_Internal_No, string AlarmInfo, int agv_no)
|
||||
{
|
||||
lock (obj_agv_alarm_insert)
|
||||
{
|
||||
agv_alarm_insert(del_agv_no, Assembly_Name, Assembly_Id, AGV_Internal_No, AlarmInfo, agv_no);
|
||||
}
|
||||
}
|
||||
private static object obj_agv_alarm_insert = new object();
|
||||
private static void agv_alarm_insert(int del_agv_no, string Assembly_Name, string Assembly_Id, int AGV_Internal_No, string AlarmInfo, int agv_no)
|
||||
{
|
||||
if (del_agv_no == 0)
|
||||
{
|
||||
bool update_flag = false;
|
||||
if (mainfrm.ds_AgvWarn.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < mainfrm.ds_AgvWarn.Tables[0].Rows.Count; i++)
|
||||
{
|
||||
if (Convert.ToInt16(mainfrm.ds_AgvWarn.Tables[0].Rows[i][3].ToString()) == agv_no &&
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows[i][5].ToString().Trim() == AlarmInfo.Trim())
|
||||
{
|
||||
//ds_aGVWarn.Tables[0].Rows[i][0] = DateTime.Now.ToString();
|
||||
//ds_aGVWarn.Tables[0].Rows[i][1] = Assembly_Id;
|
||||
//ds_aGVWarn.Tables[0].Rows[i][2] = Assembly_Name;
|
||||
//ds_aGVWarn.Tables[0].Rows[i][3] = agv_no;
|
||||
//ds_aGVWarn.Tables[0].Rows[i][4] = AGV_Internal_No;
|
||||
//ds_aGVWarn.Tables[0].Rows[i][5] = AlarmInfo;
|
||||
//update_flag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!update_flag)
|
||||
{
|
||||
DataRow dr = mainfrm.ds_AgvWarn.Tables[0].NewRow();
|
||||
dr[0] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");// 时间
|
||||
dr[1] = Assembly_Id; // 线体编号
|
||||
dr[2] = Assembly_Name; // 线体名称
|
||||
dr[3] = agv_no; // 设备编号
|
||||
dr[4] = AGV_Internal_No; // 内部编号
|
||||
dr[5] = AlarmInfo; // 报警信息
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows.Add(dr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < mainfrm.ds_AgvWarn.Tables[0].Rows.Count; i++)
|
||||
{
|
||||
if (AlarmInfo == "正常")
|
||||
{
|
||||
if (Convert.ToInt16(mainfrm.ds_AgvWarn.Tables[0].Rows[i][3]) == del_agv_no)
|
||||
{
|
||||
if (!mainfrm.ds_AgvWarn.Tables[0].Rows[i][5].ToString().Contains("障碍物"))
|
||||
{
|
||||
Warn_Log warn_Log = new Warn_Log(mainfrm.ds_AgvWarn.Tables[0].Rows[i][0].ToString(), mainfrm.ds_AgvWarn.Tables[0].Rows[i][3].ToString(),
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows[i][5].ToString(), DateTime.Now.ToString());
|
||||
UPDateDBList.upDbList.Add(warn_Log);
|
||||
}
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows.RemoveAt(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Convert.ToInt16(mainfrm.ds_AgvWarn.Tables[0].Rows[i][3]) == del_agv_no &&
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows[i][5].ToString() == AlarmInfo)
|
||||
{
|
||||
if (!mainfrm.ds_AgvWarn.Tables[0].Rows[i][5].ToString().Contains("障碍物"))
|
||||
{
|
||||
//db_conn.Command("INSERT INTO [Warn_Log] ([Dt] ,[Agv_id] ,[Type] ,[Reset]) VALUES ('" +
|
||||
// mainfrm.ds_AgvWarn.Tables[0].Rows[i][0] + "'," + mainfrm.ds_AgvWarn.Tables[0].Rows[i][3] + ",'" + mainfrm.ds_AgvWarn.Tables[0].Rows[i][5] + "','" + DateTime.Now.ToString() + "')");
|
||||
|
||||
Warn_Log warn_Log = new Warn_Log(mainfrm.ds_AgvWarn.Tables[0].Rows[i][0].ToString(), mainfrm.ds_AgvWarn.Tables[0].Rows[i][3].ToString(),
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows[i][5].ToString(), DateTime.Now.ToString());
|
||||
UPDateDBList.upDbList.Add(warn_Log);
|
||||
}
|
||||
mainfrm.ds_AgvWarn.Tables[0].Rows.RemoveAt(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="Assembly_Name"></param>
|
||||
/// <param name="Assembly_Id"></param>
|
||||
/// <param name="AGV_Internal_No"></param>
|
||||
/// <param name="LandMark"></param>
|
||||
/// <param name="Info"></param>
|
||||
/// <param name="agv_no"></param>
|
||||
public static void CrossInfo_Insert(string Assembly_Name,
|
||||
string Assembly_Id,
|
||||
int AGV_Internal_No,
|
||||
int LandMark,
|
||||
string Info,
|
||||
int agv_no,
|
||||
int plc_value,
|
||||
int internal_id,
|
||||
int line_id,
|
||||
string line_name)
|
||||
{
|
||||
lock (obj_crossinfo_insert1)
|
||||
{
|
||||
crossInfo_Insert(Assembly_Name, Assembly_Id, AGV_Internal_No, LandMark, Info, agv_no, plc_value, internal_id, line_id, line_name);
|
||||
}
|
||||
}
|
||||
private static object obj_crossinfo_insert1 = new object();
|
||||
public static void crossInfo_Insert(string Assembly_Name,
|
||||
string Assembly_Id,
|
||||
int AGV_Internal_No,
|
||||
int LandMark,
|
||||
string Info,
|
||||
int agv_no,
|
||||
int plc_value,
|
||||
int internal_id,
|
||||
int line_id,
|
||||
string line_name)
|
||||
{
|
||||
string strsql = "";
|
||||
strsql = "INSERT INTO [Go_Log] ([Dt] ,[Agv_id] ,[Type] ,[Location],[plc_value] ,[Internal_ID],[Line_ID] ,[Line_Name]) VALUES " +
|
||||
"('" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'," +
|
||||
agv_no + ",'" +
|
||||
Info + "'," +
|
||||
LandMark + "," +
|
||||
plc_value + "," +
|
||||
internal_id + "," +
|
||||
line_id + ",'" +
|
||||
line_name + "')";
|
||||
db_conn.Command(strsql);
|
||||
}
|
||||
///// <summary>
|
||||
/////
|
||||
///// </summary>
|
||||
///// <param name="Assembly_Name"></param>
|
||||
///// <param name="Assembly_Id"></param>
|
||||
///// <param name="AGV_Internal_No"></param>
|
||||
///// <param name="LandMark"></param>
|
||||
///// <param name="Info"></param>
|
||||
///// <param name="agv_no"></param>
|
||||
public static void CrossInfo_Insert(string Assembly_Name, string Assembly_Id, int AGV_Internal_No, int LandMark, string Info, int agv_no, int plc_value)
|
||||
{
|
||||
UPDateDBList.upDbList.Add(new CrossInfo_Insert(DateTime.Now, Assembly_Name, Assembly_Id, AGV_Internal_No, LandMark, Info, agv_no, plc_value));
|
||||
}
|
||||
private static object obj_crossinfo_insert = new object();
|
||||
|
||||
private static object obj_GetLandMarkId = new object();
|
||||
/// <summary>
|
||||
/// 根据地标值读取地标编号
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public static int GetLandMarkId(int assemblyline_id, int value)
|
||||
{
|
||||
lock (obj_GetLandMarkId)
|
||||
{
|
||||
int markid = 0;
|
||||
DataView rowfilter = new DataView(mainfrm.ds_linelandmark.Tables[0]);
|
||||
rowfilter.RowFilter = "Flag_Value=" + value + " and Assembly_Line= " + assemblyline_id;
|
||||
rowfilter.RowStateFilter = DataViewRowState.OriginalRows;
|
||||
DataTable dt = rowfilter.ToTable();
|
||||
try
|
||||
{
|
||||
if (dt.Rows.Count > 0)
|
||||
markid = Convert.ToInt16(dt.Rows[0]["Loc_ID"].ToString());
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return markid;
|
||||
}
|
||||
}
|
||||
|
||||
private static object obj_change = new object();
|
||||
public static void Change_Rec(int agv_id, int current_loc, int histroy_loc, DateTime dt, int internal_id, int line_id, string line_name)
|
||||
{
|
||||
lock (obj_change)
|
||||
{
|
||||
if (mainfrm.ds_Change.Tables[0].Rows.Count == 0) return;
|
||||
if (histroy_loc == 0) return;
|
||||
|
||||
bool current_loc_res = false;
|
||||
bool histroy_loc_res = false;
|
||||
if (mainfrm.ds_Change.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
foreach (DataRow dr in mainfrm.ds_Change.Tables[0].Rows)
|
||||
{
|
||||
if (Convert.ToInt16(dr[0].ToString()) == current_loc)
|
||||
{
|
||||
current_loc_res = true;
|
||||
return;
|
||||
}
|
||||
if (Convert.ToInt16(dr[0].ToString()) == histroy_loc)
|
||||
{
|
||||
histroy_loc_res = true;
|
||||
}
|
||||
}
|
||||
if (current_loc_res == false && histroy_loc_res == true)
|
||||
{
|
||||
db_conn.Command("INSERT INTO [Change_Log]([Agv_ID] ,[Start_time],[Finish_time] ,[Location_ID],internal_id, line_id, line_name) VALUES(" +
|
||||
agv_id + ",'" +
|
||||
dt + "','" +
|
||||
DateTime.Now.ToString() + "'," +
|
||||
histroy_loc + "," +
|
||||
internal_id + "," +
|
||||
line_id + ",'" +
|
||||
line_name + "')");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private static object obj_change1 = new object();
|
||||
public static void Change_Rec(int agv_id, int current_loc, int histroy_loc, DateTime dt)
|
||||
{
|
||||
lock (obj_change1)
|
||||
{
|
||||
if (mainfrm.ds_Change.Tables[0].Rows.Count == 0) return;
|
||||
if (histroy_loc == 0) return;
|
||||
|
||||
bool current_loc_res = false;
|
||||
bool histroy_loc_res = false;
|
||||
if (mainfrm.ds_Change.Tables[0].Rows.Count > 0)
|
||||
{
|
||||
foreach (DataRow dr in mainfrm.ds_Change.Tables[0].Rows)
|
||||
{
|
||||
if (Convert.ToInt16(dr[0].ToString()) == current_loc)
|
||||
{
|
||||
current_loc_res = true;
|
||||
return;
|
||||
}
|
||||
if (Convert.ToInt16(dr[0].ToString()) == histroy_loc)
|
||||
{
|
||||
histroy_loc_res = true;
|
||||
}
|
||||
}
|
||||
if (current_loc_res == false && histroy_loc_res == true)
|
||||
{
|
||||
db_conn.Command("INSERT INTO [Change_Log]([Agv_ID] ,[Start_time],[Finish_time] ,[Location_ID]) VALUES(" +
|
||||
agv_id + ",'" + dt + "','" + DateTime.Now.ToString() + "'," + histroy_loc + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user