设置了
setupcomm(hcom,1024,1024);//设置输入,输出缓冲区皆为1024字节
PurgeComm( hCom, PURGE_TXABORT or PURGE_RXABORT or
PURGE_TXCLEAR or PURGE_RXCLEAR ) ; getcommstate(hcom,lpdcb); //获取串行口当前默认设置
lpdcb.baudrate:=CBR_9600;
lpdcb.StopBits:=0;
lpdcb.ByteSize:=8;
lpdcb.Parity:=NoParity;
setupcomm(hcom,1024,1024);//设置输入,输出缓冲区皆为1024字节
PurgeComm( hCom, PURGE_TXABORT or PURGE_RXABORT or
PURGE_TXCLEAR or PURGE_RXCLEAR ) ; getcommstate(hcom,lpdcb); //获取串行口当前默认设置
lpdcb.baudrate:=CBR_9600;
lpdcb.StopBits:=0;
lpdcb.ByteSize:=8;
lpdcb.Parity:=NoParity;
解决方案 »
- Pascal for循环习题算法求解!!!!10分相赠!!
- ActiveForm在IE中调用,关闭IE时出现读地址错,怎么办啊
- 我怎么当版主了-_-# 现正式接受各方朝贺
- 请高手出招!如何解决画布过长的问题!!
- 关于Excel和StringGrid的问题
- developer express这套控件真的不错,不知有没有汉化的版本,如果没有的话我们想汉化这套控件
- IBM品牌机在Win98下安装Delphi6后缺少部分组件的问题
- 我作了一个网络形的共享软件.怎么加广告条!请过来人指点
- 如何在delphi中显示Autocad的文件呀
- pChar 和 String的区别。请详细一点,行吗?
- 如何将bmp格式转换为emf格式,emf格式文件能否变小?比例为多少(在线等待)(高手请近)
- 怎样才能提高效率,往数据库中插入3000条记录,用的是adoquery,有别的办法吗?
你是怎么做的??
procedure InitComm(ComPort:string);
var
lpDCB:TDCB;
CTO :TCommTimeOuts;
// flag :Boolean;
begin
//打开串口
hcom:=createfile(pchar(ComPort),generic_read or generic_write,0,nil,open_existing,
file_attribute_normal or file_flag_overlapped,0); if hcom=Invalid_handle_value then
begin
Application.MessageBox('Can not Open COM Port!',pchar('错误'),MB_OK+MB_ICONERROR);
CloseHandle(hCom);
exit;
end
else
//设置输入缓冲区、输出缓冲区为4096
SetupComm(hcom,4096,4096); //清空发送、接收缓冲区
if not PurgeComm(hcom, PURGE_RXABORT or PURGE_RXCLEAR or
PURGE_TXABORT or PURGE_TXCLEAR) then
begin //出错处理
Application.MessageBox('Can''t Clear Buffer!',pchar('错误'),MB_OK+MB_ICONERROR);
CloseHandle(hcom);
Exit;
end;
CTO.ReadIntervalTimeout :=0;//$ffffffff; //MaxDword
CTO.ReadTotalTimeoutMultiplier :=0;
CTO.ReadTotalTimeoutConstant :=0; //1000
CTO.WriteTotalTimeoutMultiplier :=0; //2*CBR_9600 div CBR_19200;
CTO.WriteTotalTimeoutConstant := 0; SetCommTimeOuts(hcom, CTO); { 使RTS和DTR设置为高电平 }
if not EscapeCommFunction(hcom, SETDTR) then
begin
Application.MessageBox(PCHAR('Can''t Set DTR!'),pchar('错误'),MB_OK+MB_ICONERROR);
CloseHandle(hcom);
Exit;
end;
if not EscapeCommFunction(hcom, SETRTS) then
begin
Application.MessageBox(PCHAR('Can''t Set RTS'),pchar('错误'),MB_OK+MB_ICONERROR);
CloseHandle(hcom);
Exit;
end; //获取系统默认通信参数
GetCommState(hcom,lpDCB);
//设置串口通信参数
lpDCB.DCBlength:=sizeof(TDCB);
lpDCB.BaudRate:=9600; //波特率
lpDCB.StopBits:=OneStopBit; //停止位
lpDCB.ByteSize:=8; //数据位
lpDCB.Parity:=NOParity; //无奇偶校验(Even-奇,ODD-偶) SetCommState(hcom,lpDCB);