本帖最后由 bcrun 于 2011-10-31 08:14:50 编辑

解决方案 »

  1.   

    对于编程者而言,只需要通过output将数据写入发送缓冲区就可以了,至于怎么由硬件发出去,那时Windows驱动的事情了。
    看看这本书,关于串口通信的
      

  2.   

    给你看一段串口发送的代码,你会更容易理解这个问题DWORD MCCOMMClass::Send(BYTE *lpBuffers)
    {
    if(hComm==0)
    return 0;
    DWORD dwErrorFlags = 0;
    DWORD lpBuffersSize = 0;
    DWORD dwBytesWritten;
    COMSTAT ComStats;
    BOOL bWriteStat;
    //清除串口状态错误
    ClearCommError(hComm, &dwErrorFlags, &ComStats);
    lpBuffersSize = GlobalSize((HGLOBAL)lpBuffers);
    bWriteStat = WriteFile(hComm, lpBuffers, lpBuffersSize, &dwBytesWritten, &COMEventWrite);
    //等待直到发送完毕
    GetOverlappedResult(hComm,&COMEventWrite,&dwBytesWritten,TRUE);
    //清除输出缓冲区
    PurgeComm(hComm, PURGE_TXABORT|PURGE_TXCLEAR);
    return dwBytesWritten;
    }