Stiskněte "Enter" pro přeskočení obsahu

Knihovna k ovládání IO karty

0

Na této stránce jsem uvedl schéma zapojení vstupně výstupní karty, kterou lze připojit ke COM portu počítače. Jenže aby se dala ovládat je potřeba nějaký program. Vytvářet samostatný program není moc flexibilní – každému vyhovuje jiný styl ovládání a často je potřeba výstupy ovládat automaticky. Z tohoto důvodu jsem naprogramoval knihovnu LMSIOCard.dll

Parametry programu
Jméno programu LMSIOCard
Verze programu 1.0.
Jazyk
Podporované OS
Licence freeware
Velikost 13 kB
Potřebné knihovny RSCOM.dll
Vytvořeno v VB.NET
Stáhnout z Tohoto webu

Nebudem se zaobírat vnitřní stavbou knihovny, spíš popíšu jak knihovnu ovládat a jak vytvořit jednoduchý program, pomocí kterého lze I/O kartu ovládat.

Budu vycházet z programovacího jazyku VisualBasic.NET. Pokud v něm neumíte a máte pocit že byste měli, vřele doporučuji tento seriál. Nic kvalitnějšího v češtině a zadarmo nenajdete.

Ovládání COM portu

K ovládání COM portu používám knihovnu RSCOM.dll. Tuto knihovnu stačí vložit do složky s programem a ve VisualStudiu do projektu vložit Modul, do kterého vložíte tento kód:

Public pTXD As Boolean
Public pDTR As Boolean 
Public pRTS As Boolean
Declare Function OPENCOM Lib „RSCOM“ (ByVal OpenString$) As Integer
Declare Sub TIMEOUTS Lib „RSCOM“ (ByVal b%)
Declare Sub BUFFERSIZE Lib „RSCOM“ (ByVal b%)
Declare Sub CLOSECOM Lib „RSCOM“ ()
Declare Sub SENDBYTE Lib „RSCOM“ (ByVal Dat%)
Declare Function READBYTE Lib „RSCOM“ () As Integer
Declare Sub SENDSTRING Lib „RSCOM“ (ByVal Dat$)
Declare Function READSTRING Lib „RSCOM“ () As String
Declare Sub CLEARBUFFER Lib „RSCOM“ ()
Declare Function INBUFFER Lib „RSCOM“ () As Integer
Declare Function OUTBUFFER Lib „RSCOM“ () As Integer
Declare Sub DTR Lib „RSCOM“ (ByVal b%)
Declare Sub RTS Lib „RSCOM“ (ByVal b%)
Declare Sub TXD Lib „RSCOM“ (ByVal b%)
Declare Function CTS Lib „RSCOM“ () As Integer
Declare Function DSR Lib „RSCOM“ () As Integer
Declare Function RI Lib „RSCOM“ () As Integer
Declare Function DCD Lib „RSCOM“ () As Integer
Declare Function INPUTS Lib „RSCOM“ () As Integer
Declare Sub TIMEINIT Lib „RSCOM“ ()
Declare Function TIMEREAD Lib „RSCOM“ () As Double
Declare Sub DELAY Lib „RSCOM“ (ByVal ms As Double)
Declare Sub REALTIME Lib „RSCOM“ ()
Declare Sub NORMALTIME Lib „RSCOM“ ()

 

Příslušný COM port lze poté otevřít příkazem

'Kontrola, zda je port volný 
If OPENCOM(„COM1,1200,N,8,1“) = 0 Then 
 MsgBox(„Port obsazen!“) 
End If
'Otevře port COM1
OPENCOM(„COM1,1200,N,8,1“)
'Uzavření portu
CLOSECOM()
V programu poté stačí jednoduchými příkazy otevřený port ovládat
'Nastavení všech třech výstupů na log. 1 
DTR(1) 
TXD(1) 
RTS(1)
'Nastavení všech třech výstupů na log. 0
DTR(0)
TXD(0)
RTS(0)
'Četní vstupů (funkce vrátí datový typ Integer)
Vystup = DCD
Vystup = DSR
Vystup = CTS
Vystup = RI

Tak to by bylo k všeobecnému ovládání COM portu vše. Knihovna RSCOM samozřejmě nabízí i další funkce (stačí se podívat do modulu). Tohle ale prozatím stačí.

