Esempio n. 1
0
        public static bool  АБОТА_С_ОЧЕРЕДЬЮ(string command, ДАННЫЕочередь buffer)
        {
            if (очередь == null)
            {
                return(false);
            }
            lock (очередь){
                if (command == "write")//записать
                {
                    data.очередь.Enqueue(buffer); return(true);
                }


                if (command == "read") // прочитать
                {
                    if (data.очередь.Count == 0)
                    {
                        return(false);
                    }
                    data.buf_read = data.очередь.Dequeue();
                    //   ref buffer = data.очередь.Dequeue();
                    return(true);
                }
            }      //lock
            return(true);
        }
Esempio n. 2
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.пропущенные++;
                }
            }
        }
Esempio n. 3
0
        public void readMSG()
        {
            UInt32 Read = 0;

            if (Read2 != 0)
            {
                if (Read2 != sizeFRAME)
                {
                    for (int i = 0; i < Read2; i++)
                    {
                        msgs[i].Id      = 0;
                        msgs[i].Data[0] = 0;
                        msgs[i].Data[1] = 0;
                        msgs[i].Data[2] = 0;
                        msgs[i].Data[3] = 0;
                        msgs[i].Data[4] = 0;
                        msgs[i].Data[5] = 0;
                        msgs[i].Data[6] = 0;
                        msgs[i].Data[7] = 0;
                    }
                }
                else
                {
                    for (int i = 0; i < sizeFRAME; i++)
                    {
                        msgs[i].Id      = 0;
                        msgs[i].Data[0] = 0;
                        msgs[i].Data[1] = 0;
                        msgs[i].Data[2] = 0;
                        msgs[i].Data[3] = 0;
                        msgs[i].Data[4] = 0;
                        msgs[i].Data[5] = 0;
                        msgs[i].Data[6] = 0;
                        msgs[i].Data[7] = 0;
                    }
                }
            }


            CanDevice.Read(ref msgs, sizeFRAME, ref Read);



            Read2 = Read;
            if (!data.start_buff)
            {
                Thread.Sleep(100); return;
            }



            if (Read != 0)
            {
                data.can++; if (data.can > 1)
                {
                    data.can = 0;                              //индикатор квадрат
                }
                for (int i = 0; i < Read; i++)
                {
                    data.test_read++;
                    ДАННЫЕочередь buf = new ДАННЫЕочередь()
                    {
                        time     = DateTime.Now,//data.getTIME(),
                        strERROR = GetStatus(),
                        adr      = msgs[i].Id,
                        sz       = msgs[i].Size,
                        b1       = msgs[i].Data[0],
                        b2       = msgs[i].Data[1],
                        b3       = msgs[i].Data[2],
                        b4       = msgs[i].Data[3],
                        b5       = msgs[i].Data[4],
                        b6       = msgs[i].Data[5],
                        b7       = msgs[i].Data[6],
                        b8       = msgs[i].Data[7]
                    };
                    //////////////////////////////////////////////////////////////////

                    //ПОМЕЩАЕМ В ОЧЕРЕДЬ
                    if (!data.АБОТА_С_ОЧЕРЕДЬЮ("write", buf))
                    {
                        data.пропущенные++;
                    }
                }
            }
        }
Esempio n. 4
0
 public data()
 {
     очередь  = new Queue <ДАННЫЕочередь>();
     buf_read = new ДАННЫЕочередь();
 }
Esempio n. 5
0
 public data()
 {
     // <ДАННЫЕочередь> - тип данных с какими работает очередь
     очередь  = new Queue <ДАННЫЕочередь>();
     buf_read = new ДАННЫЕочередь();
 }