请帮忙将这段c++ builder code 翻译成 delphi code

agangr 2003-08-22 09:03:05
//函数申明
int PlpOpen(unsigned int baudrate);
void PlpClose();
int PlpRead(unsigned char *portname, unsigned char *addr, unsigned char *buf, int *readlen);
int PlpRead(unsigned char *portname, unsigned char *addr, unsigned char *buf, int readlen);
int PlpReadAppoint(unsigned char *portname, unsigned char addr, unsigned char *buf, int n);
int PlpWrite(unsigned char *portname, unsigned char addr, unsigned char *buf, int n);

//函数调用

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int ret1, ret2, readlen;
unsigned char addr, portname[10];
unsigned char rbuf[260];

Timer1->Enabled = false;
Timer1->Interval = 50;

readnext:
ret1 = PlpRead(portname, &addr, rbuf, &readlen);
if( readlen == 0 || ret1 < 0 )
{
Timer1->Enabled = true;
return;
}
do{
ret2 = PlpWrite(portname,addr,rbuf,readlen);
}while( ret2 < readlen);

if( ret1 > 0 ) goto readnext;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjqyb 2003-08-23
  • 打赏
  • 举报
回复
Function PlpOpen(baudrate:DWORD):integer;
Procedure PlpClose();
Function PlpRead(portname,addr, buf:pchar;readlen:PINT):integer;
Function PlpRead(portname,addr, buf:pchar;readlen:integer):integer;overload;
Function PlpReadAppoint(portname, addr, buf:pchar;n:integer):integer;
Function PlpWrite(portname, addr, buf:pchar;n:integer):integer;

procedure TForm1.Timer1Timer(Sender:TObject );
var
ret1, ret2, readlen:integer;
addr:char;
portname:array[0..9] of char;
rbuf:array[0..259] of char;
begin
Timer1.Enabled := false;
Timer1.Interval := 50;
repeat
ret1: =PlpRead(portname, @addr, rbuf, @readlen);
Timer1.Enabled:=( readlen = 0) or (ret1 < 0 );
if not Timer1.Enabled then
exit;
repeat
ret2 := PlpWrite(portname,addr,rbuf,readlen);
until ret2 >= readlen;
until ret1 <= 0 ;
Timer1.Enabled := true;
end;
zjqyb 2003-08-23
  • 打赏
  • 举报
回复
上面几个函数是dll里面的吗
agangr 2003-08-23
  • 打赏
  • 举报
回复
运行时间出现地址违反的错误啊
lxpbuaa 2003-08-22
  • 打赏
  • 举报
回复
function PlpOpen(Baudrate: DWord): Integer;
begin
end;
procedure PlpClose;
begin
end;
function PlpRead(PortName, Addr, Buf: PChar; ReadLen: PInteger): Integer;
begin
end;
function PlpReadAppoint(PortName: PChar; Addr: Char; Buf: PChar; N: Integer): Integer;
begin
end;
function PlpWrite(PortName: PChar; Addr: Char; Buf: PChar; N: Integer): Integer;
begin
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Ret1, Ret2, ReadLen: Integer;
Addr: Char;
PortName, RBuf: PChar;
label ReadNext;
begin
Timer1.Enabled := False;
Timer1.Interval := 50;

ReadNext:
Ret1 := PlpRead(PortName, @Addr, RBuf, @ReadLen);
if (ReadLen = 0) or (Ret1 < 0) then
begin
Timer1.Enabled := True;
Exit;
end;
repeat
Ret2 := PlpWrite(PortName, Addr, RBuf, ReadLen);
until Ret2 >= ReadLen;

if Ret1 > 0 then goto ReadNext;
Timer1.Enabled := True;
end;

—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