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.