spcomm在form中与dll中使用的问题?(23分)

  • 主题发起人 主题发起人 lzmling
  • 开始时间 开始时间
L

lzmling

Unregistered / Unconfirmed
GUEST, unregistred user!
我在form中使用spcomm,接收数据正常,如:
我在onreceivedata事件中将返回值赋予rbuf数组,第一次发送数据就能正常返回为rbuf[1]=49

我在dll中使用spcomm,接收数据就不正常了,如:
我在dll中定义一个类TMyClass,
type
TMyClass = Class (TObject)
jmComm : TComm;
private
procedure ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
public
constructor Create;
destructor Destroy; override;
procedure startcomm(comname:shortstring);
procedure stopcomm(comname:shortstring);
function write(i:integer):boolean;
end;
procedure TMyClass.ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
begin
move(buffer^,pchar(@rbuf)^,bufferlength);
end;
只有在第二次发送数据时才能得到返回值rbuf[1]=49
为什么?
 
在线等待中
 
在线等待中。。。。。。
 
TComm是什么类?
 
spcomm中的类
 
在线等待中....
 
在线等待中....
 
spcomm的通信状态位你试着调一下
 
spcomm的通信状态位是哪一位啊?
 
电压之类的
 
是spcomm的属性吗?
 
在线等待中......................(:
 
在线等待中......................(:
 
大虾们能帮我一下吗?
 
大虾们能帮我一下吗?
 
在线等待中。。
 
补充一下:在receivedata中加一句showmessage(inttostr(rbuf[1]))
procedure TMyClass.ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
begin
move(buffer^,pchar(@rbuf)^,bufferlength);
showmessage(inttostr(rbuf[1]))
end;
但执行
myclass.send; //send中调用myclass.write()
if rbuf[1]=49 then edit1.text:=1;
跟踪执行,显示消息框内容为49,但edit1.text = 0 ,why?
 
在线等待中
 
后退
顶部