Местный
Регистрация: 09.02.2005
Адрес: Донецк
Сообщений: 1,941
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Рейтинг мнений:
Вес репутации: 0
|
Автоматизация печати
Многие обитатели форума знают, что я ношусь со своей системой автоматизации печати, как с писан(н)ой торбой.
Оно и понятно - характер стоящих передо мной задач, а, точнее, мой собственный характер, от задач независимый, предполагает, что оборудование будет работать само, а я буду нежиться, как одалиска (см. Превращение Кафки).
До сего дня я радикально решил две задачи - распределение задачи на группу принтеров, то есть работа с группой принтеров, как с одним, и работа со множеством печатаемых документов, как с одним документом.
Образцом для меня всегда служили японские товарищи, построившие кластер Айгенов. От момента, когда я узнал об этом кластере, прошло уже года два, а то и более, но меня всегда интересовал один вопрос - а что они будут делать, если какой-то из аппаратов в середине тиража станет, или встанут вобще все?
Здесь что самое неприятное - внутри аппарата уже находятся какие-то данные, фактически целые документы, которых уже нет в очереди, и, что самое неприятное - сколько их там - сказать сразу нельзя, и также сразу не сказать, ЧТО ИМЕННО там находится.
При выключении всё тю-тю. Остаётся ошмёток в очереди, но от него толку нет. Если даже сохранять документы в очереди - толку нет всё равно, так как не ясно, что улетело, но напечатано не было, особенно если документ многостраничный и длинный.
На простом примере это выглядит так. В принтер идёт такая вот СОСИСГО:
ФЫВАП (Х экз) - ОРРПОРП (Y экз) - ЬБТБЬТ (Z экз) - и т.д.
Каждая буква - это страница в кореловском документе, совокупность букв между тире - группа страниц, печатаемая в одном и том же количестве экземпляров.
Тут возникает очевидная идея - если телега встала где-то, неизвестно где, то мы можем определить, где именно!!! Ведь у нас есть счётчик отпечатков в самом принтере!!!
Итак - перед началом задания читаем счётчик отпечатков, после брейка и перезапуска снова читаем счётчик, и - вуаля!!! Можно определить, на каком именно месте сосиски произошёл сбой!!!
Стоит ли говорить, что никакого API и SDK для статус-монитора нет, но создатели благоразумно предусмотрели пункт в меню - сохранить счётчики. Так что тупо, через SendKey, передаём в статус-монитор команду дампить счётчики, потом сравниваем с тем, какой счётчик был до начала задания, и видим, на какой именно странице принтер встал.
Теперь скрипт допечатывает документ уже с нужного места...
И не надо ничего руками пересчитывать...
Конечно, на деле всё это превращается в умственный лесоповал... Потому что в начале пути есть, скажем, 20-страничный документ в Кореле, и таблица с количеством копий каждой страницы.
Но документ печатается не постранично, а ПОСОСИСОЧНО, и СОСИСКИ делает скрипт - например, 1,2,3,5 страницы должны печататься по 5 копий, а 4 и 6 - по 2 копии. Если отправлять каждую страницу отдельным заданием, то телега встаёт после каждого такого задания, и ждёт, пока придёт следующее.
СОСИСКА же выклядит так - "1, 2, 3, 5" страницы по 5 копий - это одно задание, 4,6 по 2 - другое. В результате количество остановов для подкачки данных уменьшается в разы.
Но после такой перетасовки данных определение того, где именно останов произошёл - сущее мучение. Надо сначала определить номер сосиски, потом - номер страницы внутри сосиски, сопоставить эжтот номер со сквозной нумерацией в документе...
Однако ж - работает...
|