示例#1
0
        bool strSEND(string ww, byte startSTR, byte endSTR)
        {
            byte STR = 0;
            //возрат false ЗНАЧИТ при записи выскочила авария табло
            bool ZAVIS = false;

            uint ctMEM = 0;

            //while (data.TABLOERROR1 || data.TABLOERROR2)
            //{ Thread.Sleep(1000); cterr++; if (cterr == 10) { pFORM.AddText("!!!!  Табло ЗАВИСЛО перезапустить "); } }
//******************************************************************************


            int cterr = 0;



            //вышли из ошибки но надо выходить и снова переписывать
            //  if (ZAVIS) return(false);

//***************************************************************************************************
            if (ww.Length > (endSTR - startSTR) * 60)
            {
                pFORM.AddText("!!!  ОШИБКА ТЕКСТ НЕ ВЛЕЗАЕТ В ДИАПАЗОН СТРОК");
                return(true);
            }

            int lle = ww.Length;

            if (lle < (endSTR - startSTR + 1) * 60)
            {
                for (int e = 0; e < (((endSTR - startSTR + 1) * 60) - lle); e++)
                {
                    // pFORM.AddText(String.Format("e={0}",e ));
                    ww = ww + " ";
                }
            }


            uint ct = 0; int o = 0;

            STR = startSTR;

            byte[] b = Encoding.Default.GetBytes(ww);
            byte[] f = new byte[100];


            while (o < b.Length)
            {
                if (!data.connOK)
                {
                    pFORM.AddText("-Отмена записи строки -  нет связи\n"); return(true);
                }
                //---------------------------------------------------
                if (ZAVIS)
                {
                    if (ct == 0)
                    {
                        ct = 10; ctMEM = 10;   pFORM.AddText(String.Format("ct=0 ставим={0}", ctMEM));
                    }

                    o = o - (int)(6 * ctMEM);    if (o < 0)
                    {
                        o = 0;
                    }
                    ZAVIS = false;
                    pFORM.AddText(String.Format("возврат. стоп на подстроке={0}", ctMEM));

                    ct = 0;
                }

                int j = 0;
                while (j < 6)
                {
                    try
                    {
                        if (o < b.Length)
                        {
                            f[j] = b[o];
                        }
                        else
                        {
                            f[j] = 32;
                        }
                    }
                    catch (Exception ex) { pFORM.AddText(String.Format("err={0}", ex.Message)); }

                    o++; j++;
                }

                //pFORM.AddText("формир f[]="+String.Format(" >{0}{1}{2}{3}{4}{5}<", pFORM.toSYMBOL(f[0]),
                //   pFORM.toSYMBOL(f[1]), pFORM.toSYMBOL(f[2]), pFORM.toSYMBOL(f[3]),
                //   pFORM.toSYMBOL(f[4]), pFORM.toSYMBOL(f[5])) );
                //---------------------------------------------------

                if (ct < 10)
                {
                    ct++;
                }                     //подстроки
                else
                {
                    ct = 1;


                    STR++;
                    Thread.Sleep(500);//а то не успевает табло

                    if (data.pauseWRITE)
                    {
                        pFORM.AddText("\n ПАУЗА ..");
                        while (data.pauseWRITE)
                        {
                            Thread.Sleep(100);
                        }
                        pFORM.AddText(" продолжаем\n");
                    }


                    if (STR > endSTR)
                    {
                        pFORM.AddText("ТЕКСТ  НЕ  ВЛЕЗАЕТ В ДИАПАЗОН СТРОК!!!!!!!!!!!!!!!! ОШИБКА\n\nОШИБКА!!!"); return(true);
                    }
                }



                string ii1 = String.Format(" >{0}{1}{2}{3}{4}{5}<", pFORM.toSYMBOL(f[0]),
                                           pFORM.toSYMBOL(f[1]), pFORM.toSYMBOL(f[2]), pFORM.toSYMBOL(f[3]),
                                           pFORM.toSYMBOL(f[4]), pFORM.toSYMBOL(f[5]));



                if (o >= b.Length || ct == 10)
                {
                    pFORM.AddText(String.Format("- финал" + ii1 + " " + String.Format("СТРОКА {0} подстрока {1} ", STR, ct)));



                    if (data.TABLOERROR1 || data.TABLOERROR2)// return (false);//все пропало с ошибкой
                    {
                        ZAVIS = true; cterr = 0;
                        byte wrSTR = STR;
                        wrSTR++;;
                        if (STR == startSTR)
                        {
                            wrSTR = STR; wrSTR++;
                        }
                        if (STR == endSTR)
                        {
                            wrSTR = STR; wrSTR--; STR--;
                        }

                        pFORM.AddTextCONT("сброс на посл. строке; ");
                        СБРОСтабло();
                        break;
                    }
                    SEND2(0x38A, 8, STR, 0x16, f[0], f[1], f[2], f[3], f[4], f[5], "запись последняя ");
                }
                else
                {
                    pFORM.AddText(String.Format("- пишем " + ii1 + " " + String.Format("СТРОКА {0} подстрока {1} ", STR, ct)));

                    // if (data.TABLOERROR1 || data.TABLOERROR2) return (false);//все пропало с ошибкой
//********************************************************************
                    cterr = 0;
                    if (!data.TABLOERROR1 && !data.TABLOERROR2)
                    {
                        ZAVIS = false;
                    }

                    while ((data.TABLOERROR1 || data.TABLOERROR2) && ZAVIS)//уже рестарт зависание
                    {
                        Thread.Sleep(1000); pFORM.AddTextCONT("}");
                        if (!data.connOK)
                        {
                            pFORM.AddText("-Отмена-  нет связи\n"); return(true);
                        }
                    }


                    while (data.TABLOERROR1 || data.TABLOERROR2)
                    {
                        if (!data.TABLOERROR1 && !data.TABLOERROR2)
                        {
                            ZAVIS = false;
                        }

                        int tablerr = 0;
                        while ((data.TABLOERROR1 || data.TABLOERROR2) && ZAVIS)//уже рестарт зависание
                        {
                            Thread.Sleep(1000); pFORM.AddTextCONT(";");
                            if (!data.connOK)
                            {
                                pFORM.AddText("-Отмена записи строки-  нет связи\n"); return(true);
                            }
                            tablerr++;
                            if (tablerr > 5)
                            {
                                СБРОСтабло(); tablerr = 0; pFORM.AddTextCONT("сбр;");
                            }
                        }


                        Thread.Sleep(100);   //ждем пока нет ошибок
                        cterr++;


                        if (cterr > 50)
                        {
                            ZAVIS = true; cterr = 0;


                            byte wrSTR = STR;
                            wrSTR++;;
                            if (STR == startSTR)
                            {
                                wrSTR = STR; wrSTR++;
                            }
                            if (STR == endSTR)
                            {
                                wrSTR = STR; wrSTR--; STR--;
                            }

                            pFORM.AddTextCONT("сброс; ");
                            СБРОСтабло();
                            break;
                        }
                    }

                    //**********************************************

                    if (!ZAVIS)
                    {
                        SEND2(0x38A, 8, STR, 0x06, f[0], f[1], f[2], f[3], f[4], f[5], "запись ");
                    }
                }//else не последняя часть не финал

                if (ZAVIS)
                {
                    ctMEM = ct; pFORM.AddTextCONT("неуд на" + String.Format(" подстроке={0};   ", ct)); continue;
                }
            }

            if (STR != endSTR)
            {
                pFORM.AddText(String.Format("ОШИБКА НЕ СООТВ СТРОК  с {0} по {1} (останов на {2})  ошибок={3};\n", startSTR, endSTR, STR, GLOBERR)); return(false);
            }
            pFORM.AddText(String.Format("\nЗАПИСЬ ВЫПОЛНЕНА.  ИТОГО ЗАНЯТЫЕ СТРОКИ с {0} по {1} (останов на {2})  ошибок={3};\n", startSTR, endSTR, STR, GLOBERR));
            return(true);
        }