Example #1
0
        private void FormMain_Load(object sender, EventArgs e)
        {
            try
            {
                txtResult.AppendText("FATEK PLC COMMUNICATION PROTOCOL VIA SERIALPORT\r\n");
                txtResult.AppendText("===============================================================\r\n");
                txtResult.AppendText(string.Format("1. Port Name: COM5 \r\n"));
                txtResult.AppendText(string.Format("2. BaudRate: 9600 \r\n"));
                txtResult.AppendText(string.Format("3. Parity: Even \r\n"));
                txtResult.AppendText(string.Format("4. DataBits: 7 \r\n"));
                txtResult.AppendText(string.Format("5. StopBits: One \r\n"));

                txtResult.AppendText("===============================================================\r\n");
                txtResult.AppendText("Designed By Industrial Networks\r\n");
                txtResult.AppendText("Skype: katllu\r\n");
                txtResult.AppendText("Mobile: (+84) 909.886.483\r\n");
                txtResult.AppendText("E-mail: [email protected]\r\n");
                txtResult.AppendText("Youtube: https://www.youtube.com/industrialnetworks \r\n");
                txtResult.AppendText(Environment.NewLine);


                objFatekCommunication = new FatekCommunication("COM5", 9600, Parity.Even, 7, StopBits.One);
                objFatekCommunication.Connect();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public void Connect()
        {
            try
            {
                IsConnected = true;
                Console.WriteLine("STARTED: {0}", ++COUNTER);
                taskArray = new Task[Channels.Count];
                if (taskArray == null)
                {
                    throw new NullReferenceException("No Data");
                }
                for (var i = 0; i < Channels.Count; i++)
                {
                    taskArray[i] = new Task(chParam =>
                    {
                        FatekCommunication modbus = null;
                        var ch = (Channel)chParam;

                        modbus = mbe[ch.ChannelName];
                        modbus.Connect();
                        IsConnected = modbus.IsConnected;
                        while (IsConnected)
                        {
                            foreach (var dv in ch.Devices)
                            {
                                foreach (var db in dv.DataBlocks)
                                {
                                    if (!IsConnected)
                                    {
                                        break;
                                    }
                                    SendPackage(modbus, dv, db);
                                }
                            }
                        }
                    }, Channels[i]);
                    taskArray[i].Start();
                }
            }
            catch (Exception ex)
            {
                var err = new HMIException.ScadaException(this.GetType().Name, ex.Message);
                IsConnected = false;
            }
        }
 /// <summary>
 /// This constructor takes the COM number and baude rate and adds Parity bit and number of bit values and calls Fatek core constructor
 /// </summary>
 /// <param name="COMno"></param>
 /// <param name="baudRate"></param>
 public FatekPLCInterface(string COMno, int baudRate)
 {
     _comNumber            = COMno;
     objFatekCommunication = new FatekCommunication(COMNumber, baudRate, Parity.Even, 7, StopBits.One);
     objFatekCommunication.Connect();
 }