通过S7.Net与PLC通信(堆垛机)

  • Post author:
  • Post category:其他


using Guna.UI2.WinForms;

using Microsoft.VisualBasic;

using S7.Net;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace AsrsLetterLocator

{


public partial class Form1 : Form

{


// =========================

SqlConnection sqlConnection;

SqlDataAdapter dataAdapter;

DataTable dataTable;

// =========================

public PcToPlc pcToPlc = new PcToPlc();

public PlcToPc plcToPc = new PlcToPc();

Point pbXpoint = new Point();

Point pbZpoint = new Point();

// =========================

public static DropProductRequestProcess dropProductProcess = DropProductRequestProcess.Initialize;

public static GetProductRequestProcess getProductProcess = GetProductRequestProcess.Initialize;

// =========================

public Plc myPlc;

public Thread thread;

public List<int> shelves = new List<int> { 3, 7, 11, 15, 19, 23 };

// =========================

bool bIsConnected = false;

bool bProcessExist = false;

// =========================

public Product asrsProduct = new Product();

// =========================

[Obsolete]

public Form1()

{


InitializeComponent();

}

#region ‘ Buttons ‘

// =======================================

[Obsolete]

private void btnConnectPlc_Click(object sender, EventArgs e)

{


try

{


if (!bIsConnected)

{


myPlc.Open();

pcToPlc.bPcActive = true;

myPlc.WriteClass(pcToPlc, 8);

Thread.Sleep(100);

myPlc.ReadClass(plcToPc, 9);

if (myPlc.IsConnected && plcToPc.bPlcActive)

{


pokeMessage(“Bağlantı başarılı!”, MessageDialogIcon.Information, MessageDialogButtons.OK);

btnConnectPlc.Text = “Bağlantıyı Kes”;

if (thread.ThreadState != ThreadState.Suspended)

thread.Start();

else

thread.Resume();

bIsConnected = true;

}

else

pokeMessage(“Asrs ulaşılamıyor!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

else

{


thread.Suspend();

pcToPlc.bPcActive = false;

myPlc.WriteClass(pcToPlc, 8);

myPlc.Close();

pokeMessage(“Bağlantı kesildi!”, MessageDialogIcon.Information, MessageDialogButtons.OK);

btnConnectPlc.Text = “Bağlan”;

if (!myPlc.IsConnected)

bIsConnected = false;

}

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

}

// =======================================

private void btnStart_Click(object sender, EventArgs e)

{


if (myPlc.IsConnected)

{


if (!bProcessExist)

{


Product tempProduct = new Product();

Shelf tempShelf = new Shelf();

Shelf dropShelf = new Shelf();

int num = 0;

List<Shelf> tempList = new List<Shelf>();

try

{


string sProductName = Interaction.InputBox(“Koyduğunuz harfi giriniz!”, “ASRS Uygulaması”);

if (sProductName != “”)

{


// ================================

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Product where Name ='” + sProductName + “‘”, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

tempProduct.Id = (int)dataTable.Rows[0].ItemArray[0];

tempProduct.Name = dataTable.Rows[0].ItemArray[1].ToString();

tempProduct.Number = (int)dataTable.Rows[0].ItemArray[2];

if (dataTable.Rows[0].ItemArray[3].ToString() != “”)

pokeMessage(“Bu ürün zaten rafta!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

// ================================

dataTable.Clear();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Status =0”, sqlConnection);

dataAdapter.Fill(dataTable);

foreach (DataRow row in dataTable.Rows)

{


if (!(shelves.Contains((int)row.ItemArray[2])))

{


Shelf temp = new Shelf();

temp.Id = (int)row.ItemArray[0];

temp.Number = (int)row.ItemArray[2];

temp.Status = (bool)row.ItemArray[4];

temp.SX = Convert.ToInt32(row.ItemArray[5]);

temp.SY = Convert.ToInt32(row.ItemArray[6]);

temp.SZ = Convert.ToInt32(row.ItemArray[7]);

tempList.Add(temp);

}

}

Random random = new Random();

//num = random.Next(0, tempList.Count + 1);

}

else

pokeMessage(“Harf yanlış girdiniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

finally

{


Task.Run(() =>

{


dropShelf.Id = 12;

dropShelf.Number = 11;

dropShelf.Status = false;

dropShelf.SX = 329;

dropShelf.SY = 0;

dropShelf.SZ = 807;

if (GetProduct(tempProduct, tempShelf, true))

{


Thread.Sleep(100);

DropProduct(tempProduct, dropShelf, false);

}

});

}

}

}

else

pokeMessage(“Bağlantınızı kontrol ediniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

// =======================================

private void btnDropProduct_Click(object sender, EventArgs e)

{


if (myPlc.IsConnected)

{


if (!bProcessExist)

{


Product tempProduct = new Product();

Shelf tempShelf = new Shelf();

try

{


string sProductName = Interaction.InputBox(“Almasını istediğiniz harfi giriniz!”, “ASRS Uygulaması”);

if (sProductName != “”)

{


// ================================

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Product where Name ='” + sProductName + “‘”, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

tempProduct.Id = (int)dataTable.Rows[0].ItemArray[0];

tempProduct.Name = dataTable.Rows[0].ItemArray[1].ToString();

tempProduct.Number = (int)dataTable.Rows[0].ItemArray[2];

tempProduct.ShelfId = (int)dataTable.Rows[0].ItemArray[3];

// ================================

dataTable.Clear();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Id=” + tempProduct.ShelfId, sqlConnection);

dataAdapter.Fill(dataTable);

tempShelf.Id = (int)dataTable.Rows[0].ItemArray[0];

tempShelf.Number = (int)dataTable.Rows[0].ItemArray[2];

tempShelf.Status = (bool)dataTable.Rows[0].ItemArray[4];

tempShelf.SX = Convert.ToInt32(dataTable.Rows[0].ItemArray[5]);

tempShelf.SY = Convert.ToInt32(dataTable.Rows[0].ItemArray[6]);

tempShelf.SZ = Convert.ToInt32(dataTable.Rows[0].ItemArray[7]);

}

else

pokeMessage(“Harf yanlış girdiniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

finally

{


Task.Run(() =>

{


if (GetProduct(tempProduct, tempShelf, false))

{


Thread.Sleep(100);

DropProduct(tempProduct, tempShelf, true);

}

});

}

}

}

else

pokeMessage(“Bağlantınızı kontrol ediniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

// =======================================

private void btnGetProduct_Click(object sender, EventArgs e)

{


if (myPlc.IsConnected)

{


if (!bProcessExist)

{


Product tempProduct = new Product();

Shelf tempShelf = new Shelf();

int num = 0;

List<Shelf> tempList = new List<Shelf>();

try

{


string sProductName = Interaction.InputBox(“Koyduğunuz harfi giriniz!”, “ASRS Uygulaması”);

if (sProductName != “”)

{


// ================================

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Product where Name ='” + sProductName + “‘”, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

tempProduct.Id = (int)dataTable.Rows[0].ItemArray[0];

tempProduct.Name = dataTable.Rows[0].ItemArray[1].ToString();

tempProduct.Number = (int)dataTable.Rows[0].ItemArray[2];

if (dataTable.Rows[0].ItemArray[3].ToString() != “”)

pokeMessage(“Bu ürün zaten rafta!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

// ================================

dataTable.Clear();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Status =0”, sqlConnection);

dataAdapter.Fill(dataTable);

foreach (DataRow row in dataTable.Rows)

{


if (!(shelves.Contains((int)row.ItemArray[2])))

{


Shelf temp = new Shelf();

temp.Id = (int)row.ItemArray[0];

temp.Number = (int)row.ItemArray[2];

temp.Status = (bool)row.ItemArray[4];

temp.SX = Convert.ToInt32(row.ItemArray[5]);

temp.SY = Convert.ToInt32(row.ItemArray[6]);

temp.SZ = Convert.ToInt32(row.ItemArray[7]);

tempList.Add(temp);

}

}

Random random = new Random();

num = random.Next(0, tempList.Count + 1);

}

else

pokeMessage(“Harf yanlış girdiniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

finally

{


Task.Run(() =>

{


if (GetProduct(tempProduct, tempShelf, true))

{


Thread.Sleep(100);

DropProduct(tempProduct, tempList[num], false);

}

});

}

}

}

else

pokeMessage(“Bağlantınızı kontrol ediniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

// =======================================

private void btnLocateVestel_Click(object sender, EventArgs e)

{


try

{


if (myPlc.IsConnected)

{


List<Product> products = new List<Product>();

for (int i = 5; i >= 0; i–)

{


Product temp = new Product();

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Product where Number =” + i, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

temp.Id = (int)dataTable.Rows[0].ItemArray[0];

temp.Name = dataTable.Rows[0].ItemArray[1].ToString();

temp.Number = (int)dataTable.Rows[0].ItemArray[2];

temp.ShelfId = (int)dataTable.Rows[0].ItemArray[3];

products.Add(temp);

}

Task.Run(() =>

{


for (int i = 0; i < products.Count; i++)

{


Shelf getShelf = new Shelf();

Shelf dropShelf = new Shelf();

// =====================

// find get shelf

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Id =” + products[i].ShelfId, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

getShelf.Id = (int)dataTable.Rows[0].ItemArray[0];

getShelf.Number = (int)dataTable.Rows[0].ItemArray[1];

getShelf.Status = (bool)dataTable.Rows[0].ItemArray[2];

getShelf.SX = Convert.ToInt32(dataTable.Rows[0].ItemArray[3]);

getShelf.SY = Convert.ToInt32(dataTable.Rows[0].ItemArray[4]);

getShelf.SZ = Convert.ToInt32(dataTable.Rows[0].ItemArray[5]);

// =====================

// find drop shelf

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Number =” + shelves[i], sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

dropShelf.Id = (int)dataTable.Rows[0].ItemArray[0];

dropShelf.Number = (int)dataTable.Rows[0].ItemArray[1];

dropShelf.Status = (bool)dataTable.Rows[0].ItemArray[2];

dropShelf.SX = Convert.ToInt32(dataTable.Rows[0].ItemArray[3]);

dropShelf.SY = Convert.ToInt32(dataTable.Rows[0].ItemArray[4]);

dropShelf.SZ = Convert.ToInt32(dataTable.Rows[0].ItemArray[5]);

if ((dropShelf.SX != getShelf.SX && dropShelf.SZ != getShelf.SZ) ||

(dropShelf.SX == getShelf.SX && dropShelf.SZ != getShelf.SZ) ||

(dropShelf.SX != getShelf.SX && dropShelf.SZ == getShelf.SZ))

{


if (GetProduct(products[i], getShelf, false))

{


Thread.Sleep(100);

DropProduct(products[i], dropShelf, false);

}

}

}

});

}

else

pokeMessage(“Bağlantınızı kontrol ediniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

}

// =======================================

private void btnShuffle_Click(object sender, EventArgs e)

{


if (myPlc.IsConnected)

{


if (!bProcessExist)

{


Product tempProduct = new Product();

Shelf tempShelf = new Shelf();

int num = 0;

List<Shelf> tempList = new List<Shelf>();

List<Product> products = new List<Product>();

try

{


for (int i = 5; i >= 0; i–)

{


Product temp = new Product();

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Product where Number =” + i, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

temp.Id = (int)dataTable.Rows[0].ItemArray[0];

temp.Name = dataTable.Rows[0].ItemArray[1].ToString();

temp.Number = (int)dataTable.Rows[0].ItemArray[2];

temp.ShelfId = (int)dataTable.Rows[0].ItemArray[3];

products.Add(temp);

}

// ================================

dataTable.Clear();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Status =0”, sqlConnection);

dataAdapter.Fill(dataTable);

foreach (DataRow row in dataTable.Rows)

{


if (!(shelves.Contains((int)row.ItemArray[2])))

{


Shelf temp = new Shelf();

temp.Id = (int)row.ItemArray[0];

temp.Number = (int)row.ItemArray[2];

temp.Status = (bool)row.ItemArray[4];

temp.SX = Convert.ToInt32(row.ItemArray[5]);

temp.SY = Convert.ToInt32(row.ItemArray[6]);

temp.SZ = Convert.ToInt32(row.ItemArray[7]);

tempList.Add(temp);

}

}

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

finally

{


Task.Run(() =>

{


for (int i = 0; i < products.Count; i++)

{


Random random = new Random();

num = random.Next(0, tempList.Count + 1);

Shelf getShelf = new Shelf();

Shelf dropShelf = new Shelf();

// =====================

// find get shelf

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Id =” + products[i].ShelfId, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

getShelf.Id = (int)dataTable.Rows[0].ItemArray[0];

getShelf.Number = (int)dataTable.Rows[0].ItemArray[1];

getShelf.Status = (bool)dataTable.Rows[0].ItemArray[2];

getShelf.SX = Convert.ToInt32(dataTable.Rows[0].ItemArray[3]);

getShelf.SY = Convert.ToInt32(dataTable.Rows[0].ItemArray[4]);

getShelf.SZ = Convert.ToInt32(dataTable.Rows[0].ItemArray[5]);

// =====================

// find drop shelf

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * from Shelf where Id =” + tempList[num].Id, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

dropShelf.Id = (int)dataTable.Rows[0].ItemArray[0];

dropShelf.Number = (int)dataTable.Rows[0].ItemArray[1];

dropShelf.Status = (bool)dataTable.Rows[0].ItemArray[2];

dropShelf.SX = Convert.ToInt32(dataTable.Rows[0].ItemArray[3]);

dropShelf.SY = Convert.ToInt32(dataTable.Rows[0].ItemArray[4]);

dropShelf.SZ = Convert.ToInt32(dataTable.Rows[0].ItemArray[5]);

if (shelves.Contains(getShelf.Number))

{


if (GetProduct(products[i], getShelf, false))

{


Thread.Sleep(100);

DropProduct(products[i], dropShelf, false);

}

}

tempList.Remove(tempList[num]);

}

});

}

}

}

else

pokeMessage(“Bağlantınızı kontrol ediniz!”, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

// =======================================

#endregion

// =======================================

#region ‘ Sub-Methods ‘

// =======================================

private DialogResult pokeMessage(string sMessage, MessageDialogIcon messageBoxIcon, MessageDialogButtons messageBoxButtons)

{


Guna2MessageDialog MessageBoxG = new Guna2MessageDialog();

MessageBoxG.Icon = messageBoxIcon;

MessageBoxG.Buttons = messageBoxButtons;

MessageBoxG.Style = MessageDialogStyle.Default;

return MessageBoxG.Show(sMessage, “ASRS Uygulaması”);

}

// =======================================

private void GetData()

{


while (true)

{


try

{


myPlc.ReadClass(plcToPc, 9);

// ==============

// x coordinate

pbXpoint.X = Convert.ToInt32(Map(plcToPc.ActX, 68, 850, 325, 1640));

pbXpoint.X = Convert.ToInt32(Map(pbXpoint.X, 0, 1640, 1640, 0));

pbXpoint.X = pbXpoint.X + 150;

pbXpoint.Y = pbX.Location.Y;

pbX.Location = pbXpoint;

// ==============

// z coordinate

pbZpoint.X = pbX.Location.X + 73;

pbZpoint.Y = Convert.ToInt32(Map(plcToPc.ActZ, 29, 807, 144, 597));

pbZpoint.Y = Convert.ToInt32(Map(pbZpoint.Y, 144, 597, 597, 144));

pbZpoint.Y = pbZpoint.Y – 5;

pbZ.Location = pbZpoint;

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

break;

}

Thread.Sleep(20);

}

}

// =======================================

public decimal Map(decimal value, decimal fromSource, decimal toSource, decimal fromTarget, decimal toTarget)

{


return (value – fromSource) / (toSource – fromSource) * (toTarget – fromTarget) + fromTarget;

}

// =======================================

private bool GetProduct(Product product, Shelf shelf, bool IsConveyor)

{


while (true)

{


switch (getProductProcess)

{


case GetProductRequestProcess.Initialize:

{


bProcessExist = true;

getProductProcess = GetProductRequestProcess.CheckCraneIsNotBusy;

break;

}

case GetProductRequestProcess.CheckCraneIsNotBusy:

{


getProductProcess = GetProductRequestProcess.SendRequest;

Thread.Sleep(500);

break;

}

case GetProductRequestProcess.SendRequest:

{


if (!plcToPc.bTaskExist)

{


pcToPlc.bTaskRequest = true;

pcToPlc.bGetProduct = true;

if (IsConveyor)

{


pcToPlc.X = 0;

pcToPlc.Y = 0;

pcToPlc.Z = 0;

}

else

{


pcToPlc.X = Convert.ToInt32(shelf.SX);

pcToPlc.Y = Convert.ToInt32(shelf.SY);

pcToPlc.Z = Convert.ToInt32(shelf.SZ);

}

myPlc.WriteClass(pcToPlc, 8);

}

if (plcToPc.bTaskTaken)

{


getProductProcess = GetProductRequestProcess.WaitForRequestDone;

pcToPlc.bTaskRequest = false;

pcToPlc.bGetProduct = false;

myPlc.WriteClass(pcToPlc, 8);

}

break;

}

case GetProductRequestProcess.WaitForRequestDone:

{


if (plcToPc.bTaskDone)

{


pcToPlc.X = 0;

pcToPlc.Y = 0;

pcToPlc.Z = 0;

if (!IsConveyor)

{


if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

SqlCommand sqlCommand = new SqlCommand(“Update Shelf SET Status=0 where Id =” + product.ShelfId, sqlConnection);

sqlCommand.ExecuteNonQuery();

SqlCommand sqlCommand2 = new SqlCommand(“Update Product SET ShelfId=NULL where Id =” + product.Id, sqlConnection);

sqlCommand2.ExecuteNonQuery();

}

myPlc.WriteClass(pcToPlc, 8);

getProductProcess = GetProductRequestProcess.Done;

}

break;

}

case GetProductRequestProcess.Done:

{


if (product != null)

asrsProduct = product;

break;

}

}

if (getProductProcess == GetProductRequestProcess.Done)

{


getProductProcess = GetProductRequestProcess.Initialize;

bProcessExist = false;

return true;

}

Thread.Sleep(500);

}

}

// =======================================

private bool DropProduct(Product product, Shelf shelf, bool IsConveyor)

{


while (true)

{


switch (dropProductProcess)

{


case DropProductRequestProcess.Initialize:

{


Thread.Sleep(100);

bProcessExist = true;

dropProductProcess = DropProductRequestProcess.CheckCraneIsNotBusy;

break;

}

case DropProductRequestProcess.CheckCraneIsNotBusy:

{


if (!plcToPc.bTaskExist)

dropProductProcess = DropProductRequestProcess.SendRequest;

else

Thread.Sleep(500);

break;

}

case DropProductRequestProcess.SendRequest:

{


if (!plcToPc.bTaskExist)

{


pcToPlc.bTaskRequest = true;

pcToPlc.bDropProduct = true;

if (IsConveyor)

{


pcToPlc.X = 0;

pcToPlc.Y = 0;

pcToPlc.Z = 0;

}

else

{


pcToPlc.X = Convert.ToInt32(shelf.SX);

pcToPlc.Y = Convert.ToInt32(shelf.SY);

pcToPlc.Z = Convert.ToInt32(shelf.SZ);

}

myPlc.WriteClass(pcToPlc, 8);

}

if (plcToPc.bTaskTaken)

{


dropProductProcess = DropProductRequestProcess.WaitForRequestDone;

pcToPlc.bTaskRequest = false;

pcToPlc.bDropProduct = false;

myPlc.WriteClass(pcToPlc, 8);

}

break;

}

case DropProductRequestProcess.WaitForRequestDone:

{


if (plcToPc.bTaskDone)

{


pcToPlc.bTaskRequest = false;

pcToPlc.bDropProduct = false;

pcToPlc.X = 0;

pcToPlc.Y = 0;

pcToPlc.Z = 0;

myPlc.WriteClass(pcToPlc, 8);

if (IsConveyor)

{


if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

SqlCommand sqlCommand = new SqlCommand(“Update Shelf SET Status=0 where Id =” + product.ShelfId, sqlConnection);

sqlCommand.ExecuteNonQuery();

SqlCommand sqlCommand2 = new SqlCommand(“Update Product SET ShelfId=NULL where Id =” + product.Id, sqlConnection);

sqlCommand2.ExecuteNonQuery();

}

else

{


if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

SqlCommand sqlCommand = new SqlCommand(“Update Shelf SET Status=1 where Id =” + shelf.Id, sqlConnection);

sqlCommand.ExecuteNonQuery();

SqlCommand sqlCommand2 = new SqlCommand(“Update Product SET ShelfId= ” + shelf.Id + ” where Id = ” + product.Id, sqlConnection);

sqlCommand2.ExecuteNonQuery();

}

dropProductProcess = DropProductRequestProcess.Done;

}

break;

}

case DropProductRequestProcess.Done:

{


break;

}

}

if (dropProductProcess == DropProductRequestProcess.Done)

{


bProcessExist = false;

dropProductProcess = DropProductRequestProcess.Initialize;

return true;

}

Thread.Sleep(500);

}

}

#endregion

// =======================================

#region ‘ Form Methods ‘

private void Form1_Load(object sender, EventArgs e)

{


this.DoubleBuffered = true;

this.ResizeRedraw = true;

lblProcess.Text = “”;

CheckForIllegalCrossThreadCalls = false;

myPlc = new Plc(CpuType.S71500, “192.168.127.100”, 0, 1);、、

sqlConnection = new SqlConnection(“Data Source=192.168.127.40,49170; Initial Catalog=ASRSConsol;Persist Security Info=False; User ID=AGVTEAM; Password=agv.1234;”);

//  thread = new Thread(GetData);

//  shelfTimer.Start();

}

// =======================================

[Obsolete]

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{


pcToPlc.bPcActive = false;

if (myPlc.IsConnected)

myPlc.WriteClass(pcToPlc, 8);

if (thread.ThreadState == ThreadState.WaitSleepJoin)

thread.Abort();

else if (thread.ThreadState == ThreadState.Suspended)

{


thread.Resume();

thread.Abort();

}

}

// =======================================

private void shelfTimer_Tick(object sender, EventArgs e)

{


try

{


if (plcToPc.bAutomaticMode)

lblMode.Text = “Otomatik”;

else

lblMode.Text = “Manual”;

if (plcToPc.bTaskDeleted)

lblTaskStatus.Text = “Görev silindi!”;

else if (plcToPc.bTaskDone)

lblTaskStatus.Text = “Görev tamamlandı!”;

else if (plcToPc.bTaskTaken)

lblTaskStatus.Text = “Görev alındı!”;

else if (plcToPc.bTaskExist)

lblTaskStatus.Text = “Görev var!”;

else

lblTaskStatus.Text = “Görev bekleniyor!”;

// ==============

// shelf status update

if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select * From Shelf”, sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

sqlConnection.Close();

}

catch (Exception ex)

{


pokeMessage(ex.Message, MessageDialogIcon.Error, MessageDialogButtons.OK);

}

finally

{


foreach (DataRow dataRow in dataTable.Rows)

{


string panel = “p” + dataRow.ItemArray[1];

var panel1 = this.Controls.Find(panel, true)[0];

if ((bool)dataRow.ItemArray[2])

{


if (sqlConnection.State != ConnectionState.Open)

sqlConnection.Open();

dataAdapter = new SqlDataAdapter(“Select Name From Product where ShelfId=” + dataRow.ItemArray[0], sqlConnection);

dataTable = new DataTable();

dataAdapter.Fill(dataTable);

Label lblLetter = new Label();

lblLetter.AutoSize = true;

lblLetter.TextAlign = ContentAlignment.MiddleRight;

lblLetter.ForeColor = Color.DarkRed;

lblLetter.Font = new Font(“Corbel”, 100, FontStyle.Bold);

if (dataTable.Rows[0].ItemArray[0].ToString() == “EE”)

lblLetter.Text = “E”;

else

lblLetter.Text = dataTable.Rows[0].ItemArray[0].ToString();

if (panel1.Controls.Count > 0)

{

}

else

{


panel1.Controls.Add(lblLetter);

}

panel1.BackColor = Color.LightCoral;

}

else

{


if (panel1.Controls.Count > 0)

{


panel1.Controls.Remove(panel1.Controls[0]);

}

panel1.BackColor = Color.LightGreen;

}

}

}

}

#endregion

// =======================================

}

}



版权声明:本文为xdpcxq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。