UPOTREBA BIBLIOTEKE IO.DLL U C#
BibliotekU IO.DLL
moguće je koristiti i u C#. Funkcije ove
biblioteke su sledeće:
PortOut:
Šalje na specifirani port dati bajt. Npr. komandom PortOut(0x378, 15) biće poslat broj 15 na Data port.
PortWordOut:
Šalje na specifirani port datu reč(16 bita).
PortDWordOut:
Šalje na specifirani port datu dvostruku reč(32 bita).
PortIn:
Čita sa navedene adrese 1 bajt.
PortWordIn:
Čita sa navedene adrese 1 reč(16 bita).
PortDWordIn:
Čita sa navedene adrese dvostruku reč(32 bita).
GetPortBit:
Ova funkcija ispituje status zadatog bita unutar bajta. Ako je postavljen
na 1 vraća vrednost True inače vraća
vrednost False.
SetPortBit:
Postavlja na datoj adresi, navedeni broj bita na 1. Npr. komandom SetPortBit(0x378, 4) biće postavljen
četvrti bit Data porta na 1.
ClrPortBit:
Postavlja na datoj adresi, navedeni broj bita na 0. Npr. komandom ClrPortBit(0x378, 3) biće postavljen
treći bit Data porta na 0.
NotPortBit:
Invertuje zadati bit na datoj adresi. Npr. komandom NotPortBit(0x378, 4) biće promenjeno stanje četvrtog bita Data porta.
RightPortShift:
Vrši pomeranje u desno sadržaja na datoj adresi. Ako je u funkciji drugi
parametar postavljen na True na
najvećoj poziciji biće
postavljeno 1 inače ako je False neće
biće postavljeno 0.
LeftPortShift:
Vrši pomeranje u levo sadržaja na datoj adresi. Ako je u funkciji drugi
parametar postavljen na True na najnižoj
poziciji biće postavljeno
1 inače ako je False neće biće
postavljeno 0.
IsDriverInstalled:
Ova funkcija vraća vrednost True
ako IO.DLL postoji inače vraća False.
PROGRAM KONTROLE DATAPORTA
Izgled ekrana ovog programa prikazan je na slici 1.
Slika 1
Klikom mišom na taster Posalji postavljene vrednosti bita biće prosleđene na DataPort.
IO
klasa za upotrebu pojednicih funkcija je:
public class io { [DllImport("io.dll")] public static extern void PortOut(int Port, int Data); [DllImport("io.dll")] public static extern void PortWordOut(int Port, int Data); [DllImport("io.dll")] public static extern void PortDWordOut(int Port, int Data); [DllImport("io.dll")] public static extern char PortIn(int Port); [DllImport("io.dll")] public static extern int PortWordIn(int Port); [DllImport("io.dll")] public static extern int PortDWordIn(int Port); [DllImport("io.dll")] public static extern void SetPortBit(int Port, char Bit); [DllImport("io.dll")] public static extern void ClrPortBit(int Port, char Bit); [DllImport("io.dll")] public static extern void NotPortBit(int Port, char Bit); [DllImport("io.dll")] public static extern int GetPortBit(int Port, char Bit); [DllImport("io.dll")] public static extern int RightPortShift(int Port, int Val); [DllImport("io.dll")] public static extern int LeftPortShift(int Port, int Val); [DllImport("io.dll")] public static extern int IsDriverInstalled(); } |
Kod programa je sledeći:
public partial class Form1 : Form { byte[] bajt = new byte[8]; int LPTAdresa; public Form1() {
InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) {
LPTAdresa = 0x378; io.PortOut(LPTAdresa, 0); } private void Postavi_bit_1(object sender, EventArgs e) { if (textBox1.BackColor == Color.White) {
textBox1.BackColor = Color.Red;
bajt[0] = 1; } else {
textBox1.BackColor = Color.White;
bajt[0] = 0; } } private void Postavi_bit_2(object sender, EventArgs e) { if (textBox2.BackColor == Color.White) {
textBox2.BackColor = Color.Red;
bajt[1] = 1; } else {
textBox2.BackColor = Color.White; bajt[1] = 0; } } private void Postavi_bit_3(object sender, EventArgs e) { if (textBox3.BackColor == Color.White) {
textBox3.BackColor = Color.Red;
bajt[2] = 1; } else {
textBox3.BackColor = Color.White;
bajt[2] = 0; } } private void Postavi_bit_4(object sender, EventArgs e) { if (textBox4.BackColor == Color.White) {
textBox4.BackColor = Color.Red;
bajt[3] = 1; } else {
textBox4.BackColor = Color.White;
bajt[3] = 0; } } private void Postavi_bit_5(object sender, EventArgs e) { if (textBox5.BackColor == Color.White) {
textBox5.BackColor = Color.Red;
bajt[4] = 1; } else {
textBox5.BackColor = Color.White;
bajt[4] = 0; } } private void Postavi_bit_6(object sender, EventArgs e) { if (textBox6.BackColor == Color.White) {
textBox6.BackColor = Color.Red;
bajt[5] = 1; } else {
textBox6.BackColor = Color.White;
bajt[5] = 0; } } private void Postavi_bit_7(object sender, EventArgs e) { if (textBox7.BackColor == Color.White) {
textBox7.BackColor = Color.Red;
bajt[6] = 1; } else {
textBox7.BackColor = Color.White;
bajt[6] = 0; } } private void Postavi_bit_8(object sender, EventArgs e) { if (textBox8.BackColor == Color.White) {
textBox8.BackColor = Color.Red;
bajt[7] = 1; } else {
textBox8.BackColor = Color.White;
bajt[7] = 0; } } private void button1_Click(object sender, EventArgs e) { int broj = 0; int p = 1; for (int i = 0; i < 8; i++) {
broj = broj + bajt[i] * p; p
= p * 2; } io.PortOut(LPTAdresa, broj); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { io.PortOut(LPTAdresa, 0); } } |
Kompletan projekat u C# u VS 2008 preuzmite sa:
http://rapidshare.com/files/439065478/LPTPort.rar
http://vojo.milanovic.org
© Copyright, 2011 Milanović Vojo
All Rights
Reserved.