/// <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); // } //} } }