📄 form1.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 + -