Keresés

Új hozzászólás Aktív témák

  • #10382336

    törölt tag

    válasz #10382336 #1196 üzenetére

    Az LPT port programozására sikerült készítettem egy egyszerü kis
    példaprogramot VB.NET - re. A lefordított program 16.5 Kbyte. CPU - használata
    közel 0%.
    A program XP-n tökéletesen működik!
    Ha valaki kipróbálja VISTA-n megírhatná, hogy működik-e?
    Ha valaki egyszerűbb megoldást tud azt is megírhatja.

    A program készítésének lépései:

    1: "IO.DLL" letöltése. Pl. [innen]
    2: "IO.DLL" bemásolása a C:\WINDOWS\SYSTEM mappéba. (NEM a system32 -be!!!)
    3: Start menu futtatás parancsba beírni:
    Regsvr32.exe C:\WINDOWS\SYSTEM\io.dll
    Erre a parancsra a "REGSVR32.EXE" valószínűleg kiabálni fog,
    hogy a fájl betöltése sikerült, de regisztrálni nem lehet.
    Ezzel nem kell foglalkozni, "OK" oszt jó napot!

    4: "PARMON.EXE" letöltése. Pl. [innen]
    A program 446 Kbyte. CPU használata 50-80%.

    5: Most jöhet a VB.NET indítása.
    File menü - New project - Windowsapplication létrehozása

    6: Project menü - add class - "konzol.vb" osztály létrehozása.
    A konzol tartalma:

    Public Class Konzol
    Private Declare Sub PortOut Lib "io.dll" _
    (ByVal Port As Integer, ByVal Value As Byte)
    Private Declare Function PortIn Lib "io.dll" _
    (ByVal Port As Integer) As Byte
    Private esemeny As New System.Threading.AutoResetEvent(False)
    Private megszakitas As System.Threading.TimerCallback = _
    AddressOf végrehajtás
    Private idozito As System.Threading.Timer, szamlalo As Integer
    Sub adatki(ByRef adat As Byte)
    PortOut(888, adat)
    End Sub
    Function adatbe() As Byte
    adatbe = PortIn(888)
    End Function
    Sub start()
    szamlalo = 0
    idozito = _
    New System.Threading.Timer(megszakitas, esemeny, 0, 1000)
    End Sub
    Sub állj()
    idozito.Dispose()
    End Sub
    Sub végrehajtás(ByVal stateInfo As Object)
    Dim autoEvent As System.Threading.AutoResetEvent = _
    DirectCast(stateInfo, System.Threading.AutoResetEvent)
    adatki(szamlalo) : szamlalo += 1
    If szamlalo >= 256 Then szamlalo = 0
    End Sub
    End Class

    7: "Form1 [design]" fül aktiválása, majd Dupla katt a "Form" közepébe.
    A form1 így nézzen ki:

    Public Class Form1
    Private button1, button2 As New Button
    Private konz As New Konzol, konzinditvae As Boolean = False
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    With button1 : .Top = 10 : .Left = 10 : .Text = "INDÍTÁS"
    AddHandler .Click, AddressOf Indítás_Click
    End With
    With button2 : .Top = button1.Top : .Left = button1.Right + 5
    .Text = "Állj"
    AddHandler .Click, AddressOf Állj_Click
    End With
    With Me
    AddHandler .FormClosing, AddressOf Form1_FormClosing
    .Text = "LPT próba" : .Width = 185 : .Height = 75
    With .Controls
    .Add(button1) : .Add(button2)
    End With
    End With
    End Sub
    Private Sub Indítás_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If konzinditvae Then Exit Sub
    konzinditvae = True : konz.start()
    End Sub
    Private Sub Állj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If Not konzinditvae Then Exit Sub
    konz.állj() : konzinditvae = False
    End Sub
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
    If konzinditvae Then konz.állj()
    RemoveHandler button1.Click, AddressOf Indítás_Click
    RemoveHandler button2.Click, AddressOf Állj_Click
    RemoveHandler Me.FormClosing, AddressOf Form1_FormClosing
    End Sub
    End Class

    8: Build menü - Build parancs
    9: "PARMON.EXE" indítása.
    A "PARMON.EXE" -ben a "connector" - t illik átállítani "MALE" - re.
    10: Lefordított program indítása.
    Az "INDÍTÁS" gombra kattitva a "PARMON.EXE" mutatja a munka eredményét.

    Ha valaki közvetlenül az LPT-n szeretne feszültséget mérni, annak sincs akadálya, csak arra
    figyeljen, hogy rövidzár ne keletkezzen!

    Ha az űrlapon létrehozunk egy "LABEL" - t, valamint egy új időzitőt kb. 0.3, 0.5 sec időzítéssel
    és az "adatbe" függvénnyel lekérdezzük a port értékét, akkor a "PARMON.EXE" használata
    feleslegessé válik.

    Jó programozást mindenkinek! :DD

Új hozzászólás Aktív témák

Hirdetés