first commit
This commit is contained in:
274
LibreHardwareMonitor-0.9.4/InpOut/InpOut32.Net/CSharpExample.cs
Normal file
274
LibreHardwareMonitor-0.9.4/InpOut/InpOut32.Net/CSharpExample.cs
Normal file
@@ -0,0 +1,274 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace InpOut32.Net
|
||||
{
|
||||
public partial class CSharpExample : Form
|
||||
{
|
||||
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern UInt32 IsInpOutDriverOpen();
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern void Out32(short PortAddress, short Data);
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern char Inp32(short PortAddress);
|
||||
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern void DlPortWritePortUshort(short PortAddress, ushort Data);
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern ushort DlPortReadPortUshort(short PortAddress);
|
||||
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern void DlPortWritePortUlong(int PortAddress, uint Data);
|
||||
[DllImport("inpout32.dll")]
|
||||
private static extern uint DlPortReadPortUlong(int PortAddress);
|
||||
|
||||
[DllImport("inpoutx64.dll")]
|
||||
private static extern bool GetPhysLong(ref int PortAddress, ref uint Data);
|
||||
[DllImport("inpoutx64.dll")]
|
||||
private static extern bool SetPhysLong(ref int PortAddress, ref uint Data);
|
||||
|
||||
|
||||
[DllImport("inpoutx64.dll", EntryPoint="IsInpOutDriverOpen")]
|
||||
private static extern UInt32 IsInpOutDriverOpen_x64();
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "Out32")]
|
||||
private static extern void Out32_x64(short PortAddress, short Data);
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "Inp32")]
|
||||
private static extern char Inp32_x64(short PortAddress);
|
||||
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "DlPortWritePortUshort")]
|
||||
private static extern void DlPortWritePortUshort_x64(short PortAddress, ushort Data);
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "DlPortReadPortUshort")]
|
||||
private static extern ushort DlPortReadPortUshort_x64(short PortAddress);
|
||||
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "DlPortWritePortUlong")]
|
||||
private static extern void DlPortWritePortUlong_x64(int PortAddress, uint Data);
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "DlPortReadPortUlong")]
|
||||
private static extern uint DlPortReadPortUlong_x64(int PortAddress);
|
||||
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "GetPhysLong")]
|
||||
private static extern bool GetPhysLong_x64(ref int PortAddress, ref uint Data);
|
||||
[DllImport("inpoutx64.dll", EntryPoint = "SetPhysLong")]
|
||||
private static extern bool SetPhysLong_x64(ref int PortAddress, ref uint Data);
|
||||
|
||||
|
||||
bool m_bX64 = false;
|
||||
|
||||
public CSharpExample()
|
||||
{
|
||||
InitializeComponent();
|
||||
try
|
||||
{
|
||||
uint nResult = 0;
|
||||
try
|
||||
{
|
||||
nResult = IsInpOutDriverOpen();
|
||||
}
|
||||
catch (BadImageFormatException)
|
||||
{
|
||||
nResult = IsInpOutDriverOpen_x64();
|
||||
if (nResult != 0)
|
||||
m_bX64 = true;
|
||||
|
||||
}
|
||||
|
||||
if (nResult == 0)
|
||||
{
|
||||
lblMessage.Text = "Unable to open InpOut32 driver";
|
||||
button1.Enabled = false;
|
||||
button2.Enabled = false;
|
||||
button3.Enabled = false;
|
||||
button4.Enabled = false;
|
||||
button5.Enabled = false;
|
||||
button6.Enabled = false;
|
||||
button7.Enabled = false;
|
||||
}
|
||||
}
|
||||
catch (DllNotFoundException ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine(ex.ToString());
|
||||
lblMessage.Text = "Unable to find InpOut32.dll";
|
||||
button1.Enabled = false;
|
||||
button2.Enabled = false;
|
||||
button3.Enabled = false;
|
||||
button4.Enabled = false;
|
||||
button5.Enabled = false;
|
||||
button6.Enabled = false;
|
||||
button7.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
short iPort = Convert.ToInt16(textBox1.Text);
|
||||
|
||||
char c;
|
||||
if (m_bX64)
|
||||
c = Inp32_x64(iPort);
|
||||
else
|
||||
c = Inp32(iPort);
|
||||
|
||||
textBox2.Text = Convert.ToInt32(c).ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("An error occured:\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
short iPort = Convert.ToInt16(textBox1.Text);
|
||||
short iData = Convert.ToInt16(textBox2.Text);
|
||||
textBox2.Text = "";
|
||||
if (m_bX64)
|
||||
Out32_x64(iPort, iData);
|
||||
else
|
||||
Out32(iPort, iData);
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("An error occured:\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
short iPort = Convert.ToInt16(textBox1.Text);
|
||||
ushort s;
|
||||
if (m_bX64)
|
||||
s = DlPortReadPortUshort_x64(iPort);
|
||||
else
|
||||
s = DlPortReadPortUshort(iPort);
|
||||
|
||||
textBox2.Text = Convert.ToUInt16(s).ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("An error occured:\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void button4_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
int nPort = Convert.ToInt32(textBox1.Text);
|
||||
|
||||
uint l;
|
||||
if (m_bX64)
|
||||
l = DlPortReadPortUlong_x64(nPort);
|
||||
else
|
||||
l = DlPortReadPortUlong(nPort);
|
||||
|
||||
textBox2.Text = l.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("An error occured:\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void button5_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
short sPort = Convert.ToInt16(textBox1.Text);
|
||||
ushort iData = Convert.ToUInt16(textBox2.Text);
|
||||
textBox2.Text = "";
|
||||
|
||||
if (m_bX64)
|
||||
DlPortWritePortUshort_x64(sPort, iData);
|
||||
else
|
||||
DlPortWritePortUshort(sPort, iData);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("An error occured:\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void button6_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
int nPort = Convert.ToInt32(textBox1.Text);
|
||||
uint nData = Convert.ToUInt32(textBox2.Text);
|
||||
textBox2.Text = "";
|
||||
if (m_bX64)
|
||||
DlPortWritePortUlong_x64(nPort, nData);
|
||||
else
|
||||
DlPortWritePortUlong(nPort, nData);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("An error occured:\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void Beep(uint freq)
|
||||
{
|
||||
if (m_bX64)
|
||||
{
|
||||
Out32_x64(0x43, 0xB6);
|
||||
Out32_x64(0x42, (byte)(freq & 0xFF));
|
||||
Out32_x64(0x42, (byte)(freq >> 9));
|
||||
System.Threading.Thread.Sleep(10);
|
||||
Out32_x64(0x61, (byte)(Convert.ToByte(Inp32_x64(0x61)) | 0x03));
|
||||
}
|
||||
else
|
||||
{
|
||||
Out32(0x43, 0xB6);
|
||||
Out32(0x42, (byte)(freq & 0xFF));
|
||||
Out32(0x42, (byte)(freq >> 9));
|
||||
System.Threading.Thread.Sleep(10);
|
||||
Out32(0x61, (byte)(Convert.ToByte(Inp32(0x61)) | 0x03));
|
||||
}
|
||||
}
|
||||
|
||||
private void StopBeep()
|
||||
{
|
||||
if (m_bX64)
|
||||
Out32_x64(0x61, (byte)(Convert.ToByte(Inp32_x64(0x61)) & 0xFC));
|
||||
else
|
||||
Out32(0x61, (byte)(Convert.ToByte(Inp32(0x61)) & 0xFC));
|
||||
}
|
||||
|
||||
private void CSharpExample_Load(object sender, EventArgs e)
|
||||
{
|
||||
button7_Click(this, null);
|
||||
}
|
||||
|
||||
|
||||
private void ThreadBeeper()
|
||||
{
|
||||
for (uint i = 440000; i < 500000; i += 1000)
|
||||
{
|
||||
uint freq = 1193180000 / i; // 440Hz
|
||||
Beep(freq);
|
||||
}
|
||||
StopBeep();
|
||||
}
|
||||
|
||||
private void button7_Click(object sender, EventArgs e)
|
||||
{
|
||||
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadBeeper));
|
||||
t.Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user