📄 form1.cs
字号:
private void btRead_Click(object sender, System.EventArgs e)
{
int cb = 0;
byte[] inbuffer = new byte[8];
byte[] outbuffer = new byte[4];
if (!verifyAddressParameter())
{
reWriteAddressParameter();
return;
}
inbuffer[0] = 1;
//address
outbuffer = BitConverter.GetBytes(g_address);
inbuffer[7] = outbuffer[3];
inbuffer[6] = outbuffer[2];
inbuffer[5] = outbuffer[1];
inbuffer[4] = outbuffer[0];
if (!KernelIoControl(IOCTL_PHY_ADR, inbuffer, 8, outbuffer, 4, ref cb))
{
MessageBox.Show ("KernelIoControl call error! ","Access error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
return;
}
g_data = BitConverter.ToUInt32(outbuffer,0);
reWriteAddressParameter();
reWriteDataParameter();
}
private void btWrite_Click(object sender, System.EventArgs e)
{
int cb = 0;
byte[] inbuffer = new byte[16];
byte[] outbuffer = new byte[4];
if (!verifyAddressParameter())
{
reWriteAddressParameter();
return;
}
if (!verifyDataParameter())
{
reWriteDataParameter();
return;
}
if (!verifyMaskParameter())
{
reWriteMaskParameter();
return;
}
inbuffer[0] = 2;
//address
outbuffer = BitConverter.GetBytes(g_address);
inbuffer[7] = outbuffer[3];
inbuffer[6] = outbuffer[2];
inbuffer[5] = outbuffer[1];
inbuffer[4] = outbuffer[0];
//data
outbuffer = BitConverter.GetBytes(g_data);
inbuffer[11] = outbuffer[3];
inbuffer[10] = outbuffer[2];
inbuffer[9] = outbuffer[1];
inbuffer[8] = outbuffer[0];
//mask
outbuffer = BitConverter.GetBytes(g_mask);
inbuffer[15] = outbuffer[3];
inbuffer[14] = outbuffer[2];
inbuffer[13] = outbuffer[1];
inbuffer[12] = outbuffer[0];
if (!KernelIoControl(IOCTL_PHY_ADR, inbuffer, 16, outbuffer, 4, ref cb))
{
MessageBox.Show ("KernelIoControl call error! ","Access error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
return;
}
reWriteAddressParameter();
reWriteDataParameter();
reWriteMaskParameter();
}
private void reWriteAddressParameter()
{
string output;
output = String.Format("{0:X4}", g_address>>16);
tbAddressHI.Text = output;
output = String.Format("{0:X4}", (g_address & 0x0000ffff));
tbAddressLO.Text = output;
}
private bool verifyAddressParameter()
{
UInt16 AddressLO = 0;
try
{
System.Convert.ToUInt16(tbAddressHI.Text,16);
}
catch (System.FormatException)
{
return false;
}
catch (System.OverflowException)
{
return false;
}
try
{
AddressLO = System.Convert.ToUInt16(tbAddressLO.Text,16);
}
catch (System.FormatException)
{
return false;
}
catch (System.OverflowException)
{
return false;
}
// test word boundry
if (0 != AddressLO % 4)
{
MessageBox.Show ("Address error, must be on 4 byte boundry! ","Access error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);
return false;
}
try
{
g_address = System.Convert.ToUInt32(tbAddressHI.Text,16) * 0x00010000 +
System.Convert.ToUInt32(tbAddressLO.Text,16);
}
catch (System.FormatException)
{
return false;
}
return true;
}
private void reWriteDataParameter()
{
string output;
output = String.Format("{0:X4}", g_data>>16);
tbDataHI.Text = output;
output = String.Format("{0:X4}", (g_data & 0x0000ffff));
tbDataLO.Text = output;
}
private bool verifyDataParameter()
{
try
{
System.Convert.ToUInt16(tbDataHI.Text,16);
}
catch (System.FormatException)
{
return false;
}
catch (System.OverflowException)
{
return false;
}
try
{
System.Convert.ToUInt16(tbDataLO.Text,16);
}
catch (System.FormatException)
{
return false;
}
catch (System.OverflowException)
{
return false;
}
try
{
g_data = System.Convert.ToUInt32(tbDataHI.Text,16) * 0x00010000 +
System.Convert.ToUInt32(tbDataLO.Text,16);
}
catch (System.FormatException)
{
return false;
}
return true;
}
private void reWriteMaskParameter()
{
string output;
output = String.Format("{0:X4}", g_mask>>16);
tbMaskHI.Text = output;
output = String.Format("{0:X4}", (g_mask & 0x0000ffff));
tbMaskLO.Text = output;
}
private bool verifyMaskParameter()
{
try
{
System.Convert.ToUInt16(tbMaskHI.Text,16);
}
catch (System.FormatException)
{
return false;
}
catch (System.OverflowException)
{
return false;
}
try
{
System.Convert.ToUInt16(tbMaskLO.Text,16);
}
catch (System.FormatException)
{
return false;
}
catch (System.OverflowException)
{
return false;
}
try
{
g_mask = System.Convert.ToUInt32(tbMaskHI.Text,16) * 0x00010000 +
System.Convert.ToUInt32(tbMaskLO.Text,16);
}
catch (System.FormatException)
{
return false;
}
return true;
}
private void vScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
if (verifyAddressParameter() && vScrollBar1.Value != 0)
{
switch (vScrollBar1.Value)
{
case 16:
g_address = g_address - 16;
break;
case 4:
g_address = g_address - 4;
break;
case -16:
g_address = g_address + 16;
break;
case -4:
g_address = g_address + 4;
break;
}
reWriteAddressParameter();
vScrollBar1.Value = 0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -