2011-04-08 40 views
0

嗨 我有一個調制解調器和win32 api的問題。調制解調器沒有響應win32 api

當我從我的源代碼打開通信端口端口準備好接收命令,但調制解調器不寫輸出。我寫的所有命令都由調制解調器處理,但是我沒有收到調制解調器的輸出。

如果我使用超級終端連接調制解調器,然後使用我的軟件,然後調制解調器工作成功。

我的代碼如下:

bool open() { 
    unsigned long confSize = sizeof(COMMCONFIG); 
    winCommConfig.dwSize = confSize; 
    DWORD dwFlagsAndAttributes = 0; 

    if (!isOpen()) { 
     winHandle = CreateFileA(port.toAscii(), GENERIC_READ | GENERIC_WRITE, 
       FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 
       dwFlagsAndAttributes, NULL); 
     if (winHandle != INVALID_HANDLE_VALUE) { 
      /* 
      * Configure the port settings. 
      */ 
      GetCommConfig(winHandle, &winCommConfig, &confSize); 
      GetCommState(winHandle, &(winCommConfig.dcb)); 

      /* 
      * Configure port parameters. 
      */ 
      winCommConfig.dcb.fBinary = TRUE; 
      winCommConfig.dcb.fInX = FALSE; 
      winCommConfig.dcb.fOutX = FALSE; 
      winCommConfig.dcb.fAbortOnError = FALSE; 
      winCommConfig.dcb.fNull = FALSE; 

      setBaudRate(settings.BaudRate); 
      setDataBits(settings.DataBits); 
      setStopBits(settings.StopBits); 
      setParity(settings.Parity); 
      setFlowControl(settings.FlowControl); 
      setTimeout(settings.TimeoutMillisec); 

      /* 
      * Set the final parameters. 
      */ 
      SetCommConfig(winHandle, &winCommConfig, sizeof(COMMCONFIG)); 
      SetCommState(winHandle, &(winCommConfig.dcb)); 
     } 
    } 
    return isOpen(); 
} 

Where: 
port represents the comm port 
baudrate: 115200 
databits: 8 
stopbits: 1 
parity: none 
flowcontrol: off 

我在做什麼錯?

如果我使用jablocom gdp-04,會發生這種情況。當我使用其他調制解調器(華爲,Novatel,...)時,它可以很好地工作。

在此先感謝。 此致敬禮。

回答

1

流量控制:關

,直到它看到積極的RTS和DTR信號,表明你是「在線」,並準備好接收的設備將無法發送任何東西。您將需要設置fRtsControl = RTS_CONTROL_ENABLE和fDtrEnable = DTR_CONTROL_ENABLE。啓用硬件握手永遠不會傷害順便說一下,假設設備正確實施它,特別是在調試時很方便。還要用HyperTerminal或Putty進行基本檢查,以確保接線正常。

+0

非常感謝!它工作正常! – althor 2011-04-11 07:16:27