Fazatron
veni...vidi...vici...
- Сообщения
- 18
- Репутация
- 0
Версия AutoIt:v3.3.6.1
Описание: Всем Салют! На работе очень нужен логгер для учёта печати(у нас широкоформатная печать). Не хватает мне времени разобраться с языком, чтоб самому написать(.
Вобщем идея такая: в корне папки программы управляющей принтером я обнаружил ini-файл который меняет своё "содержимое" при различных условиях/действиях.
Этим можно воспользоваться для ведения лога. Вот основные состояния и данные файла которые нам пригодятся:
Желательно получить такой формат лога:
дата ДД:ММ:ГГГГ, время ЧЧ:ММ:СС, имя файла, качество, затраченное время(с начала старта и до полного окончанья
или принудительной остановки), статус, прогресс(если была принудительная остановка), пример:
22:10:2011 10:58:34 royal philharmonic orchestra 3х6.prt (3 Pass, 00:26:32) OK! ;файл отпечатан удачно
22:10:2011 11:02:52 royal philharmonic orchestra 3х6.prt (3 Pass, 00:15:45) Stoped! (345/509) ;остановлен на 345 проходе
22:10:2011 11:35:27 продажа 0,5х2.prt (4 Pass, 00:08:14) OK!
Главное разработать правильный алгоритм, чтоб не было случайных срабатываний или наоборот пропуск события мимо лога. Мой вариант такой: по запуску скрипта идёт опрос ini, по умолчанию его состояние известно как второе #2 (на вкладке с кодом выше), потом запускается программа для печати. Далее в печать отправляется задание, ini-файл изменится на третье состояние#3(событие добавляется в лог), периодически сменяясь состоянием #4, по завершении печати задачи, состояние ini-файла изменится на #5(при этом условии нужно дописать в строчку затраченное время и статус успешного завершения печати), но если печать была остановлена принудительно, состояние ini-файла примет состояние #6(при этом условии нужно дописать в строчку затраченное время и статус принуд. остановки задачи и проход на котором была остановка). Для того чтобы не набивать один и тот же тхт-файл, нужно генерировать каждый месяц новый, с именем числа месяца и года или очищать старый.
Тело файла PrintingStatus.ini:
Примечания: Для точно ведения лога придётся делать ежесекундное чтение файла, будет ли это сильно влиять на компьютер/программу для печати, есть ли альтернативный способ получения данных, например по факту изменения атрибутов файла? Мне точно сложно это написать, поэтому даже не знаю коммерческий это заказ или нет. Если есть шаблоны, дайте линк, попробую сам...
Заранее спасибо)
Описание: Всем Салют! На работе очень нужен логгер для учёта печати(у нас широкоформатная печать). Не хватает мне времени разобраться с языком, чтоб самому написать(.
Вобщем идея такая: в корне папки программы управляющей принтером я обнаружил ini-файл который меняет своё "содержимое" при различных условиях/действиях.
Этим можно воспользоваться для ведения лога. Вот основные состояния и данные файла которые нам пригодятся:
Код:
#1[PrintingStatus]
uiPass=2 - Количество проходов (Pass) при печати данного файла (значение 0 означает 1 pass, 2=3p, 3=4p, 4=6p, 5=8p, 6=12p, 7=16p)
uiMargin=14598
csPrintingFile=royal philharmonic orchestra 3х6.prt - Имя файла
csPrintingFilePath=d:\rip\royal philharmonic orchestra 3х6.prt - Путь Файла
uiFire=26157
uiStepSendCurrent=509 - Текущий шаг(проход), если значение равно нижнему значит файл полностью отпечатан
uiStepSendCount=509 - Общие количество шагов(проходов) для текущего файла
bIfYMove=2 - Состояние каретки голов, 0 = движение по Y, 1 = остановка для прохода или ожидание на паузе в доке, 2 = остановка/окончание печати
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=0 - это значение принимает 1 если файл принудительно остановлен
По умолчанию в ini хранятся данные последнего запущенного в печать файла
#2[PrintingStatus]
uiPass=3
uiMargin=2268
csPrintingFile=продажа 0,5х2.prt
csPrintingFilePath=d:\rip\продажа 0,5х2.prt
uiFire=13827
uiStepSendCurrent=37
uiStepSendCount=37
bIfYMove=2
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=0
Отправка нового файла в печать, при старте печати происходит
обновление ini, соответственно новое имя или старое, если тот же файл в очереди,
качество (uiPass) тоже обновляется, печать в процессе: 6 из 253 проходов (2%)
#3[PrintingStatus]
uiPass=2
uiMargin=2268
csPrintingFile=6000x3000_готов korea.prt
csPrintingFilePath=d:\rip\6000x3000_готов korea.prt
uiFire=13827
uiStepSendCurrent=6
uiStepSendCount=253
bIfYMove=0
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=0
Остановка печатающей каретки по Y или режим ожидания/паузы в доке:
при этом значение IfYMove равено 1
#4[PrintingStatus]
uiPass=2
uiMargin=2268
csPrintingFile=6000x3000_готов korea.prt
csPrintingFilePath=d:\rip\6000x3000_готов korea.prt
uiFire=13827
uiStepSendCurrent=9
uiStepSendCount=253
bIfYMove=1
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=0
Окончание печати файла (100%):
при этом значения Step-Current и Step-Count равны,
значение bIfYMove равно 2
#5[PrintingStatus]
uiPass=2
uiMargin=2268
csPrintingFile=6000x3000_готов korea.prt
csPrintingFilePath=d:\rip\6000x3000_готов korea.prt
uiFire=13827
uiStepSendCurrent=253
uiStepSendCount=253
bIfYMove=2
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=0
Принудительная остановка печати:
значения Step-Current и Step-Count канешно же разные,
а значение bPrintStop равно 1,значение bIfYMove равно 2
#6[PrintingStatus]
uiPass=2
uiMargin=2268
csPrintingFile=6000x3000_готов korea.prt
csPrintingFilePath=d:\rip\6000x3000_готов korea.prt
uiFire=13827
uiStepSendCurrent=1
uiStepSendCount=253
bIfYMove=2
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=1
дата ДД:ММ:ГГГГ, время ЧЧ:ММ:СС, имя файла, качество, затраченное время(с начала старта и до полного окончанья
или принудительной остановки), статус, прогресс(если была принудительная остановка), пример:
22:10:2011 10:58:34 royal philharmonic orchestra 3х6.prt (3 Pass, 00:26:32) OK! ;файл отпечатан удачно
22:10:2011 11:02:52 royal philharmonic orchestra 3х6.prt (3 Pass, 00:15:45) Stoped! (345/509) ;остановлен на 345 проходе
22:10:2011 11:35:27 продажа 0,5х2.prt (4 Pass, 00:08:14) OK!
Главное разработать правильный алгоритм, чтоб не было случайных срабатываний или наоборот пропуск события мимо лога. Мой вариант такой: по запуску скрипта идёт опрос ini, по умолчанию его состояние известно как второе #2 (на вкладке с кодом выше), потом запускается программа для печати. Далее в печать отправляется задание, ini-файл изменится на третье состояние#3(событие добавляется в лог), периодически сменяясь состоянием #4, по завершении печати задачи, состояние ini-файла изменится на #5(при этом условии нужно дописать в строчку затраченное время и статус успешного завершения печати), но если печать была остановлена принудительно, состояние ini-файла примет состояние #6(при этом условии нужно дописать в строчку затраченное время и статус принуд. остановки задачи и проход на котором была остановка). Для того чтобы не набивать один и тот же тхт-файл, нужно генерировать каждый месяц новый, с именем числа месяца и года или очищать старый.
Тело файла PrintingStatus.ini:
Код:
[PrintingStatus]
uiPass=2
uiMargin=2268
csPrintingFile=6000x3000_готов korea.prt
csPrintingFilePath=d:\rip\6000x3000_готов korea.prt
uiFire=13827
uiStepSendCurrent=41
uiStepSendCount=253
bIfYMove=0
bHorizontalMirror=0
uiFeatherSize=0
bPrintStop=0
Примечания: Для точно ведения лога придётся делать ежесекундное чтение файла, будет ли это сильно влиять на компьютер/программу для печати, есть ли альтернативный способ получения данных, например по факту изменения атрибутов файла? Мне точно сложно это написать, поэтому даже не знаю коммерческий это заказ или нет. Если есть шаблоны, дайте линк, попробую сам...
Заранее спасибо)