⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 PIOD56
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Threading;
using PIODIO_Ns;

namespace PIOD56_Demo
{
    public partial class Form1 : Form
    {
        public uint wBaseAddr;
        public ushort wInitialCode, wTotalBoards, wIrq, wSubVendor, wSubDevice, wSubAux, wSlotBus, wSlotDevice;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
            btnActive.Enabled = false;
            if ((wInitialCode = PIODIO .DriverInit ()) != 0)
            {
                MessageBox.Show("Driver initialize error!!!");
                return;
            }
            
            if ((wInitialCode = PIODIO.SearchCard (out wTotalBoards, PIODIO.PIOD_56)) != 0)
            {
                MessageBox.Show("SearchCard Error");
                
                return;
            }

            tbxTotal.Text = wTotalBoards.ToString();
            nudActive.Maximum = wTotalBoards - 1;
            nudActive.Minimum = 0;
            btnActive.Enabled = true;
        }

        
        private void btnExit_Click(object sender, EventArgs e)
        {
            PIODIO.DriverClose();
            Close();
        }

        private void btnActive_Click(object sender, EventArgs e)
        {
            
            ushort InVal0,InVal1,InVal2,wRst;
            lbxTest .Items .Clear ();
            if (Convert.ToInt16(nudActive.Value) < 0 || Convert.ToInt16(nudActive.Value) > Convert.ToInt16(tbxTotal.Text ))
            {
                lbxTest.Items.Add("Invalid board number,Please Retry!!!");
                btnActive.Enabled = false;
                return;
            }
            wRst = PIODIO.GetConfigAddressSpace((ushort)Convert.ToInt16(nudActive.Value), out wBaseAddr, out wIrq, out wSubVendor, out wSubDevice, out wSubAux, out wSlotBus, out wSlotDevice); 
            
            if(wRst !=0)
            {
                MessageBox .Show ("Get Config-Address-Space Error!!");
                btnActive.Enabled = false;
                return ;
            
            }
            //*************************//
            //Enable all DI/DO port    //
            //*************************//
            lbxTest.Items.Add("Enable All DI/DO");
            PIODIO.OutputByte(wBaseAddr, (ushort)1); //Enable I/O function
            lbxTest.Items.Add("");
            lbxTest.Items.Add("Setting Port 0 to Output-Mode and Port 1, 2 to Input-Mode");
            PIODIO.OutputByte(wBaseAddr + 0xCC, (ushort)0x01); //Setting Port 0 Output

            ushort ii = 1;
            while (ii <= (ushort)0x80)
            {
                PIODIO.OutputByte((wBaseAddr + 0xC0), (ushort)ii);
                InVal1 = PIODIO.InputByte(wBaseAddr + 0xC4);
                InVal2 = PIODIO.InputByte(wBaseAddr + 0xC8);
                
                lbxTest.Items.Add("Output Port 0 (Hex)= " + Convert.ToString(ii, 16));
                lbxTest.Items.Add("Input Port 1,2 (Hex)= " + Convert.ToString(InVal1, 16) +" "+Convert.ToString(InVal2, 16));
                Thread.Sleep(100);
                Application.DoEvents();
                ii*= 2;
            }


            lbxTest.Items.Add("");
            lbxTest.Items.Add("Setting Port 1 to Output-Mode and Port 0, 2 to Input-Mode");
            PIODIO.OutputByte(wBaseAddr + 0xCC, (ushort)0x02); //Setting Port 1 Output
            ii = 1;
            while (ii <= (ushort)0x80)
            {
               PIODIO.OutputByte(wBaseAddr + 0xC4, (ushort)ii);
                InVal0 = PIODIO.InputByte(wBaseAddr + 0xC0);
                InVal2 = PIODIO.InputByte(wBaseAddr + 0xC8);

                lbxTest.Items.Add("Output Port 1 (Hex)= " + Convert.ToString(ii, 16));
                lbxTest.Items.Add("Input Port 0,2 (Hex)= " + Convert.ToString(InVal0, 16) + " " + Convert.ToString(InVal2, 16));
                Thread.Sleep(100);
                Application.DoEvents();
                ii *= 2;
            }
            lbxTest.Items.Add("");
            lbxTest.Items.Add("Setting Port 2 to Output-Mode and Port 0, 1 to Input-Mode");
            PIODIO.OutputByte(wBaseAddr + 0xCC, (ushort)0x04); //Setting Port 2 Output
            ii=1;
            while (ii <= (ushort)0x80)
            {
                PIODIO.OutputByte(wBaseAddr + 0xC8, (ushort)ii);
                InVal0 = PIODIO.InputByte(wBaseAddr + 0xC0);
                InVal1 = PIODIO.InputByte(wBaseAddr + 0xC4);

                lbxTest.Items.Add("Output Port 2 (Hex)= " + Convert.ToString(ii, 16));
                lbxTest.Items.Add("Input Port 0,1 (Hex)= " + Convert.ToString(InVal0, 16) + " " + Convert.ToString(InVal1, 16));
                Thread.Sleep(100);
                Application.DoEvents();
                ii *= 2;
            }
            lbxTest.Items .Add ("");
            lbxTest.Items.Add("Digital-Input/Digital-Output (CON1 and CON2)");

            ii = 1;
            while (ii <= (ushort)0x80)
            {
                PIODIO.OutputByte(wBaseAddr + 0xD0, (ushort)ii);
                PIODIO.OutputByte(wBaseAddr + 0xD4, (ushort)ii);
                InVal1 = PIODIO.InputByte(wBaseAddr + 0xD0);
                InVal2 = PIODIO.InputByte(wBaseAddr + 0xD4);

                lbxTest.Items.Add("Digital-Output (Hex)= "+Convert.ToString (ii,16)+" "+Convert .ToString(ii,16));
                lbxTest.Items.Add("Digital-Input(Hex)= " + Convert.ToString(InVal1, 16) + " " + Convert.ToString(InVal2, 16));
                Thread.Sleep(100);
                Application.DoEvents();
                ii *= 2;
            }


        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -