background image

//WORD XonLim:XON 阈值
//WORD XoffLim XOFF 阈值
//char XonChar:XON 字符
//char XoffChar:XOFF 字符
//char EvtChar: 事件字符
comStat:_COMSTAT;//COMSTAT 结构用于存放有关通信设备的当前信息
//程序中涉及各域含义如下:
//cbInQue:接收缓冲区中字符个数
//cbOutQue:发送缓冲区中字符个数
dwErrorFlag:LongWord;
hCommDev,comThreadHwnd:Thandle;//通信串口句柄和通信监视线程句柄
comMask,comBuf,comState:BOOL;
read_os,write_os:_OVERLAPPED; //OVERLAPPED 结构,用于异步操作的 Win32 函数

//程序中涉及各域含义如下:
//DWORDInterval 保留给操作系统使用
//DWORDIntervalHigh 保留给操作系统使用
//DOWD hEvent 当 I/O 操作完成时被设置为有信号状态
//的事件;当调用 ReadFile 和 WriteFile 函数之前,调
//用进程设置该事件
postRecvEvent,postSendEvent:Thandle;//发送缓冲区空和接收到字符事件句柄
dwThreadID1:DWORD;//通信监视线程 ID 号
///串口初始化函数
//该函数主要完成串口初始化设置和通信线程的启动
//入口参数:串口号
//返回值;初始化是否成功的状态字符
function InitR12CommDev(comNo:PChar):String;

begin
///打开串口
hCommDev:=CreateFile(comNo, //串口好
GENERIC_READorGENERIC_WRITE,//对串口以读写方式打开
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMALorFILE_FLAG_OVERLAPPED,//允许重叠操作
0
);
ifhCommDev=INVALID_HANDLE_VALUEthen
InitR12CommDev:='切换台通讯端口初始化失败.'
else
InitR12CommDev:='切换台通讯端口初始化成功.';
comMask:=SetCommMask(hCommDev,EV_RXFLAG);//设置事件掩码
//comBuf:=SetupComm(hCommDev,4096,4096);//设置接收和发送缓冲区大小皆为 4096