コード例 #1
0
        void PLAY()
        {
            if (data.очередьКОПИЯ == null)
            {
                pFORM.AddText("ОШИБКА НЕ СОЗДАНА КОПИЯ"); return;
            }
            if (data.очередьКОПИЯрабочая == null)
            {
                pFORM.AddText("ОШИБКА НЕ СОЗДАНА КОПИЯрабочая"); return;
            }

            try
            {
                DateTime datanew = new DateTime();

                uint id; string err;
                byte sz, b1, b2, b3, b4, b5, b6, b7, b8;



                if (!data.connOK)
                {
                    pFORM.AddText("-Отмена воспр.-  нет связи\n"); Thread.Sleep(2000); return;
                }


                if (data.очередьКОПИЯрабочая.Count == 0)
                {
                    if (pFORM.ctviv > 2000)
                    {
                        pFORM.CLEAR();
                    }

                    pFORM.AddText("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nЦикл закончен РЕСТАРТ\n");
                    //  data.очередьКОПИЯрабочая = data.очередьКОПИЯ;


                    data.COPY2();

                    lasttime = new DateTime();
                    Thread.Sleep(500);
                }
                //pFORM.AddText(String.Format("размер рабоч={0}  + копия={1}   o={2}",
                //    data.очередьКОПИЯрабочая.Count, data.очередьКОПИЯ.Count, data.очередь.Count));

                if (data.АБОТА_С_ОЧЕРЕДЬЮ_PLAY(2))  //читаем
                {
                    err     = data.buf_readPLAY.strERROR;
                    datanew = data.buf_readPLAY.time;
                    id      = data.buf_readPLAY.adr;
                    sz      = data.buf_readPLAY.sz;
                    b1      = data.buf_readPLAY.b1;
                    b2      = data.buf_readPLAY.b2;
                    b3      = data.buf_readPLAY.b3;
                    b4      = data.buf_readPLAY.b4;
                    b5      = data.buf_readPLAY.b5;
                    b6      = data.buf_readPLAY.b6;
                    b7      = data.buf_readPLAY.b7;
                    b8      = data.buf_readPLAY.b8;
                }
                else
                {
                    Thread.Sleep(50); return;
                }


                //    data.РАБОТА_С_ОЧЕРЕДЬЮplay("write", data.buf_readPLAY);



                try
                {
                    //пауза
                    if (lasttime != new DateTime())
                    {
                        //7:39:55.827

                        var a = datanew.Subtract(lasttime);

                        int pause = (int)Math.Abs(a.TotalMilliseconds);
                        //if (a.TotalMilliseconds>49) Thread.Sleep(a.TotalMilliseconds);



                        //pFORM.AddTextCONT(//"delta ms=" + a.TotalMilliseconds.ToString() + ";"+
                        //String.Format("p={0};", pause));


                        if (pause > 5000)
                        {
                            pause = 5000;
                        }


                        if (pause >= 50) //иначе зависнет дисплей не будет успевать
                        {
                            pFORM.ctviv++;


                            if (pFORM.ctviv < 2000)
                            {
                                pFORM.AddTextCONTperv(String.Format("P={0}", pause) + " playID: " + pFORM.HX(id) + "    Size: " + sz + "         Data: " +
                                                      String.Format("{0} {1} .{2} {3}  : {4} {5} .{6} {7}  \n", pFORM.HX(b1), pFORM.HX(b2), pFORM.HX(b3), pFORM.HX(b4),
                                                                    pFORM.HX(b5), pFORM.HX(b6), pFORM.HX(b7), pFORM.HX(b8)));
                            }
                        }


                        if (pause >= 70 && pause < 100000)
                        {
                            Thread.Sleep(pause);
                        }
                    }


                    lasttime = datanew;
                }
                catch (Exception ex) { pFORM.AddText("Ошибка расчета паузы между сообщениями" + ex.Message); }


                //pFORM.AddTextCONTperv(data.getTIME() + "  TEСТ  ID: " + pFORM.HX(id) + "    Size: " + sz + "         Data: " +
                //                       String.Format("{0} {1} .{2} {3}  : {4} {5} .{6} {7}  \n",
                //                       pFORM.HX(b1), pFORM.HX(b2), pFORM.HX(b3), pFORM.HX(b4),
                //                       pFORM.HX(b5), pFORM.HX(b6), pFORM.HX(b7), pFORM.HX(b8)));

                data.sz  = sz;
                data.adr = id;
                data.b1  = b1;
                data.b2  = b2;
                data.b3  = b3;
                data.b4  = b4;
                data.b5  = b5;
                data.b6  = b6;
                data.b7  = b7;
                data.b8  = b8;


                SEND();
            }
            catch (Exception ex) { pFORM.AddText("ФАТАЛЬНАЯ ОШИБКА ВОСПРОИЗВЕДЕНИЯ " + ex.Message); data.PLAY = false; }



            //if (data.PLAYQueue.Count != 0) {pFORM.AddTextCONT("pz;");
            //    Thread.Sleep(50);}
            //if (data.PLAYQueue.Count != 0)
            //{
            //    pFORM.AddTextCONT("pz2;");
            //    Thread.Sleep(100);
            //} if (data.PLAYQueue.Count != 0)
            //{
            //    pFORM.AddTextCONT("pz3;");
            //    Thread.Sleep(200);
            //} if (data.PLAYQueue.Count != 0)
            //{
            //    pFORM.AddTextCONT("pz4;");
            //    Thread.Sleep(500);
            //}
        }