Exemple #1
0
        private void ConnectToStation(object IP)
        {
            ModbusClient StationClient;

            try
            {
                StationClient = new ModbusClient((string)IP);
                sockethandler(this, new SocketDisconnectEvent()
                {
                    status = "試車站PLC在線", TextColor = "WhiteSmoke"
                });
                CallButtonChangeDel(Btn_StationDisconnect, Btn_StationConnect, Lab_StationConnecting);
                DisConnectToStation = true;
                while (true)
                {
                    if (DisConnectToStation)
                    {
                        Thread.Sleep(1000);
                        Form1.RWLock.AcquireWriterLock(2000);
                        try
                        {
                            StationClient.ReadHoldRegister(1, 1, 20).CopyTo(Form1.StationDataBuffer, 0);
                        }
                        catch (SocketException)
                        {
                            sockethandler(this, new SocketDisconnectEvent()
                            {
                                status = "與試車站連線中斷", TextColor = "Red"
                            });
                            CallButtonChangeDel(Btn_StationConnect, Btn_StationDisconnect, Lab_StationConnecting);
                            StationClient.Disconnect();
                            break;
                        }
                        finally
                        {
                            Form1.RWLock.ReleaseWriterLock();
                        }
                    }
                    else
                    {
                        StationClient.Disconnect();
                        break;
                    }
                }
            }
            catch (SocketException)
            {
                MessageBox.Show("未取得與伺服器的連線\n請檢察線路及IP是否正確", "連接錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sockethandler(this, new SocketDisconnectEvent()
                {
                    status = "未與試車站建立連結", TextColor = "Red"
                });
                CallButtonChangeDel(Btn_StationConnect, Btn_StationDisconnect, Lab_StationConnecting);
            }
            //Customize_Function_Stop
        }
Exemple #2
0
 private void ConnectToStation()
 {
     try
     {
         ModbusClient StationClient = new ModbusClient("192.168.1.3");
         StationConnectStatic = true;
         while (true)
         {
             Thread.Sleep(1000);
             try
             {
                 RWLock.AcquireWriterLock(2000);
                 StationClient.ReadHoldRegister(1, 0, 20).CopyTo(StationDataBuffer, 0);
             }
             catch (SocketException)
             {
                 sockethandler(this, new SocketDisconnectEvent()
                 {
                     status = "與試車站連線中斷", TextColor = "Red"
                 });
                 StationClient.Disconnect();
                 break;
             }
             finally
             {
                 if (RWLock.IsWriterLockHeld)
                 {
                     RWLock.ReleaseWriterLock();
                 }
             }
         }
     }
     catch (SocketException)
     {
         StationConnectStatic = false;
     }
 }
Exemple #3
0
 private void ConnectToUnit(object IP)
 {
     try
     {
         ModbusClient UintClient = new ModbusClient((string)IP);
         UnitSocketHandler(this, new SocketDisconnectEvent()
         {
             status = "機組PLC在線", TextColor = "WhiteSmoke", OpenButton = true
         });
         CallButtonChangeDel(Btn_UnitDisconnect, Btn_UnitConnect, Lab_UnitConnecting);
         DisConnectToUnit = true;
         while (true)
         {
             if (DisConnectToUnit)
             {
                 Thread.Sleep(1000);
                 RWLock2.AcquireWriterLock(2000);
                 try
                 {
                     UintClient.ReadHoldRegister(1, 0, 68).CopyTo(UnitDataBuffer, 0);
                     //  TripArray.GetTrip(UnitDataBuffer[51], UnitDataBuffer[50], 0, 0, 0, 0,UnitDataBuffer[51], UnitDataBuffer[50], MainForm.broker.TripValueSearch("OldTrip", "UnitTrip"), TripType1, DateTime.Now,MainForm.broker);
                     TripArray.GetTrip(UnitDataBuffer[51], UnitDataBuffer[50], UnitDataBuffer[53], UnitDataBuffer[52], UnitDataBuffer[53], UnitDataBuffer[52], MainForm.broker.TripValueSearch("OldTrip", "UnitTrip"), MainForm.broker.TripValueSearch("OldTrip2", "UnitTrip"), TripType1, TripType2, DateTime.Now, MainForm.broker);
                     if (PCControl > 0)
                     {
                         for (int i = 0; i < Singal.Length; i++)
                         {
                             UintClient.WriteSingleCoil(1, (ushort)(8001 + i), Singal[i]);
                             Singal[i] = false;
                         }
                         PCControl--;
                     }
                 }
                 catch (SocketException)
                 {
                     UnitSocketHandler(this, new SocketDisconnectEvent()
                     {
                         status = "與機組連線中斷", TextColor = "Red"
                     });
                     CallButtonChangeDel(Btn_UnitConnect, Btn_UnitDisconnect, Lab_UnitConnecting);
                     UintClient.Disconnect();
                     break;
                 }
                 finally
                 {
                     RWLock2.ReleaseWriterLock();
                 }
             }
             else
             {
                 UintClient.Disconnect();
                 break;
             }
         }
     }
     catch (SocketException)
     {
         MessageBox.Show("未取得與伺服器的連線\n請檢察線路及IP是否正確", "連接錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
         UnitSocketHandler(this, new SocketDisconnectEvent()
         {
             status = "未與機組建立連結", TextColor = "Red"
         });
         CallButtonChangeDel(Btn_UnitConnect, Btn_UnitDisconnect, Lab_UnitConnecting);
     }
 }