Ejemplo n.º 1
0
        //============== ГЛАВНЫЙ ЦИКЛ ПОТОКА CAN
        void main()
        {
            pFORM = data.adres_FORM1;//берем адрес формы
            if (data.adres_FORM1 == null)
            {
                Thread.Sleep(100); return;
            }                                                           //значит поток формы еще не запустился


            //коды событий
            if (data.con == 1)
            {
                data.con = 0; data.SOBstr = ""; iniCAN(); data.SOBIT = true;
            }
            if (data.con == 2)
            {
                data.con = 0; data.SOBstr = ""; closeCAN(); data.SOBIT = true;
            }

            //clear buffer
            if (data.con == 5)
            {
                data.con = 0; data.SOBstr = ""; data.очередь.Clear(); pFORM.AddText("БУФЕР  ОЧИЩЕН");
            }


            ////////////////////////////////////////////////////////////////////////

            Thread.Sleep(100);// pFORM.AddText("main");
        }//work
Ejemplo n.º 2
0
        //*****************************************************************************************
        //                     ГЛАВНЫЙ ЦИКЛ ОСНОВНОГО ПОТОКА thread2
        //*****************************************************************************************
        void main()
        {
            pFORM = data.adres_FORM1;//берем адрес формы
            if (data.adres_FORM1 == null)
            {
                Thread.Sleep(100); return;
            }                                                           //значит поток формы еще не запустился

            Thread.Sleep(500);

            try
            {
                if (data.port == null)
                {
                    // pFORM.AddText(" test");

                    if (data.StartOpenport)
                    {
                        pFORM.AddText("Подключение... " + data.nameport);
                        data.port = new SerialPort(data.nameport, 19200, Parity.None, 8, StopBits.One);

                        try
                        {
                            data.StartOpenport = false;

                            data.port.Handshake     = Handshake.None;
                            data.port.DtrEnable     = true;
                            data.port.RtsEnable     = false;
                            data.port.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);
                            data.port.Open();
                        }
                        catch (Exception ex)
                        {
                            pFORM.AddText("Ошибка открытия порта: " + ex.Message.ToString());
                            data.StartOpenport = false;
                            data.port          = null;
                        }
                        finally
                        {
                            pFORM.AddText("Подключение успешно ");
                            Thread.Sleep(1000);
                        }
                    }
                }
            }
            catch { }
        }//work main
Ejemplo n.º 3
0
        }//task

        void test()
        {
            rand        = new Random();
            data.connOK = true;
            pFORM.AddText("test run");
            while (true)

            {
                if (!data.start_buff)
                {
                    Thread.Sleep(100); continue;
                }

                data.test_read++;
                ДАННЫЕочередь buf = new ДАННЫЕочередь()
                {
                    time     = DateTime.Now,//data.getTIME(),
                    strERROR = "",
                    adr      = (uint)rand.Next(255),
                    sz       = (byte)(rand.Next(7) + 1),
                    b1       = (byte)rand.Next(255),
                    b2       = (byte)rand.Next(255),
                    b3       = (byte)rand.Next(255),
                    b4       = (byte)rand.Next(255),
                    b5       = (byte)rand.Next(255),
                    b6       = (byte)rand.Next(255),
                    b7       = (byte)rand.Next(255),
                    b8       = (byte)rand.Next(255)
                };
                //ПОМЕЩАЕМ В ОЧЕРЕДЬ
                Thread.Sleep(50);
                if (!data.АБОТА_С_ОЧЕРЕДЬЮ("write", buf))
                {
                    data.пропущенные++;
                }
            }
        }
Ejemplo n.º 4
0
        void TASK_1()//==============  TASK1
        {
            if (iniTASK())
            {
                return;
            }


            if (data.port != null && data.Transmit_Start)
            {
                byte[] bytes = { 0, 0 };
                bytes[0] = data.TXdata.d1;
                bytes[1] = data.TXdata.d2;
                ushort crc = CRC16.ComputeChecksum(bytes);

                data.TXdata.crc1 = (byte)(crc >> 8);
                ushort tmp = (ushort)(crc << 8);
                data.TXdata.crc2 = (byte)(tmp >> 8);

                byte[] dt = { 0, 0, 0, 0, 0, 0, 0, 0 };

                dt[0] = data.TXdata.SlaveAddres;
                dt[1] = data.TXdata.fun_code;
                dt[2] = data.TXdata.adr2;
                dt[3] = data.TXdata.adr1;
                dt[4] = data.TXdata.d2;
                dt[5] = data.TXdata.d1;
                dt[6] = data.TXdata.crc1;
                dt[7] = data.TXdata.crc2;

                data.port.Write(dt, 0, 8);
                //  pFORM.AddText(String.Format("send1     {0};{1};{2};{3};{4};{5};{6};{7}; ",
                //       dt[0], dt[1], dt[2], dt[3], dt[4], dt[5], dt[6], dt[7]));

                Thread.Sleep(100);



                bytes[0] = data.TXdata.d3;
                bytes[1] = data.TXdata.d4;
                crc      = CRC16.ComputeChecksum(bytes);

                data.TXdata.crc1 = (byte)(crc >> 8);
                tmp = (ushort)(crc << 8);
                data.TXdata.crc2 = (byte)(tmp >> 8);


                dt[0] = data.TXdata.SlaveAddres;
                dt[1] = data.TXdata.fun_code;
                dt[2] = data.TXdata.adr1;
                dt[3] = data.TXdata.adr2;
                dt[4] = data.TXdata.d4;
                dt[5] = data.TXdata.d3;
                dt[6] = data.TXdata.crc1;
                dt[7] = data.TXdata.crc2;

                data.port.Write(dt, 0, 8);

                // pFORM.AddText(String.Format("send2     {0};{1};{2};{3};{4};{5};{6};{7}; ",
                //        dt[0], dt[1], dt[2], dt[3], dt[4], dt[5], dt[6], dt[7]));

                pFORM.AddText("Отправка выполнена");

                data.Transmit_Start = false;
            }


            Thread.Sleep(200);
        }//task1