X Регистрация |
Здравствуйте! Для размещения своих сообщений на форуме предлагаем зарегистрироваться. |
![]() |
![]() |
![]() |
![]() |
#1 |
Местный
|
![]()
Многие обитатели форума знают, что я ношусь со своей системой автоматизации печати, как с писан(н)ой торбой.
Оно и понятно - характер стоящих передо мной задач, а, точнее, мой собственный характер, от задач независимый, предполагает, что оборудование будет работать само, а я буду нежиться, как одалиска (см. Превращение Кафки). До сего дня я радикально решил две задачи - распределение задачи на группу принтеров, то есть работа с группой принтеров, как с одним, и работа со множеством печатаемых документов, как с одним документом. Образцом для меня всегда служили японские товарищи, построившие кластер Айгенов. От момента, когда я узнал об этом кластере, прошло уже года два, а то и более, но меня всегда интересовал один вопрос - а что они будут делать, если какой-то из аппаратов в середине тиража станет, или встанут вобще все? Здесь что самое неприятное - внутри аппарата уже находятся какие-то данные, фактически целые документы, которых уже нет в очереди, и, что самое неприятное - сколько их там - сказать сразу нельзя, и также сразу не сказать, ЧТО ИМЕННО там находится. При выключении всё тю-тю. Остаётся ошмёток в очереди, но от него толку нет. Если даже сохранять документы в очереди - толку нет всё равно, так как не ясно, что улетело, но напечатано не было, особенно если документ многостраничный и длинный. На простом примере это выглядит так. В принтер идёт такая вот СОСИСГО: ФЫВАП (Х экз) - ОРРПОРП (Y экз) - ЬБТБЬТ (Z экз) - и т.д. Каждая буква - это страница в кореловском документе, совокупность букв между тире - группа страниц, печатаемая в одном и том же количестве экземпляров. Тут возникает очевидная идея - если телега встала где-то, неизвестно где, то мы можем определить, где именно!!! Ведь у нас есть счётчик отпечатков в самом принтере!!! Итак - перед началом задания читаем счётчик отпечатков, после брейка и перезапуска снова читаем счётчик, и - вуаля!!! Можно определить, на каком именно месте сосиски произошёл сбой!!! Стоит ли говорить, что никакого API и SDK для статус-монитора нет, но создатели благоразумно предусмотрели пункт в меню - сохранить счётчики. Так что тупо, через SendKey, передаём в статус-монитор команду дампить счётчики, потом сравниваем с тем, какой счётчик был до начала задания, и видим, на какой именно странице принтер встал. Теперь скрипт допечатывает документ уже с нужного места... И не надо ничего руками пересчитывать... Конечно, на деле всё это превращается в умственный лесоповал... Потому что в начале пути есть, скажем, 20-страничный документ в Кореле, и таблица с количеством копий каждой страницы. Но документ печатается не постранично, а ПОСОСИСОЧНО, и СОСИСКИ делает скрипт - например, 1,2,3,5 страницы должны печататься по 5 копий, а 4 и 6 - по 2 копии. Если отправлять каждую страницу отдельным заданием, то телега встаёт после каждого такого задания, и ждёт, пока придёт следующее. СОСИСКА же выклядит так - "1, 2, 3, 5" страницы по 5 копий - это одно задание, 4,6 по 2 - другое. В результате количество остановов для подкачки данных уменьшается в разы. Но после такой перетасовки данных определение того, где именно останов произошёл - сущее мучение. Надо сначала определить номер сосиски, потом - номер страницы внутри сосиски, сопоставить эжтот номер со сквозной нумерацией в документе... Однако ж - работает...
__________________
Ксерокс DC 2060 "Лорен Дитрих", Ксерокс DC 12 "Дуся", Рико 7000 "Da Flyin' Hippo", Лакировка / ламинирование CD / DVD |
![]() |
![]() |