Alarmmeldung (LPT-1 = 0x378; PIN13/25)

  • Moin Moin zusammen.

    Ich habe folgendes Script und die Pin's 13 & 25 wie auf Bild-1"verdrahtet:

    Spoiler anzeigen
    [autoit]


    ; Domain anpassen !!!
    ; zugesendet von Pico (ehem. Forum aktiv)

    [/autoit] [autoit][/autoit] [autoit]

    #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 & ":::::::::")

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    #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)

    [/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;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()

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func ClientToScreen($hwnd, ByRef $x, ByRef $y)
    Local $stPoint = DllStructCreate("int;int")

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stPoint, 1, $x)
    DllStructSetData($stPoint, 2, $y)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]


    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.

    • Offizieller Beitrag

    Hast du irgendwo die benötigte DLL Datei rumfliegen?

    Müßte inpout32.dll sein.

  • Die .dll ist wahrscheinlich von hier: http://logix4u.net/Legacy_Ports/P…2000/NT/XP.html
    Moderne Windows Versionen sind extrem sicher (zickig) bei direktem Hardwarezugriff.
    Auch Zweifelhaft: hat dein Pin 13 einen Pullup ? Wenn ja, sollten da ungefähr 2,4-5,0 Volt anliegen, so lange der Schalter nicht geschlossen ist.
    Die Sache ist nicht so recht genormt, deshalb muss man bisschen rumprobieren.
    Ich hab den Parallelport zuletzt unter Windows XP mit der DLPORTIO benutzt, das ging recht gut, nur das Timing suckt.
    (Erklärung: bei jedem NT-basierten Windows, also 2000, XP, Vista, 7 brauchst du unbedingt einen sauberen Treiber, sonst krachts)
    Wichtige Frage: welches Windows benutzt du ?

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • Raupi :
    DLL in der Anlage ;)

    ohforf:
    Ich verwende auf dem PC so es eingesetzt werden sollte WinXP-SP2.

    Pullup Wieso ein Widerstand? Da fließt doch gar kein Strom. Und wenn es nötig ist, wo sollte der hin , bzw. wo muß der angelötet werden.

    Dateien

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Pullup zwischen Eingang und +5V wäre nützlich, damit der Eingang nicht offen ist.
    Das ist aber jetzt nicht soo wichtig, weil der Treiber offenbar rumzickt.
    Ich habs ausprobiert unter Windows 7/64Bit - funktioniert nicht, kann den Treiber nicht laden.
    Dann auf dem guten alten Schlepptop mit XP - wirft eine Exception.
    Mal sehen...

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • @ ohforf

    Vielen Dank, das war dann wohl wirklich der Fehler.

    Aber ein Widerstand braucht man doch nicht, oder?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Alina: bei meinem Notebook ist offenbar der Pullup-Widerstand schon drin.
    Wenn du ein bisschen Glück hast, ist es bei deiner Maschine genauso.
    Für den Parallelport gibts offenbar 2 Standards, wobei die ältere Version keine Pullups vorschreibt.

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • ohforf

    Du schreibst oben "Pullup zwischen Eingang und +5V ". Aber es gibt doch keine +5V. Da fließt doch kein Strom.
    Bin ich wurklich hirnblond? Denke, das man nur dort Widerstände braucht, wo auch Strom fließt.
    Also PIN 13 hat kein Strom und die "Brücke" geht gegen Masse. So habe ich das verstanden.

    Kann das einer mal für "Blondinen" erklären? ;)?(?(?(?(?(?(?(?(?(?(

    Was mir nur aufgefallen ist, das er genau umgekehrt arbeitet. Ist der Schalter auf ON (Kabel sind somit verbunden) ist bildlich das Fenster / die Tür auf. Ist der Schalter auf OFF (Kabel sind somit nicht verbunden) ist bildlich das Fenster / die Tür zu. Aber das sollte man doch hinbekommen. Ich glaube ich drehe die Meldungen / Aktionen um. Mal sehen ob das machbar ist.

    Schalter hat unter drei Beinchen: 1-2-3
    1 = Kabelende von Pin 20
    2 = Kabelende von Pin 13
    3 = leer

    1-2 = Kabel verbunden
    2-3 0 Kabel sind getrennt

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    Einmal editiert, zuletzt von Alina (25. März 2011 um 13:25)

  • Zitat

    Aber es gibt doch keine +5V. Da fließt doch kein Strom.
    Bin ich wurklich hirnblond? Denke, das man nur dort Widerstände braucht, wo auch Strom fließt.
    Also PIN 13 hat kein Strom und die "Brücke" geht gegen Masse. So habe ich das verstanden.

    Du hast recht, wo Strom fließt, sollte ein Widerstand sein, da es sonst zu Kurzschlüssen kommt. Wo kein Strom fließt, brauchst Du logischerweise keinen Widerstand. Denn auf was soll der dann wirken?
    Davon ausgehend, dass der Schaltungsaufbau korrekt ist, sollte allerdings Strom fließen, wenn Du die Pins verbindest. Denn wie sonst will die Software feststellen, dass die Türe zu ist?

    Türe geschlossen->also Pins verbunden->Strom fließt
    Türe offen->keine Verbindung zwischen den Pins->kein Strom fließt

    Welches der Signale (Strom oder kein Strom) nachher deinen Alarm auslöst, hängt vom Einsatzzweck und der Programmierung ab.
    Es muss aber definitiv einen Spannungsunterschied geben, denn sonst passiert ja nix.

  • Das Thema Pullup-Pulldown wird hier ganz nett erklärt.
    5V kriegt man nicht direkt am Parallelport, aber man kann tricksen und z.B. die D0 Leitung auf "1" schalten und dann als (schwache) 5V-Versorgung missbrauchen.
    Ob der Kram nun wirklich ohne Pullup zuverlässig funktioniert, merkst du erst wenn die Schaltung komplett verkabelt ist (paar Meter vom PC zur Tür oder so).
    Je länger die Leitung, desto mehr Störsignale kriegst du (z.B. 50Hz von der nächsten Stromleitung, Handy, CRT-Bildschirme...).

    Bei http://www.netzmafia.de/skripten/hardware/rp1/rp12.html findet sich folgendes:

    Zitat


    Bei allen Experimenten am Parallelport ist Vorsicht geboten, weil bei unsachgemäßer Handhabung Kurzschlüsse für den Parallelport oder gar für das gesamte Mainboard entstehen können. Die Ausgänge eines Centronics-Ports halten einer Strombelastung von ca. 5-15 mA stand. Dies reicht mit einem geeigneten Vorwiderstand (z.B. 270 bis 680 Ohm), um eine LED zum Leuchten zu bringen. Möchte man Taster oder Schalter direkt abfragen, so müssen die Eingänge über Pull-Up-Widerstände in einen definierten High-Zustand gebracht werden und können dann gezielt auf Masse geschaltet werden.

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

    Einmal editiert, zuletzt von ohforf (25. März 2011 um 17:12)

  • Hat jemand vll auch diese UDF in Deutsch die oben genannt wurde? Bzw. kennt jemand ein gutes möglichst deutschsprachiges Tutorials? Weil die Kommentare in der UDF sind irgendwie auf spanisch oder so. den diese kann ich nit. Am besten wäre deutsch. Englisch ging notfalls auch.

    Michael