用微软的MSCOMCTL,对下位机发数据...
 先波特率为19200,发一个数据 再波特率为2400,发一次数据,  
收数据时却很怪, 如果不设中断的话,,m_ctrlComm.GetCommEvent()都是==3或者==4没有一次是等于2的.
但若设了中断后就会正常,也就是m_ctrlComm.GetCommEvent()==2.
请高手指点......顺便问一句,==3和==4是什么事件.?

解决方案 »

  1.   

    Q:
    顺便问一句,==3和==4是什么事件.?
    A:
    #define comEvSend 1 //发送事件。 
    #define comEvReceive 2          //接收事件。 
    #define comEvCTS 3 //clear-to-send //线变化。 
    #define comEvDSR 4 //data-set ready //线变化。 
    #define comEvCD 5 //carrier detect //线变化。 
    #define comEvRing 6 //振铃检测。 
    #define comEvEOF 7 //文件结束。
      

  2.   

    switch(m_commctrl.GetCommEvent()) 

    case 1: // vbMSCommEvSend: 
    "Sending" 
    case 2: // vbMSCommEvReceive: 
    "Receiving" 
    case 3: // vbMSCommEvCTS: 
    "Change in CTS Detected" 
    case 4: // vbMSCommEvDSR: 
    "Change in DSR Detected" 
    case 5: // vbMSCommEvCD: 
    "Change in CD Detected" 
    case 6: // vbMSCommEvRing: 
    "Phone is Ringing" 
    case 7: // vbMSCommEvEOF: 
    "End of File Detected" 
    case 1001: // vbMSCommErBreak: 
    "Break Received" 
    case 1002: // vbMSCommErCTSTO: 
    "CTS Timeout" 
    case 1003: // vbMSCommErDSRTO: 
    "DSR Timeout" 
    case 1004: // vbMSCommErFrame: 
    "Framing Error" 
    case 1006: // vbMSCommErOverrun: 
    "Overrun Error" 
    case 1007: // vbMSCommErCDTO: 
    "Carrier Detect Timeout" 
    case 1008: // vbMSCommErRxOver: 
    "Receive Buffer Overflow" 
    case 1009: // vbMSCommErRxParity: 
    "Parity Error" 
    case 1010: // vbMSCommErTxFull: 
    "Transmit Buffer Full" 

      

  3.   

    我已经在事件4中用sleep(100);为什么还不能收到数据呢?