Ovládání knihovny LMSIOCard.dll

Nejprve je nutné si tuto knihovnu stáhnout a umístit někam do počítače. Doporučuji do složky s programem. Dále je nutné přidat do vašeho programu referenci na tuto knihovnu. Takže Project > Add Reference…

V zobrazeném okně klikněte na Browse a knihovnu najděte.

 

Do projektu (třeba do Formu) napište Imports LmsIOCard, abyste nemuseli knihovnu stále volat.

'importování Namespace 
Imports LmsIOCard
Public Class Form1
End Class

Knihovna obsahuje jednu třídu IOCard a 5 funkcí. Ty si postupně popíšeme.

IOCard.Version

Tato funkce vrátí verzi ve tvaru „Version Major.Minor.MinorRevision.“ ‚vypíše verzi knihovny MsgBox(IOCard.Version)

 

IOCard.About

Tato funkce vrátí informaci o autorovi knihovny. ‚vypíše text: „Copyright (c) LMS Software 2011; www.mylms.ic.cz/iocard-sw“

MsgBox(IOCard.About)

IOCard.COMOut(Output, Delay, Invert)

Touto funkcí se nastaví pouze výstupy. Pokud nenastane závažná chyba, tak funkce vrátí text „ok“.

  • Output – Datový typ String – Data, která se posílají na výstup. Vše kromě „1“ je log. 0
  • Delay – Datový typ Integer – Spoždění mezi náběžnou a sestupnou hranou hodinového signálu. Minimální hodnota je 50. Pokud karta chybně komunikuje lze zvýšit. Běžně však stačí hodnoty kolem 100
  • Invert – Datový typ Boolean – Pokud je True, tak se výstup invertuje. Místo 10101010 se na výstup zapíše 01010101
 
'Zapíše na výstup data 10101010
IOCard.COMOut("10101010", 100, False)

IOCard.COMIn(Delay, Invert)

Tato funkce čte a navrátí pouze vstupy.

  • Delay – Datový typ Integer – Spoždění mezi náběžnou a sestupnou hranou hodinového signálu. Minimální hodnota je 50. Pokud karta chybně komunikuje lze zvýšit. Běžně však stačí hodnoty kolem 100
  • Invert – Datový typ Boolean – Pokud je True, tak se přijímaná data invertují. Místo 10101010 se načte 01010101
'Čtení dat z karty 
MsgBox(IOCard.COMIn(100, False))

IOCard.COMAll(Output, Delay, Invert)

Tato funkce zapíše i přečte log. hodnoty na IO kartě.

  • Output – Datový typ String – Data, která se posílají na výstup. Vše kromě „1“ je log. 0
  • Delay – Datový typ Integer – Spoždění mezi náběžnou a sestupnou hranou hodinového signálu. Minimální hodnota je 50. Pokud karta chybně komunikuje lze zvýšit. Běžně však stačí hodnoty kolem 100
  • Invert – Datový typ Boolean – Pokud je True, tak invertuje vycházející i přicházející data.
'Zapíše na výstup data 10101010 a přečtená data zobrazí v MsgBoxu 
MsgBox(IOCard.COMOut(„10101010“, 100, False))

Program na čtení a zapisování dat z/do karty

Ve VisualStudiu založíme nový projekt Windows Forms Application. Do něj přidejte Modul s kódem, který je výš. Poté přidejte referenci na knihovnu LMSIOCard.

Na Form natahejte tlačítka zhruba jako na obrázku.

  • Open COM1 – Button1
  • Version – Button2
  • About – Button3
  • Read / Write – Button4
  • Textové pole – TextBox1
  • Label – Label1

Do formu vložte tento kód:

Imports LmsIOCard

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If OPENCOM(„COM1,1200,N,8,1“) = 0 Then
‚kontrola portu COM1
MsgBox(„Port obsazen!“)
Else
OPENCOM(„COM1,1200,N,8,1“) ‚Otevření portu COM1
MsgBox(„Port otevřen“)
End If
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox(IOCard.Version)
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
MsgBox(IOCard.About)
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Label1.Text = IOCard.COMAll(TextBox1.Text, 100, False)
End Sub

End Class

Komentáře myslím nejsou nutné, protože tohle je opravdu základ. Navíc jsem toho plno vysvětlil na začátku tohoto článku.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *