/// <summary>
/// Reading and writing.
/// </summary>
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern Boolean WriteFile(IntPtr fFile, Byte[] lpBuffer, UInt32 nNumberOfBytesToWrite,
out UInt32 lpNumberOfBytesWritten, IntPtr lpOverlapped);
这个是来发送bytes到COM口。
/// <summary>
/// Queues bytes for transmission.
/// </summary>
/// <param name="tosend">Array of bytes to be sent</param>
public void Send(byte[] tosend)
{
uint sent = 0;
CheckOnline();
CheckResult();
writeCount = tosend.GetLength(0);
if (Win32Com.WriteFile(hPort, tosend, (uint)writeCount, out sent, ptrUWO))
{
writeCount -= (int)sent;
}
else
{
int error = Marshal.GetLastWin32Error() ;
if (error != Win32Com.ERROR_IO_PENDING)
{
ThrowException("Unexpected failure");
}
//else
//{
// DateTime maxTime = DateTime.Now.AddSeconds(2);
// while (maxTime > DateTime.Now && sent!=6)
// {
// Win32Com.GetOverlappedResult(hPort, ptrUWO, out sent, false);
// }
//}
}
}