Что нового

Кликер для программатора чипов.

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
AutoIt: 3.3.6.1
Версия: 1.0

Категория: Автоматизация
Описание: Автоматическое управление программой для прошивки чипов картриджей для лазерных принтеров. Программа изменяет бинарный код файла прошивки (crum или серийный номер, в зависимости от вида файла) и управляет программой прошивальщиком, отслеживая отчеты этой программы.Сама программа - прошивальщик находится здесь http://lapatushka.com/ Полное название программы - Программатор чипов XC01/Xerox90/Xerox01
Далее предоставлен законченный кода ( на данный момент) программы управления. файлы реестра, это для того, чтобы программа-прошивальщик открывала путь к файлу прошивки в той папке , где они реально находятся. один раз открываем в программе прошивальщике эту папку и копируем из ресстра системы путь. в моем случае это две папки с прошивками. в одной для цветных, в другой для чернобелых . нужно экспортировать путь в реестре -
Код:
[HKEY_USERS\S-1-5-21-1454471165-746137067-1343024091-1003\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU]
там двоичные данные , которые и указывают на последний путь открытия. программа автоматически добавляет нужный путь и программа-прошивальщик не ошибается с папкой открытия файлов.
Возможно кому-нибудь будет полезно, тем кто занимается заправкой картриджей и прошивкой чипов.
Мне часто приходится прошивать чипы , а вручную это монотонно и дольше.

Код/Пример:
Код:
#NoTrayIcon
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <process.au3>

