Keresés

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

  • martonx

    veterán

    válasz #10382336 #1192 üzenetére

    Szia!

    Nem tudom mennyire megy a VB.Net programozás. A programodhoz hozzá kell adnod az MSCommLib refernciát.

    Amikor ez megvan: Dim MSComm1 As MSComm -al létrehozod az MSComm1 objektumot, ami az LPT-dnek fog megfelelni.

    Innentől kezdve azt csinálsz vele, amit akarsz.

    Én kérek elnézést!

  • #10382336

    törölt tag

    válasz #10382336 #1195 üzenetére

    Nagy nehezen sikerült az "mscommlib" -et belevarázsolnom a
    referenciába. A folyamatát leírom, hátha valakinek szüksége lesz rá,
    természetesen nem profiknak.

    1: letölteni az "MSCOMM32.OCX" fájlt, például innen:
    [link]
    Természetesen máshonnan is letölthető.
    2: Az "MSCOMM32.OCX" fájlt át kell másolni a
    C:\WINDOWS\SYSTEM mappába. NEM a system32 -be !!!!
    3: Start menü futtatás parancsába beírni:
    Regsvr32.exe C:\WINDOWS\SYSTEM\MSCOMM32.OCX

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

  • martonx

    veterán

    válasz #10382336 #1197 üzenetére

    Ez szép, meg jó, de mit csinálsz az LPT-vel? Nekem az új gépemen már nincs is LPT port.

    Előre bocsátom az alábbi sorokat viccnek szánom, nem sértésnek:
    Azért biztos hasznos, és jó a programod, ha valaki a nagypapa padlásán talált elektronikai eszközöket akarja, az évekkel ezelőtt a szüleinek adományozott ősrégi, LPT portos gépvel programozni :C

    Respekt! :R

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1199 üzenetére

    Madár riasztó! Erre nem gondoltam volna. Komolyan kíváncsi voltam, hogy mit csinálsz. Jó tudni.

    Mondjuk én nem állnék neki ilyet barkácsolni, hanem vennék egy időzítős konnektort, vagy hogy is hívják pontosan. A medence vízforgatását, meg a karácsonyi világítást ilyennel oldottam meg.

    De te biztos szeretsz elektronikát szerelni, én meg tisztelem a tudásod.

    Egyébként én USB portos eszközöket szoktam programozni, és mivel manapság mindenhez van usb port, ezért nem tudtam elképzelni, hogy a párhuzamos portot mihez használod. De ha magadnak építetted össze, akkor érthető.

    Jelenleg másodállásban Malájziában fejlesztett, gyártott usb-s eszközökhöz írok UI-t, igaz azt nem VB.Net-ben hanem C#-ban, bár egyszer lehet portolom VB-re (a kedvenc program nyelvemre).

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1202 üzenetére

    .ico-t szerkeszteni célprogramokkal tudsz. Googli kidob neked többet is, van köztük ingyenes is. Ha jól értem csinálni szeretnél egy saját ikon-t, és azt használni a programodban?

    Ahogy néztem az általad leírtak mindegyike megoldható, ráadásul viszonylag könnyen, de a sok apró dolog együtt nagyon nagy munkának tűnik. Viszont egy dolgot nem írtál le. Mire akarod ezt a programot használni? Lehet lenne sokkal egyszerűbb módja is egy adott feladat megvalósításának, mintsem egy új operációs rendszer elkészítése. :D

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1204 üzenetére

    Francba, egy hosszú válasz közepén tartottam, mikor összeomlott a Firefoxom...

    Akkor már csak röviden:

    1. Ha jól értem egy feladatkezelő programot szeretnél, határidőkkel, lekérdezésekkel. Ehhez nem kellenek mindenféle file-ok, modulok, saját texteditorok, hanem egy sima adatbázis alkalmazás. Varázslókkal pár perc alatt összekattintható, még programozási tudás se nagyon kell hozzá.

    2. Windows kereső kiegészítése: erre ezeregy program létezik pl. google toolbar. Vagy ott van a total commander baromi jó file keresője, ami a fileokon belül is keres. Vagy még jobbat mondok. Szimpla windows shell parancs a findstr. Ha mindenképpen programozni akarsz akkor írj a findstr köré egy kis alkalmazást, de hangsúlyozom felesleges.

    3. bináris adatot a streamwriter, streamreader tud kezelni. Csak bináris módba kell őket kapcsolni. Miért kell neked bináris adat?

    4. Lehet félreértettelek. Ez történik akkor, ha valaki nem 1-2 mondatban lényegre törően válaszol. :F

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1206 üzenetére

    Az összefoglalva rész segített :)

    Javaslom adatbázist használj. Eltárolod benne a futtatandó program útvonalát, indítás idejét. Egy timer meg percenként megnézi, hogy mit kell indítani.
    Ahhoz képest amit leírtál pár varázslós kattintással meg lehet oldani. Plusz egy pár sor, ami kezeli a timert, meg indítja az útvonalon megadott programot.

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1208 üzenetére

    Akkor majd keresel minket, ha konkrét problémáid lesznek. És még egyszer utoljára javaslom, hogy egy programozási feladatnak sosem jó megoldása az űrhajó építés. :N

    Kivéve ha az űrhajó építés a hobbid, akkor csináld nyugodtan.

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1316 üzenetére

    A *.hlp fájlok rtf-ből álló lapok halmaza. Így ha megcsinálod az rtf-eidet, akkor ezekből egy compilerrel tudsz *.hlp fájlt generálni.
    Meglévő *.hlp-t szerkeszteni nem fogsz tudni, hacsak nincs meg a forrásod, amiből generálódott a .hlp.

    Ha pedig egy meglévő projektedhez akarsz automatikusan help-et generálni, akkor használd a Sandcastle-t (sose használtam, csak sokat hallottam róla), és az elvártnak megfelelően kommentezd a kódodat.

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1318 üzenetére

    fogsz találni, meg gugli egy rakás tutorial is kidobott. Ezek alapján mondjuk annyira nem tűnik két kattintásnak a dolog, de reméljük a legjobbakat.

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1324 üzenetére

    1. Nem.
    2. Ha mégis telepítve van, akkor le tudod menteni a kapott eredményt bármibe, amibe az exceled menteni tud. .net-el tudod COM-on keresztülhasználni az excelt, azaz a felhasználó nem is látja, hogy te excelt hívogatsz a háttérben.

    Ha pusztán .net-tel akarsz megoldani valamilyen feladatot, talán egyszerűbb lenne, ha elárulnád mi az a feladat, és mi elmondjuk a javaslatainkat.
    Például ebben az esetben a httpwebclient és a httpwebrequest osztályok használatát javaslom inkább, ha az elvira oldalát akarod automatizáltan hívogatni valami .net-es alkalmazásból.

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1326 üzenetére

    ez bizony. És ehhez kell excel, különben nem lesz a gépeden Excel application objektum.

    Én kérek elnézést!

  • martonx

    veterán

    válasz #10382336 #1328 üzenetére

    Hali!

    Két megoldási utat látok.

    1. Watin-t használsz, ezzel egyszerűen, könnyen lehet böngészőt automatizálni. Javascript szerűen (teljes .net) ki tudod vele szedni az adatokat a HTML DOM-ból. Viszont nem túl elegáns módszer villogtatni a böngészőt, az adatok kinyerésekor. Kérdés mennyire lényeges az elegancia?
    2. Használd a httpwebrequest, httpwebclient osztályokat. Na, ezekkel nincs semmi tapasztalatom, viszont brutál jó dolgokat lehet velük csinálni, aki ért hozzájuk. A webes játékokhoz a botokat is ezekkel az osztályokkal csinálják a hardcore gamerek :)) A PHUpper is ezekkel működik. Nagyon elegáns ezeket az osztályokat használni, viszont sok tanulást utánajárást igényel, mire beletanulsz.

    Ha van időd a feladatra, akkor mindenképpen a 2-es megoldást javaslom. Ha csak gyorsan össze kell dobni egy működőképes megoldást, akkor az 1-est.

    Én kérek elnézést!

  • #10382336

    törölt tag

    válasz #10382336 #1330 üzenetére

    A következőképpen sikerült megoldani:

    1: A táblázatot tartalmazó .html fájl letöltése a helyi gépre:
    My.Computer.Network.DownloadFile(forrashtml, celfajl, felhasznalonev, jelszo, False, 10000000, True)

    2: A letöltött fájl beolvasása egy stringbe:
    Dim s0 As String = Join(System.IO.File.ReadAllLines(celfajl, System.Text.Encoding.Default), "")

    3: A stringből a tabulátor - chr(9) - karakterek kitörlése.

    4: A string átalakítása úgy, hogy egy sor vagy egy tag-ot, vagy egy szövegsort tartalmazzon.
    Ezek után egy sor vagy így néz ki: "<tagnév tagtulajdonságok>"+vbcrlf ,
    vagy így: "szöveg"+vbcrlf
    így el lehet dönteni, hogy egy sor mit tartalmaz, ha a sor első karaktere "<" akkor tag,
    egyébként szöveg.

    5: Ezek után "csak" fel kell dolgozni a sorokat a táblázat parancsai szerint:
    <table> </table> - új táblázat, ill. táblázat vége
    <tr> </tr> - következő sor, sor vége
    <th> </th> - aktuális sor köv. oszlopának fejlécének kezdete/vége
    <td> </td> - akt. sor köv. oszlopának eleme.
    Minden más tag figyelmen kívűl hagyandó. A <th> tag-nál azonban még arra figyelni
    kell, hogy <th colspan="2"> az adott sorban két cella egyesítését jelenti.

    A próba során célobjektumnak "datagrid" -et használtam, amit "datagridview" -el
    írattam ki a "form" -ra. Összehasonlítva az eredeti weboldallal az adatok megegyeztek.

    Ez a megoldás valószínűleg nem a legegyszerűbb, azonban működik.
    Ha valakinek van egyszerűbb megoldása, nem sértődnék meg, ha leírná.

    KELLEMES ÜNNEPEKET MINDENKINEK!!!

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