using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
class Class1
{
[DllImport("kernel32.dll")]
private static extern IntPtr CreateFile(
String lpFileName,
UInt32 dwDesiredAccess,
UInt32 dwShareMode,
IntPtr lpSecurityAttributes,
UInt32 dwCreationDisposition,
UInt32 dwFlagsAndAttributes,
IntPtr hTemplateFile
);
[DllImport("Kernel32.dll")]
private static extern bool ReadFile(
IntPtr hFile,
byte[] lpBuffer,
uint nNumberOfBytesToRead,
ref uint lpNumberOfBytesRead,
IntPtr lpOverlapped
);
[DllImport("Kernel32.dll")]
private static extern bool WriteFile(
IntPtr hFile,
byte[] lpBuffer,
uint nNumberOfBytesToWrite,
ref uint lpNumberOfBytesWritten,
IntPtr lpOverlapped
);
[DllImport("kernel32.dll")]
private static extern bool CloseHandle(
IntPtr hObject
);
//--------------------------------------------------------------------------------
IntPtr hFile;
private const UInt32 GENERIC_READ = 0x80000000;
private const UInt32 GENERIC_WRITE = 0x40000000;
private const UInt32 OPEN_EXISTING = 3;
private const Int32 INVALID_HANDLE_VALUE = -1;
private const int USB_WRITENUM = 8;
private const int USB_READNUM = 8;
private byte[] m_rd_data = new byte[USB_READNUM];
public byte[] rd_data
{
get { return m_rd_data; }
set { m_rd_data = value; }
}
private byte[] m_wr_data = new byte[USB_WRITENUM];
public byte[] wr_data
{
get { return m_wr_data; }
set { m_wr_data = value; }
}
public bool OnInitUSB()
{
hFile = IntPtr.Zero;
string deviceName = string.Empty;
deviceName = "USB";
hFile = CreateFile(
deviceName,
GENERIC_READ | GENERIC_WRITE,
0,
IntPtr.Zero,
OPEN_EXISTING,
0,
IntPtr.Zero
);
return hFile.ToInt32() == INVALID_HANDLE_VALUE ? false : true;
}
public bool USBDataRead()
{
uint read = 0;
return ReadFile(hFile, m_rd_data, (uint)USB_READNUM, ref read, IntPtr.Zero);
}
public bool USBDataWrite()
{
uint written = 0;
return WriteFile(hFile, m_wr_data, (uint)USB_WRITENUM, ref written, IntPtr.Zero);
}
public void CloseConnection()
{
if (hFile.ToInt32() != INVALID_HANDLE_VALUE)
{
CloseHandle(hFile);
hFile = IntPtr.Zero;
}
}
}
}
C# 操作USB
最新推荐文章于 2024-07-16 13:53:16 发布