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); }