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); }
}//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.пропущенные++; } } }
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.пропущенные++; } } } }
public data() { очередь = new Queue <ДАННЫЕочередь>(); buf_read = new ДАННЫЕочередь(); }
public data() { // <ДАННЫЕочередь> - тип данных с какими работает очередь очередь = new Queue <ДАННЫЕочередь>(); buf_read = new ДАННЫЕочередь(); }