 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Tor Jun 18, 2013 7:38 pm Naslov sporočila: Visual basic - pomoč pri vklopu relejev na LPT portu |
|
|
Lep pozdrav!
Imam težavo. Spodaj je prilepljena koda iz Visual basic 1.0. Izdelujem program v MS-DOS okolju. Želim vklapljati in izklapljati 8 relejev na LPT portu, težava je v tem, da ko vklopim drugi rele, se mi prvi izključi. Kako naj zapišem kodo, da bo pravilna?
Koda: |
Private Sub Command1_Click()
port1 = 888
Out port1, 1
End Sub
Private Sub Command10_Click()
port1 = 888
Out port1, 255
End Sub
Private Sub Command2_Click()
port1 = 888
Out port1, 2
End Sub
Private Sub Command3_Click()
port1 = 888
Out port1, 4
End Sub
Private Sub Command4_Click()
port1 = 888
Out port1, 8
End Sub
Private Sub Command5_Click()
port1 = 888
Out port1, 16
End Sub
Private Sub Command6_Click()
port1 = 888
Out port1, 32
End Sub
Private Sub Command7_Click()
port1 = 888
Out port1, 64
End Sub
Private Sub Command8_Click()
port1 = 888
Out port1, 128
End Sub
Private Sub Command9_Click()
port1 = 888
Out port1, 0
End Sub
|
_________________ Lep pozdrav! |
|
Nazaj na vrh |
|
 |
matejcek81 Član

Pridružen-a: Pon 16 Mar 2009 12:32 Prispevkov: 1526 Aktiv.: 7.70 Kraj: Maribor
|
Objavljeno: Tor Jun 18, 2013 8:25 pm Naslov sporočila: |
|
|
Tole ti bo pomagalo.
Primer za prva dva releja:
Koda: |
Private Sub Command1_Click()
port1 = 888
Out port1, 192
End Sub |
Vpiši 192 v tisto povezavo kot decimalno število in boš vugotovil v čem je finta.
LP
_________________ Če ne gre - ne obstaja! |
|
Nazaj na vrh |
|
 |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Tor Jun 18, 2013 9:19 pm Naslov sporočila: |
|
|
To mi je jasno, v meniju programa imam 8 različnih tipk VKLOP in 8 različnih tipk IZKLOP. Problem je v tem, da ko je prvi rele vklopljen, se ta izključi, ko pritisnem tipko VKLOP za drugi rele, oziroma ne moram naključno vklopiti rele, brez da bi prejšnega vklopljenega izključil.
_________________ Lep pozdrav! |
|
Nazaj na vrh |
|
 |
airwolf Član


Pridružen-a: Sre 28 Maj 2008 17:17 Prispevkov: 2219 Aktiv.: 10.68 Kraj: Polhov Gradec
|
Objavljeno: Tor Jun 18, 2013 9:32 pm Naslov sporočila: |
|
|
Tole pa ne bo šlo tako enostavno. Bo pa treba precej več kode.
Recimo ti imaš vključen rele 1, želiš vključiti še rele 2. Najprej mora koda ob kliku na gumb ali karkoli že pogledati ali je gumb rele 1 že aktiviran, če je mora uporabiti drugačno kodo kot če ni. Zdajle nimam ene ideje kako bi to naredil z minimalno količino kode, bi pa pogledal za kakšnim case stavkom.
_________________ LP Gašper |
|
Nazaj na vrh |
|
 |
matejcek81 Član

Pridružen-a: Pon 16 Mar 2009 12:32 Prispevkov: 1526 Aktiv.: 7.70 Kraj: Maribor
|
Objavljeno: Tor Jun 18, 2013 9:52 pm Naslov sporočila: |
|
|
Kombinacij je 256. Tukaj se bi s kakšno case ali if programiral do brade.
Predlagam, da ustvariš kakšen array z osmimi pozicijami, s tipkami jim spremenjaš vrednost z IF stavkom. Na koncu pa pretvoriš binarno število(array) v decimalno in pošlješ na port.
LPT lahko tudi bereš, tako da je uporabljen kot vhod.
Kateri visual basic je to, ki deluje v dosu?
LP
_________________ Če ne gre - ne obstaja! |
|
Nazaj na vrh |
|
 |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Tor Jun 18, 2013 9:54 pm Naslov sporočila: |