_RunDOS('regedit /s "black.reg"')
$FileList = _FileListToArray(@ScriptDir & '\программатор_xerox90\', '*.bin')
$Lines = _ArrayToString($FileList, '|', 1)
$Form1 = GUICreate("Программатор", 275, 90, 483, 253)
$Combo1 = GUICtrlCreateCombo("", 8, 26, 145, 25)
GUICtrlSetData($Combo1, $Lines)
$Button1 = GUICtrlCreateButton("Старт", 176, 24, 75, 25)
$Button2 = GUICtrlCreateButton("Ручной режим", 176, 55, 80, 25)
$checkbox = GUICtrlCreateCheckbox("цветные", 10, 5, 120, 20)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			_win_exist()
			If GUICtrlRead($Combo1) = '' Then
				MsgBox(0, '', 'Не выбран файл')
			Else
				_programming()
			EndIf
		Case $Button2
			_win_exist()
			Run('программатор.exe')
		Case $checkbox
			If GUICtrlRead($checkbox) = $GUI_CHECKED Then
				_RunDOS('regedit /s "color.reg"')
				GUICtrlSetData($Combo1, '')
				$FileList = _FileListToArray(@ScriptDir & '\color\', '*.bin')
				$Lines = _ArrayToString($FileList, '|', 1)
				GUICtrlSetData($Combo1, $Lines)
			ElseIf GUICtrlRead($checkbox) = $GUI_UNCHECKED Then
				_RunDOS('regedit /s "black.reg"')
				GUICtrlSetData($Combo1, '')
				$FileList = _FileListToArray(@ScriptDir & '\программатор_xerox90\', '*.bin')
				$Lines = _ArrayToString($FileList, '|', 1)
				GUICtrlSetData($Combo1, $Lines)
			EndIf
	EndSwitch
WEnd
Func _rewrite_color()
	_RunDOS('regedit /s "color.reg"')
	$bin_color = FileOpen(@ScriptDir & '\color\' & GUICtrlRead($Combo1), 16)
	$read_bc = FileRead($bin_color)
	FileClose($bin_color)
	$result = StringReplace($read_bc, 495, @MIN & @SEC, 1)
	$write_color = FileOpen(@ScriptDir & '\color\' & GUICtrlRead($Combo1), 2 + 16)
	FileWrite($write_color, $result)
	FileClose($write_color)
EndFunc   ;==>_rewrite_color

Func _rewrite()
	_RunDOS('regedit /s "black.reg"')
	$bin = FileOpen(@ScriptDir & '\программатор_xerox90\' & GUICtrlRead($Combo1), 16)
	$read = FileRead($bin)
	FileClose($bin)
	$result1 = StringReplace($read, 110, StringLeft(@HOUR, 1))
	$result2 = StringReplace($result1, 112, StringRight(@HOUR, 1))
	$result3 = StringReplace($result2, 114, StringLeft(@MIN, 1))
	$result4 = StringReplace($result3, 116, StringRight(@MIN, 1))
	$result5 = StringReplace($result4, 118, StringLeft(@SEC, 1))
	$result6 = StringReplace($result5, 120, StringRight(@SEC, 1))
	$result7 = StringReplace($result6, 122, StringLeft(@MDAY, 1))
	$result8 = StringReplace($result7, 124, StringRight(@MDAY, 1))
	$result9 = StringReplace($result8, 126, StringLeft(@MON, 1))
	$result_over = StringReplace($result9, 128, StringRight(@MON, 1))
	$write = FileOpen(@ScriptDir & '\программатор_xerox90\' & GUICtrlRead($Combo1), 2 + 16)
	FileWrite($write, $result_over)
	FileClose($write)
EndFunc   ;==>_rewrite

Func _programming()
	_win_exist()
	Run('программатор.exe')
	WinWaitActive('[Class:THEForm]')
	WinActivate('[Class:THEForm]')
	Send('!{F5}')
	WinWaitActive('[Class:TYesNoForm]')
	WinActivate('[Class:TYesNoForm]')
	ControlClick('[Class:TYesNoForm]', '', 'TButton2')
	While 1
		$text = WinGetText('[Class:THEForm]')
		$chip = StringRegExp($text, 'Чип Xerox90 жив')
		If $chip = 1 Then
			If GUICtrlRead($checkbox) = $GUI_CHECKED Then
				_rewrite_color()
			Else
				_rewrite()
			EndIf
			Send('{F3}')
			WinWaitActive('Открыть')
			WinActivate('Открыть')
			ControlSend('Открыть', '', 'Edit1', GUICtrlRead($Combo1))
			ControlClick('Открыть', '', 'Button2')
			Send('!{F2}')
			WinWaitActive('[Class:TYesNoForm]')
			WinActivate('[Class:TYesNoForm]')
			ControlClick('[Class:TYesNoForm]', '', 'TButton2')
			While 1
				While 1
					$text_error = WinGetText('[Class:THEForm]')
					$chip_error = StringRegExp($text_error, 'Ошибка чтения...')
					If $chip_error = 0 Then
						ExitLoop
					Else
						Return MsgBox(0, '', 'Проблема с чипом или программатором') And WinClose('[Class:THEForm]')
					EndIf
					Sleep(500)
				WEnd
				$text1 = WinGetText('[Class:THEForm]')
				$chip1 = StringRegExp($text1, 'Конец чтения...')
				If $chip1 = 1 Then
					WinClose('[Class:THEForm]')
				EndIf
				ExitLoop
				Sleep(500)
			WEnd
		Else
			Return MsgBox(0, '', 'Проблема с чипом или программатором') And WinClose('[Class:THEForm]')
		EndIf
		ExitLoop
		Sleep(500)
	WEnd
EndFunc   ;==>_programming

Func _win_exist()
	If WinExists('[Class:THEForm]') Then
		WinClose('[Class:THEForm]')
	EndIf
EndFunc   ;==>_win_exist


Источник: autoit-script.ru
Автор(ы): Александр
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
это конечно. :smile:
вот поэтому в каждом отдельном случае нужно делать свою предварительную настройку. поэтому я делаю изменения в реестре не через скрипт, а через файл реестра. но основной путь один
Код:
[HKEY_USERS\S-1-5-21-!!!!!!!!!!!-!!!!!!!!!!!!!!!!!!!-!!!!!!!!!!!!!!!!!!!-!!!!\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU]
в семерке появляется два значения вместо одно как в ХР
ниже конкретные с моей машины
Код:
[HKEY_USERS\S-1-5-21-606270812-2293109515-2654228993-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\CIDSizeMRU]

Код:
[HKEY_USERS\S-1-5-21-606270812-2293109515-2654228993-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU]

да, еще... у меня не демо версия этой программы. полностью на русском.могу поделиться за просто так. схему программатора можно взять с сайта из первого поста. данный кликер как раз написан под эту русскую версию. несколько дней пользуюсь сим творением. пока все нормально...главное рутины стало меньше. :smile:
на семерке не испытывал, так как на работе ХР установлена...
 
Верх