在DELPHI中用什么类型啊
Thandle
function OpenCom(pComPort : Byte; iBaundRate : Integer): THandle;
// 打开串口
// pComPort: 串口名称或设备路径,可用"COM1"或"\\.\COM1"两种方式,建议用后者
// iBaundRate: 波特率
var
ComHdl: THandle;
Dcb: TDCB;
TimeOut: ComMtimeOuts; //100, 1, 500, 1, 100
pTpPort: PChar;
begin
pTpPort := PChar(com + IntToStr(pComPort));
TimeOut.ReadIntervalTimeout := 100; //读字符间隔超时时间: 100 ms
TimeOut.ReadTotalTimeoutMultiplier := 1; //读操作时每字符的时间: 1 ms (n个字符总共为n ms)
TimeOut.ReadTotalTimeoutConstant := 500; //基本的(额外的)读超时时间: 500 ms
TimeOut.WriteTotalTimeoutMultiplier := 1; //写操作时每字符的时间: 1 ms (n个字符总共为n ms)
TimeOut.WriteTotalTimeoutConstant := 100; //基本的(额外的)写超时时间: 100 ms
ComHdl := Createfile(
pTpPort, //串口名称或设备路径
Generic_Read or Generic_Write, //读写方式
0, //共享方式:独占
nil, //认的安全描述符
open_existing, //创建方式
0, //不需设置文件属性
0 //不需参照模板文件
);
if (ComHdl = Invalid_Handle_Value) then
begin
Result := ComHdl; //打开串口失败
Exit;
end;
GetCommState(ComHdl, Dcb); //取DCB
Dcb.BaudRate := iBaundRate;
Dcb.ByteSize := 8;
Dcb.Parity := EvenParity;
Dcb.StopBits := 1;
SetCommState(ComHdl, Dcb); //设置DCB
SetUpComm(ComHdl, 4096, 1024); //设置输入输出缓冲
SetCommTimeOuts(ComHdl, TimeOut); //设置超时
Result := ComHdl;
end;
function CloseCom(ComHdl: THandle): Boolean;
//关闭串口
begin
Result := CloseHandle(ComHdl);
end;
Thandle是个句柄
Long,如执行成功,则返回文件句柄。INVALID_HANDLE_VALUE表示出错,会设置GetLastError。
句柄THandle
跟踪下去是一个 LongWord 类型的
是一个句柄,今后所有对该串口操作的函数均会引用该句柄的,HANDLE就是铁锅把手,铁锅就是容器,用来炒菜,没有把手怎么能行呢?