首先,初始化串口 function T_DR.IniComm(commstring: string): integer; var hdcb: tdcb; myhandle: integer; begin myhandle:=createFile(pchar(uppercase(commstring)),(GENERIC_READ or GENERIC_WRITE),0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); if myhandle<>INVALID_HANDLE_VALUE then begin getcommstate(myhandle,hdcb); hdcb.BaudRate:=CBR_9600; hdcb.Parity:=NOPARITY; hdcb.StopBits:=ONESTOPBIT; setcommstate(myhandle,hdcb); //参数随意 purgecomm(myhandle,purge_txabort); purgecomm(myhandle,purge_rxabort); end; result:=myhandle; end; 然后...用 READFILE(...,MYHANDLE,...)即可.
2.然后用BuildCommDCB( )和SetCommState( )函数设置串口通信参数
3.用GetCommState()得到当前的DCB参数值,SetCommTimeouts()和GetCommTomeouts() 设置读写的超时参数;SetupComm()设置读写缓冲区。
4.CreateEvent()返回一事件句柄
5.SetCommMask()定义用户程序可监视的通信事件
以上设置完成后,调用函数WaitCommEvent()监视通信事件,
当有通信事件产生时,就用ReadFile()和WriteFile()直接对串口缓冲区进行读写操作。通信结束后,调用函数CloseHandle()将串口关闭。 在以下网页有详细介绍:
"http://www.yesky.com/33554432/34603008/34668544/34672640/34672768/35999.htm"
好的串口控件到处都是,如MSCOMM32、SPCOMM等等。
function T_DR.IniComm(commstring: string): integer;
var
hdcb: tdcb;
myhandle: integer;
begin
myhandle:=createFile(pchar(uppercase(commstring)),(GENERIC_READ or GENERIC_WRITE),0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if myhandle<>INVALID_HANDLE_VALUE then
begin
getcommstate(myhandle,hdcb);
hdcb.BaudRate:=CBR_9600;
hdcb.Parity:=NOPARITY;
hdcb.StopBits:=ONESTOPBIT;
setcommstate(myhandle,hdcb); //参数随意
purgecomm(myhandle,purge_txabort);
purgecomm(myhandle,purge_rxabort);
end;
result:=myhandle;
end;
然后...用 READFILE(...,MYHANDLE,...)即可.