简单API函数通讯问题(50分)

  • 主题发起人 主题发起人 俊友
  • 开始时间 开始时间

俊友

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
hCom:THandle;
Timeout:TCommTimeouts;
Dataout,Datain:pchar;
Overlapped:POverlapped;
BufferSize:DWORD;
begin
hcom:=CreateFile('Com3',
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,
0);
Timeout.ReadIntervalTimeout:=10;
Timeout.ReadTotalTimeoutMultiplier:=20;
Timeout.ReadTotalTimeoutConstant:=30;
SetCommTimeouts(hCom,Timeout);
SetEvent(hCom);
Dataout:='S';
GetMem(overlapped,sizeof(TOverlapped));
BufferSize:=4096;
GetMem(Datain,4096);
if WriteFile(hCom,Dataout,1,BufferSize,Overlapped) then
showmessage('Write Right');
if ReadFile(hCom,Datain,1,BufferSize,Overlapped) then
showmessage('Read Right');
//showmessage(string(Datain));
FreeMem(Datain);
FreeMem(Overlapped);
Closehandle(hCom);
end;

上面的代码应该是发送一字符,读取一个字符,上面的代码能否正确执行,得到想要的结果,这个代码我找来的。
我调试一下,好像发送接收都失败,不知错在哪?
 
自己接个mordem是一下就知道了啊
 
我说代码,Modem当然接了,要不然我怎么调试。
 
hcom:=CreateFile('Com3',
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,
0);
你的机器有com3口吗?
换成com1再试试.
 
是的,我的Modem是Com3串口
 
接受答案了.
 
后退
顶部