LOKKY009
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору НУ ЗДРАВСТВУЙ МИР !! ВКОТОРЫЙ РАЗ СКАЖУ Я сегодне вам будет представленно то что я задолбался искать в интернете но таки нашел речь пойдет а записи и чтении из порта в порт ! Насколько вам известно сраная хрюша да и темпаче виста недадут вам этого сделать напрямую да и на кривую тож не оченьто дают Для этого нам нужно заглянуть на сайт разработчика чудо дллок кому будет интересно там и сорцы лежат и ебсественно скачать архив с 1м файлом inpout32.dll остальное шняга она нам не нужна... =========================================================== сайт разработчика http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html =========================================================== работать с этой дллкой может даж ребенок тк там всего 2 функциии (остальные см в описании ) прочесть и записать ========================================================== пример для работы с лпт портом #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #EndRegion #include <GUIConstants.au3> #include <string.au3> $op = DllOpen("inpout32.dll") Opt("GUIOnEventMode", 1) Global $STOP = True global $portdata = 888 Global $cont_data = 890 $DATA=0 $FORM_MAIN = GUICreate("ПОРТ", 400, 160, 10, 10, -1, 4) WinSetOnTop ( "ПОРТ", "", 1 ) GUISetOnEvent($GUI_EVENT_CLOSE, "WindowCloseClicked") ; <<<переход на функцию закрытия окна GUICtrlCreateLabel("Порт = 888 или 378h",10,20,110,20) GUICtrlCreateLabel("Данные = ",125,20,80,20) $data1 = GUICtrlCreateLabel( "", 180,20, 70, 20) GUICtrlCreateLabel("Контроль = 890 или 37Ah",10,45,135,20) $data2 = GUICtrlCreateLabel( "", 150,45, 70, 20) GUICtrlCreateLabel("Порт = 888 или 378h",10,65,110,20) $data_in = GUICtrlCreateInput("",125,63,40,20) GUICtrlCreateButton("ok",170,63,40,20) GUICtrlSetOnEvent(-1,"verndat1") GUICtrlCreateButton("СТРОБ",170,83,80,20) GUICtrlSetOnEvent(-1,"STROBS") GUISetState(@SW_SHOW, $FORM_MAIN) Do GUISetOnEvent($GUI_EVENT_CLOSE, "WindowCloseClicked") Update() Sleep(100) Until $STOP = False While (1) Update() WEnd Func WindowCloseClicked() DllClose($op) Exit EndFunc Func Update() vizov($portdata) GUICtrlSetData ($data1,$DATA) vizov($cont_data) GUICtrlSetData ($data2,$DATA) EndFunc ;~ ===ПОЛУЧЕНИЕ ВВЕДЕННЫХ ДАННЫХ +ЗАШИТА ОТ ДИБИЛА ======= Func verndat1() $data_in2 = GUICtrlRead ( $data_in , 0 ) if $data_in2 = "" Then MsgBox(0,"ОШИБКА","ДАННЫХ НЕТ") Update() Else if $data_in2 < 256 Then AZP_V_PORT($portdata,$data_in2) Else MsgBox(0,"ОШИБКА","МАКСИМАЛЬНО ДОПУСТИМОЕ ЧИСЛО 255") Update() EndIf EndIf Update() EndFunc ;========ОТПРАВКА СТРОБА=================================== FUNC STROBS() $D6 = 205 AZP_V_PORT($cont_data,$D6) ;отправка СТРОБА Sleep(50) AZP_V_PORT($cont_data,204) ;возврат на исходную EndFunc ;~======================================================= ;~ ================== ЧТЕНИЕ ИЗ ПОРТА ======================== FUNC vizov($d3) $result = DllCall($op, "short", "Inp32", "short",$d3) $DATA = $result[0] EndFunc ;~======================================================== ;~===================== ЗАПИСЬ В ПОРТ======================== Func AZP_V_PORT($D4,$D5);ГДЕ $D4 ПОРТ $D5 ДАННЫЕ DllCall($op, "short", "Out32", "short",$D4, "short",$D5) EndFunc ;~=========================================================== ИСПОЛЬЗОВАНИЕ В КОМЕРЧИСКИХ ЦЕЛЯХ МОЖЕТ БЫТЬ НАКАЗУЕМО РЕЛЬСОМ ПО ИЛИ В ;============================================================ | Всего записей: 1 | Зарегистр. 07-10-2010 | Отправлено: 11:22 07-10-2010 | Исправлено: LOKKY009, 11:26 07-10-2010 |
|