|
/// <summary>
/// 创建链接句柄
/// </summary>
/// <param name="lpFileName"></param>
/// <returns></returns>
private bool CreateHandle(string lpFileName)
{
bool ret = false;
if (isOpened == false)
{
// 以写访问打开此HID设备
hidWriteHandle = CreateFile(lpFileName, FILE_ACCESS_MASK.GENERIC_WRITE,
FILE_SHARE_MODE.FILE_SHARE_WRITE | FILE_SHARE_MODE.FILE_SHARE_READ, 0, FILE_CREATION_DISPOSITON.OPEN_EXISTING, 0, 0);
// 以读访问打开此HID设备;
hidReadHandle = CreateFile(lpFileName, FILE_ACCESS_MASK.GENERIC_READ,
FILE_SHARE_MODE.FILE_SHARE_WRITE | FILE_SHARE_MODE.FILE_SHARE_READ, 0, FILE_CREATION_DISPOSITON.OPEN_EXISTING, 0, 0);
if (hidReadHandle != null && hidWriteHandle != null)
{
GetDeviceCapabilities(hidReadHandle);
// StartBackgroundRead();
isOpened = true;
ret = true;
}
else
{
}
}
return ret;
}
/// <summary>
/// 写数据操作
/// </summary>
/// <param name="outPacket"></param>
/// <returns></returns>
public bool Write(byte[] outPacket)
{
if (isOpened)
{
uint bytesWritten = 0;
bool ret = false;
ret = WriteFile(hidWriteHandle, outPacket, (uint)outPacket.Length, ref bytesWritten, IntPtr.Zero);
return ret;
}
return false;
}
/// <summary>
/// 读数据操作
/// </summary>
/// <param name="inPacket"></param>
/// <returns></returns>
public bool Read(ref byte[] inPacket)
{
if (isOpened)
{
uint bytesRead = 1;
// 默认Report ID;
return ReadFile(hidReadHandle, inPacket, (uint)inPacket.Length, ref bytesRead, IntPtr.Zero);
}
return false;
}
数据写老是失败不知怎么原因。。。请大师指导!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|