我今天要甬到一个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;
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+2*3=?像这样的运算公式,如何求解?求代码?
- 怎么用Report Machine打印窗体中DBGrid的一行信息???
- "Record size is too big for table" 怎么修改它!
- 如何在运行时刻,显示ADOConnection控件ConnectionString属性的设置对话框
- 帮看看:ADOConnection1.ConnectionString:='Remote Provider={SQL Server};'....我想连不同域的另一台MS SQL SERVER 2000.
- 在madis用sokcetconnect在internet上面可以用吧?
- 关于DBGRID中的数据问题
- delphi运行条件提问
- 各位:那里可以下载Installshield 东方版, 或其语言包?
- IP地址输入框是怎么做的?
- 关于DBGrid的一个简单问题
- 在树的节点记录信息的问题
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; 其它应该好理解了吧