|
|
To sem mislil ja. Se bom poglobil v case stavek, imam še eno vprašanje, ker je e ravno tema odprta... Zanima me, kam bi vpisal kodo, ki bi se izvedla takoj ob zagonu mojega programa? Imam datoteko s končnico .frm ki (se mi zdi) je glavna, pod njo so pa podprogrami. Ker se izvajanje podprogramov izvede samo s pritiskom uporabnika, me zanima kam bi pisal kodo za postavitev vseh osmih izhodnih bitov LPT porta na logično 0. Sem čisto nov v teh vodah, zato brez zamere.
_________________ Lep pozdrav! |
|
Nazaj na vrh |
|
 |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Tor Jun 18, 2013 9:57 pm Naslov sporočila: |
|
|
To je Visual basic 1.0 za MS - DOS. Včeraj sem se začel malo igrati in sem do danes vizualno konec, nekaj sem delal z zvočnimi efekti, sedaj bi pa rad, da mi delajo še releji na izhodu.
_________________ Lep pozdrav!
Nazadnje urejal/a lamela123 Tor Jun 18, 2013 9:58 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
airwolf Član


Pridružen-a: Sre 28 Maj 2008 17:17 Prispevkov: 2219 Aktiv.: 10.68 Kraj: Polhov Gradec
|
Objavljeno: Tor Jun 18, 2013 9:58 pm Naslov sporočila: |
|
|
Načeloma je vsaka verzija VB-ja sposobna narest konzolno aplikacijo.
Za tisto imaš pa form load akcijo. Kako prideš do nje?
dvoklkneš na na prazni del forme.
_________________ LP Gašper |
|
Nazaj na vrh |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2104 Aktiv.: 8.87 Kraj: Ljubljana
|
Objavljeno: Tor Jun 18, 2013 10:02 pm Naslov sporočila: |
|
|
Rabiš dve funkciji
VklopiRele in IzklopiRele ter globalno spremenljivko npr. stanje_relejev.
VklopiRele: stanje_relejev = stanje_relejev (BITNI OR) parameter; stanje_relejev nato vpišeš v ustrezen izhodni register.
IzklopiRele: stanje_relejev = stanje_relejev (BITNI AND) negiran parameter; stanje_relejev nato vpišeš v ustrezen izhodni register.
|
|
Nazaj na vrh |
|
 |
matejcek81 Član

Pridružen-a: Pon 16 Mar 2009 12:32 Prispevkov: 1526 Aktiv.: 7.70 Kraj: Maribor
|
Objavljeno: Tor Jun 18, 2013 10:05 pm Naslov sporočila: |
|
|
Pri meni zgleda takole:
Koda: |
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[b]'TUKAJ VSTAVIŠ KAJ SE NAJ IZVEDE PRI ZAGONU FORME[/b]
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
End Class |
LP
_________________ Če ne gre - ne obstaja! |
|
Nazaj na vrh |
|
 |
Branez Moderator


Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7831 Aktiv.: 33.03 Kraj: Koprivnica HR
|
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Tor Jun 18, 2013 11:25 pm Naslov sporočila: |
|
|
lamela123 je napisal/a: |
To mi je jasno, v meniju programa imam 8 različnih tipk VKLOP in 8 različnih tipk IZKLOP. Problem je v tem, da ko je prvi rele vklopljen, se ta izključi, ko pritisnem tipko VKLOP za drugi rele, oziroma ne moram naključno vklopiti rele, brez da bi prejšnega vklopljenega izključil. |
Algoritem je takšen:
Imaš neko variablo v kateri je sharnjeno stanje porta, recimo PortState tipa byte.
Lahko pa vsakič pred vpisovanjem v port prebereš vrednost porta in jo shraniš v PortState.
Če želiš vklopiti pin n potem je
PortState = PortState or n
Out port, PortState
Če želiš izklopiti pin n potem je
PortState = PortState and (0xFF - n)
Out port, PortState
Če želiš zamenjati stanje pina n potem je
PortState = PortState xor n
Out port, PortState
Vrednost n je enaka 2^pin, torej za pin 0 = 1, za pin 1 = 2 za pin 3 = 4...
PS:
Aha, saj je že int47 vse povedal...
LP GJ
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 499 dni
Powered by phpBB © 2001, 2005 phpBB Group
|