我今天要甬到一个dll文件,里面的源代码不太理解,求注释。
FUNCTION opencomm(wcom:pchar;baudrate:integer): thandle;
VAR
  dcb: tDCB;
   hcom: thandle;
  dwError: DWORD;
  fSuccess: BOOL;
  timeouts: COMMTIMEOUTS;BEGIN
  hcom := CreateFile(
    wcom,
    GENERIC_READ OR GENERIC_WRITE,
    0,
    NIL,
    OPEN_EXISTING,
    0,
    0);
  IF (hCom = INVALID_HANDLE_VALUE) THEN
BEGIN
      dwError := GetLastError();
    CloseHandle(hCom);
      result := 0;
      exit;
    END;
fsuccess := GetCommState(hCom, dcb);
  IF (NOT fsuccess) THEN
    BEGIN
   CloseHandle(hCom);
      result := 0;
      exit;
    END;
dcb.BaudRate := baudrate;
  dcb.ByteSize := 8;
  dcb.Parity := NOPARITY;
  dcb.StopBits := ONESTOPBIT;
  fsuccess := SetCommState(hCom, dcb);
  IF (NOT fsuccess) THEN
    BEGIN
      showmessage('set comm state error');
      CloseHandle(hCom);
      result := 0;
      exit;
    END;
  GetCommTimeouts(hCom, timeouts);
  timeouts.ReadTotalTimeoutMultiplier := 10;
  timeouts.ReadTotalTimeoutConstant := 100;
  timeouts.WriteTotalTimeoutMultiplier := 10;
  timeouts.WriteTotalTimeoutConstant := 100;
  SetCommTimeouts(hCom, timeouts);
  result := hcom;
END;

解决方案 »

  1.   

    TDCB 结构定义串行通讯设备的控制设置
    typedef struct _DCB { // dcb  
        DWORD DCBlength;           // sizeof(DCB) 
        DWORD BaudRate;            // current baud rate 
        DWORD fBinary: 1;          // binary mode, no EOF check 
        DWORD fParity: 1;          // enable parity checking 
        DWORD fOutxCtsFlow:1;      // CTS output flow control 
        DWORD fOutxDsrFlow:1;      // DSR output flow control 
        DWORD fDtrControl:2;       // DTR flow control type 
        DWORD fDsrSensitivity:1;   // DSR sensitivity     DWORD fTXContinueOnXoff:1; // XOFF continues Tx 
        DWORD fOutX: 1;            // XON/XOFF out flow control 
        DWORD fInX: 1;             // XON/XOFF in flow control 
        DWORD fErrorChar: 1;       // enable error replacement 
        DWORD fNull: 1;            // enable null stripping 
        DWORD fRtsControl:2;       // RTS flow control 
        DWORD fAbortOnError:1;     // abort reads/writes on error 
        DWORD fDummy2:17;          // reserved 
        WORD wReserved;            // not currently used     WORD XonLim;               // transmit XON threshold 
        WORD XoffLim;              // transmit XOFF threshold 
        BYTE ByteSize;             // number of bits/byte, 4-8 
        BYTE Parity;               // 0-4=no,odd,even,,space 
        BYTE StopBits;             // 0,1,2 = 1, 1.5, 2 
        char XonChar;              // Tx and Rx XON character 
        char XoffChar;             // Tx and Rx XOFF character 
        char ErrorChar;            // error replacement character     char EofChar;              // end of input character 
        char EvtChar;              // received event character 
        WORD wReserved1;           // reserved; do not use 
    } DCB; 其它应该好理解了吧