Moin Moin zusammen.
Ich habe folgendes Script und die Pin's 13 & 25 wie auf Bild-1"verdrahtet:
Spoiler anzeigen
; Domain anpassen !!!
; zugesendet von Pico (ehem. Forum aktiv)
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once
#include <string.au3>
#include <array.au3>
#Include <Constants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
Opt("TrayMenuMode", 1)
FileWriteLine("AlarmBasic.log", @CRLF & @CRLF & ":::::::::Inicio de Actividades: " & @MDAY & "-" & @MON & "-" & @YEAR & "_" & @HOUR & ":" & @MIN & ":" & @SEC & ":::::::::")
Global Enum $GUI_EN_TITLE_SLIDE, $GUI_EN_TITLE_DROP
Global Const $GUI_EN_ANI_EXPLODE = 0x40010
Global Const $GUI_EN_ANI_TO_BOTTOMRIGHT = 0x50005
FileInstall("Logo.bmp",@ScriptDir & "\Logo.bmp",1)
Func _GUIEnhanceAnimateWin($hWnd, $iTimeMs, $iType)
Local $aRet = DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hWnd, "int", $iTimeMs, "long", $iType)
If $aRet[0] = 0 Then Return SetError(1, 0, 0)
Return 1
EndFunc
Func _GUIEnhanceAnimateTitle($hWnd, $sTitle, $iType = 0, $vParam1 = Default, $vParam2 = Default)
If Not WinExists($hWnd) Then Return SetError(1, 0, 0)
Switch $iType
Case $GUI_EN_TITLE_SLIDE
Local $sStr, $iCounter, $iBuf = $vParam1, $asTitle, $sStartChr = $vParam2
If $vParam1 = Default Then $iBuf = 100
If $vParam2 = Default Then $sStartChr = " "
If Not IsInt($iBuf) Then Return SetError(2, 0, 0)
$asTitle = StringSplit($sTitle, "")
For $iCounter = $iBuf To 0 Step - 1
WinSetTitle($hWnd, "", _StringRepeat($sStartChr, $iCounter) & $asTitle[1])
Next
Local $sStr
For $iCounter = 1 To $asTitle[0]
$sStr &= $asTitle[$iCounter]
WinSetTitle($hWnd, "", $sStr)
Sleep(5)
Next
Return 1
Case $GUI_EN_TITLE_DROP
Local $asTitle = StringSplit($sTitle, ""), $iCounter
Local $aiPlaced[$asTitle[0] + 1], $iCompleteTest = 0
Local $iRand, $sTemp, $sStartChr = $vParam1, $iSleep = $vParam2
If $vParam1 = Default Then $sStartChr = "_"
If $vParam2 = Default Then $iSleep = 50
If StringLen($sStartChr) <> 1 Then Return SetError(2, 0, 0)
WinSetTitle($hWnd, "", _StringRepeat($sStartChr, $asTitle[0]))
Do
Do
$iRand = Random(1, $asTitle[0], 1)
Until $aiPlaced[$iRand] = 0
$sTemp = StringLeft(WinGetTitle($hWnd), $iRand - 1)
$sTemp &= $asTitle[$iRand]
$sTemp &= StringRight(WinGetTitle($hWnd), $asTitle[0] - $iRand)
WinSetTitle($hWnd, "", $sTemp)
$aiPlaced[$iRand] = 1
$iCompleteTest = 0
For $iCounter = 1 To $asTitle[0]
$iCompleteTest += $aiPlaced[$iCounter]
Next
Sleep($iSleep)
Until $iCompleteTest = $asTitle[0]
Return 1
EndSwitch
EndFunc
Func _GUIEnhanceCtrlFade($Ctrl, $iTime, $fColor, $fBkColor, $iStartColor, $iEndColor, $iStep = 25)
If Not $fColor And Not $fBkColor Then Return SetError(1, 0, 0)
If Not IsArray($Ctrl) Then
Local $aCtrl[1] = [$Ctrl]
Else
Local $aCtrl = $Ctrl
EndIf
Local $aiGradient = __ColorGradient($iStartColor, $iEndColor, $iStep)
For $iCounter = 1 To $iStep
For $i = 0 To UBound($aCtrl) - 1
If $fColor Then GUICtrlSetColor($aCtrl[$i], $aiGradient[$iCounter - 1])
If $fBkColor Then GUICtrlSetBkColor($aCtrl[$i], $aiGradient[$iCounter - 1])
Next
Sleep($iTime / $iStep)
Next
Return 1
EndFunc
Func _GUIEnhanceCtrlDrift($hWnd, $Ctrl, $iX, $iY, $iStep = 1)
If Not WinExists($hWnd) Then Return SetError(1, 0, 0)
Local $aOldPos = ControlGetPos($hWnd, "", $Ctrl)
Local $iXOld = $aOldPos[0]
Local $iYOld = $aOldPos[1]
Local $fSteep = Abs($iY - $iYOld) > Abs($iX - $iXOld)
Local $aPoints[1][2]
Local $iOldX = $iX, $iOldY = $iY, $iYVal, $iYStep
Local $iDeltaX, $iDeltaY, $iError, $iDeltaError
If $fSteep Then
__Swap($iXOld, $iYOld)
__Swap($iX, $iY)
EndIf
If $iXOld > $iX Then
__Swap($iXOld, $iX)
__Swap($iYOld, $iY)
EndIf
$iDeltaX = $iX - $iXOld
$iDeltaY = Abs($iY - $iYOld)
$iError = 0
$iDeltaError = $iDeltaY / $iDeltaX
$iYVal = $iYOld
If $iYOld < $iY Then
$iYStep = 1
Else
$iYStep = -1
EndIf
For $iXVal = $iXOld To $iX
If $fSteep Then
ReDim $aPoints[UBound($aPoints) + 1][2]
$aPoints[UBound($aPoints) - 1][0] = $iYVal
$aPoints[UBound($aPoints) - 1][1] = $iXVal
Else
ReDim $aPoints[UBound($aPoints) + 1][2]
$aPoints[UBound($aPoints) - 1][0] = $iXVal
$aPoints[UBound($aPoints) - 1][1] = $iYVal
EndIf
$iError = $iError + $iDeltaError
If $iError >= 0.5 Then
$iYVal = $iYVal + $iYStep
$iError = $iError - 1
EndIf
Next
If $aPoints[1][0] = $iOldX And $aPoints[1][1] = $iOldY Then
For $iPoint = UBound($aPoints) - 1 To 1 Step $iStep * - 1
ControlMove($hWnd, "", $Ctrl, $aPoints[$iPoint][0], $aPoints[$iPoint][1])
Sleep(1)
Next
ControlMove($hWnd, "", $Ctrl, $aPoints[1][0], $aPoints[1][1])
Else
For $iPoint = 1 To UBound($aPoints) - 1 Step $iStep
ControlMove($hWnd, "", $Ctrl, $aPoints[$iPoint][0], $aPoints[$iPoint][1])
Sleep(1)
Next
ControlMove($hWnd, "", $Ctrl, $aPoints[UBound($aPoints) - 1][0], $aPoints[UBound($aPoints) - 1][1])
EndIf
Return 1
EndFunc
Func __Swap(ByRef $va, ByRef $vb)
Local $vTemp
$vTemp = $va
$va = $vb
$vb = $vTemp
EndFunc
Func __ColorGradient($hInitialColor, $hFinalColor, $iReturnSize)
Local $iNowRed, $iNowBlue, $iNowGreen
$hInitialColor = Hex($hInitialColor, 6)
$hFinalColor = Hex($hFinalColor, 6)
Local $iRed1 = Dec(StringLeft($hInitialColor, 2))
Local $iGreen1 = Dec(StringMid($hInitialColor, 3, 2))
Local $iBlue1 = Dec(StringMid($hInitialColor, 5, 2))
Local $iRed2 = Dec(StringLeft($hFinalColor, 2))
Local $iGreen2 = Dec(StringMid($hFinalColor, 3, 2))
Local $iBlue2 = Dec(StringMid($hFinalColor, 5, 2))
Local $iPlusRed = ($iRed2 - $iRed1) / ($iReturnSize - 1)
Local $iPlusBlue = ($iBlue2 - $iBlue1) / ($iReturnSize - 1)
Local $iPlusGreen = ($iGreen2 - $iGreen1) / ($iReturnSize - 1)
Dim $iColorArray[$iReturnSize]
For $i = 0 To $iReturnSize - 1
$iNowRed = Floor($iRed1 + ($iPlusRed * $i))
$iNowBlue = Floor($iBlue1 + ($iPlusBlue * $i))
$iNowGreen = Floor($iGreen1 + ($iPlusGreen * $i))
$iColorArray[$i] = Dec(Hex($iNowRed, 2) & Hex($iNowGreen, 2) & Hex($iNowBlue, 2))
Next
Return $iColorArray
EndFunc
$GUI = GUICreate("", 294, 112)
$label1 = GUICtrlCreateLabel(" Gn7 Soft - 2008", 42, 10)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$label4 = GUICtrlCreateLabel(" Alarm Basic v0.1 - Iniciando", 17, 46, -1, 16)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlCreatePic("logo.bmp", 170, 0, 124, 112)
$Label2 = GUICtrlCreateLabel("Gn7.com.ar", 17, 30, 137, 39)
GUICtrlSetFont(-1, 18, 800, 0, "Comic Sans MS")
GUICtrlSetState($label2, $GUI_HIDE)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
[/autoit] [autoit][/autoit] [autoit]_GUIEnhanceAnimateWin ($GUI, 500, $GUI_EN_ANI_EXPLODE)
GUISetState()
Local $aiTemp[2] = [0, 0]
ClientToScreen($GUI, $aiTemp[0], $aiTemp[1])
Global $bgcolor = PixelGetColor($aiTemp[0], $aiTemp[1])
ConsoleWrite($bgcolor & @CRLF)
GUICtrlSetColor($label2, $bgcolor)
_GUIEnhanceAnimateTitle ($GUI, "Alarm Basic v0.1 :: _Gn7", $GUI_EN_TITLE_DROP)
Sleep(5)
_GUIEnhanceCtrlFade ($label1, 100, True, False, $bgcolor, 0x000000)
_GUIEnhanceCtrlFade ($label4, 200, False, True, $bgcolor, 0x000000)
_GUIEnhanceCtrlFade ($label4, 200, True, False, 0x000000, 0xFF0000)
_GUIEnhanceCtrlFade ($label4, 200, False, True, 0x000000, $bgcolor)
_GUIEnhanceCtrlFade ($label1, 200, False, True, $bgcolor, 0x000000)
_GUIEnhanceCtrlFade ($label1, 200, True, False, 0x000000, 0xFF0000)
_GUIEnhanceCtrlFade ($label1, 200, False, True, 0x000000, $bgcolor)
_GUIEnhanceCtrlDrift ($GUI, $label4, 17, 79)
GUICtrlSetState($label2, $GUI_SHOW)
_GUIEnhanceCtrlFade ($label2, 100, True, False, $bgcolor, 0x000000)
_GUIEnhanceAnimateTitle ($GUI, "Alarm Basic v0.1 :: 2008", $GUI_EN_TITLE_SLIDE)
Sleep(2000)
_GUIEnhanceAnimateWin ($GUI, 600, $GUI_EN_ANI_TO_BOTTOMRIGHT)
;Aqui acaban ==>
GUIDelete()
;FileDelete("Logo.bmp") ; ----------------------------------------------------------------------------------------------------------------------------
Sleep(50)
TrayTip("Sensor Iniciado - Menu", "Aqui tienes todos los controles del menu disponibles.", 7, 1)
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Aqui empiezan las funciones internas del scipt
[/autoit] [autoit][/autoit] [autoit]#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit];Establecemos las variables
$DLLyRuta = @ScriptDir & "\inpout32.dll"; eliminar @ScriptDir si queres mantener el archivo DLL en el directorio del sistema para no tener que tenerlo en el mismo directorio donde esta el script
$DireccionDelPuerto = "0x378"; el valor por defecto LPT1 en la mayoría de las máquinas
;calcula el registro de direcciones
Dim $EstadoDelRegistroDeDirecciones, $ControlDeDireccionDelPuerto
CalcularRegistroDeDirecciones($DireccionDelPuerto)
;prueba si existe la DLL requerida
If FileExists($DLLyRuta) = 0 Then
MsgBox(0, "Falta DLL requerida", "Falta la Dll requerida ubicada en '" & $DLLyRuta & "'. No se puede continuar." & @CRLF & @CRLF & "Descargar la DLL desde http://home.arcor.de/crazyalina/inpout32.dll")
Exit
EndIf
;se crean los menues en la badeja del sistema
TrayCreateItem(" ,.-~*'¨¯¨'*·~-.¸-(.·´¯`·«¤°""°¤»·´¯`·.)-,.-~*'¨¯¨'*·~-.¸")
TrayCreateItem("°º¤ø,¸¸,ø¤º°`°º¤ø,¸ ALARM® BASIC PP - Gn7 ¸,ø¤º°`°º¤ø,¸¸,ø¤º°")
TrayCreateItem(" °(*)(_.·´¯`·«¤°""°¤»·´¯`·._)(*)°")
TrayCreateItem("")
$selecciont = TrayCreateItem(" Personalizar el sonido de la alarma")
TrayCreateItem("")
$alarmstop = TrayCreateItem(" Detener sonido (solo el que se esta reproduciendo)")
$test = TrayCreateItem(" Probar sonido")
TrayCreateItem("")
$leer = TrayCreateItem(" Leer info almacenada del Log")
TrayCreateItem("")
$visitar = TrayCreateItem(" Web ")
$about = TrayCreateItem(" Acerca de AlarmBasic PP...")
TrayCreateItem("")
$exititem = TrayCreateItem(" Salir del Programa")
TraySetState()
While 1
Sleep ( 10 )
;Lee el registro de estado
$GamaDeEstadoDelRegistro = LeerEstadoDelPuerto($EstadoDelRegistroDeDirecciones)
$VisorDeCadenasDelRegistro = "Registro de estado @ " & $EstadoDelRegistroDeDirecciones & "Bit4 = " & $GamaDeEstadoDelRegistro[4] & " (Pin 13)"
If $GamaDeEstadoDelRegistro[4] = "0" Then
;Aca se formulan las acciones que realizara cuando sea accionada la alarma
FileWriteLine("AlarmBasic.log", "Hora del intento: " & @HOUR & ":" & @MIN & ":" & @SEC)
$File = IniRead("Settings.ini","Sonido", "Seleccion", "default")
SoundPlay($File)
TrayTip("Intento detectado", "Hora = " & @HOUR & ":" & @MIN & ":" & @SEC, 10, 1)
EndIf
$msg = TrayGetMsg()
Select
Case $msg = $exititem
Exit
Case $msg = $leer
Run("notepad.exe AlarmBasic.log")
Case $msg = $alarmstop ;Detiene el sonido cuando se esta reproduciendo
SoundPlay("")
Case $msg = $test ;Probar sonido
SoundPlay($File)
Case $msg = $visitar
$oIE=ObjCreate("InternetExplorer.Application.1")
With $oIE
.Visible=1
.Top = (@DesktopHeight-400)/2
.Height=400
.Width=600
.Silent=1
$IEWnd=HWnd(.hWnd)
EndWith
$EventObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents")
$URL = "http://home.arcor.de/crazyalina/"
$oIE.Navigate( $URL )
sleep(1000)
Case $msg = $about ;informacion sobre el programa
MsgBox(64,"Acerca de","AlarmBasic PP v0.1" & @CRLF & @CRLF & "www.Gn7.com.ar" & @CRLF & "www.autoit.es" & @CRLF & @CRLF & "© 2008 por Gn7")
Case $msg = $selecciont ;variante para la eleccion de un sonido
$seleccion = FileOpenDialog("Puedes seleccionar archivos MP3's y WAV's", @DesktopDir & "\", "Archivos de Audio (*.mp3;*.wav)", 1 + 4 )
$date = FileExists("Settings.ini")
If $date = True Then
FileDelete("Settings.ini")
Sleep(250)
IniWrite("Settings.ini", "Sonido", "Seleccion", $seleccion) ;escribe los datos del sonido elegido
MsgBox(64,"OK","Como tu quieras.")
EndIf
If $date = False Then
IniWrite("Settings.ini", "Sonido", "Seleccion", $seleccion)
MsgBox(64,"Exito","Has seleccionado correctamente el archivo.")
EndIf
EndSelect
WEnd
[/autoit] [autoit][/autoit] [autoit]Exit
[/autoit] [autoit][/autoit] [autoit];Funciones del puerto paralelo -> XD donde ocurre la acción!
Func LeerEstadoDelPuerto($LeerDireccion)
;Lee el puerto de registro (devuelve un valor BCD)
$EstadoActualDelPuerto = DllCall($DLLyRuta, "int", "Inp32", "int", $LeerDireccion)
$EstadoParaDecodificar = $EstadoActualDelPuerto[0]
;convierte el estado del bit y registra en serie
Dim $LeerBits[9]; [0] -> [7] los bits decodificados, [8] el valor raw de BCD
$LeerBits[8] = $EstadoActualDelPuerto[0]
$BitActual = 128
For $ContraBit = 7 To 0 Step - 1
If $EstadoParaDecodificar >= $BitActual Then
$LeerBits[$ContraBit] = 1
$EstadoParaDecodificar = $EstadoParaDecodificar - $BitActual
Else
$LeerBits[$ContraBit] = 0
EndIf
$BitActual = $BitActual / 2
Next
;prueba si la decodificacion obtenida es correcta
If $EstadoParaDecodificar <> 0 Then
MsgBox(0, "Error en decodificacion", "Error al decodificar puerto '" & $DireccionDelPuerto & "' registro '" & $LeerDireccion & " estado '" & $EstadoActualDelPuerto[0] & "' bits. No se basan en los resultados.")
EndIf
Return $LeerBits
EndFunc ;==>LeerEstadoDelPuerto
Func CalcularRegistroDeDirecciones($DireccionBase)
;calcula la condición del registro de la dirección
$RawHex = Hex(Dec(StringTrimLeft($DireccionBase, 2)) + 1)
While 1
If StringLeft($RawHex, 1) = "0" Then
$RawHex = StringTrimLeft($RawHex, 1)
Else
ExitLoop
EndIf
WEnd
$EstadoDelRegistroDeDirecciones = "0x" & $RawHex
EndFunc ;==>CalcularRegistroDedirecciones
Func ClientToScreen($hwnd, ByRef $x, ByRef $y)
Local $stPoint = DllStructCreate("int;int")
DllStructSetData($stPoint, 1, $x)
DllStructSetData($stPoint, 2, $y)
DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hwnd, "ptr", DllStructGetPtr($stPoint))
[/autoit] [autoit][/autoit] [autoit]$x = DllStructGetData($stPoint, 1)
$y = DllStructGetData($stPoint, 2)
$stPoint = 0
EndFunc
Bild-1:
autoit.de/wcf/attachment/12938/
Egal ob ich Pin 13 und 25 überbrücke oder nicht (On/Off Schalter verwendet) es kommt folgende Meldung:
autoit.de/wcf/attachment/12939/
Und wenn ich dann auf "klicken Sie hier." klicke kommt folgende Meldung:
autoit.de/wcf/attachment/12940/
Wenn ich dort auf das erste "klicken Sie hier." klicke, sieht der "Problembericht wie folgt aus:
Spoiler anzeigen
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="AlarmBasic_libreriaX_Inluida.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="AlarmBasic_libreriaX_Inluida.exe" SIZE="859944" CHECKSUM="0x79148E05" BIN_FILE_VERSION="3.3.6.1" BIN_PRODUCT_VERSION="3.3.6.1" FILE_DESCRIPTION="" FILE_VERSION="3, 3, 6, 1" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x0" MODULE_TYPE="WIN32" PE_CHECKSUM="0xA4491" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="3.3.6.1" UPTO_BIN_PRODUCT_VERSION="3.3.6.1" LINK_DATE="04/16/2010 07:47:33" UPTO_LINK_DATE="04/16/2010 07:47:33" VER_LANGUAGE="Englisch (Großbritannien) [0x809]" />
<MATCHING_FILE NAME="INPOUT32.DLL" SIZE="27648" CHECKSUM="0x69FF11E3" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="06/19/1992 22:22:17" UPTO_LINK_DATE="06/19/1992 22:22:17" />
</EXE>
<EXE NAME="inpout32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="INPOUT32.DLL" SIZE="27648" CHECKSUM="0x69FF11E3" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="06/19/1992 22:22:17" UPTO_LINK_DATE="06/19/1992 22:22:17" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1057280" CHECKSUM="0xD52AA7B7" BIN_FILE_VERSION="5.1.2600.2180" BIN_PRODUCT_VERSION="5.1.2600.2180" PRODUCT_VERSION="5.1.2600.2180" FILE_DESCRIPTION="Client-DLL für Windows NT-Basis-API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Betriebssystem Microsoft® Windows®" FILE_VERSION="5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. Alle Rechte vorbehalten." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x108430" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.2180" UPTO_BIN_PRODUCT_VERSION="5.1.2600.2180" LINK_DATE="08/04/2004 07:57:08" UPTO_LINK_DATE="08/04/2004 07:57:08" VER_LANGUAGE="Deutsch (Deutschland) [0x407]" />
</EXE>
</DATABASE>
Was ist falsch? Wenn ich den ON/OFF SCHALTER auf ON habe ist alles okay, schalte ich ihn auf OFF (demo: Tür auf), soll ja eine Alarmmeldung kommen. Oder irre ich mich? Neeee, das kann doch gar nicht sein. Bilder sagen doch mehr als ...
Habe nämlich noch folgende Bilder:
(habe nicht in Erfahrung bringen können ob es der weiblich oder männliche Teil ist auf diesem Bild)
autoit.de/wcf/attachment/12941/autoit.de/wcf/attachment/12942/
Leider ist der, von dem ich das Script habe nicht mehr aktiv im Forum unterwegs, da er für achtzehn Monate im Entwicklungsdienst (Afrika) ist. Habe das Script eigentlich schon sehr lange, nur erst seit heute den LPT Stecker (männlicher Aufsetztstecker) mit dem ON/OFF Schalter bekommen.
Naja, vielleicht bekommt man das Script ja noch zum laufen.