T taowei Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #1 在程序中动态创建spcom即用TComm.Create,怎样知道接收数据长度。即触发事件怎样实现?
T taowei Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #2 在程序中动态创建spcom即用TComm.Create,怎样知道接收数据长度。即触发事件怎样实现?
L lxw5214 Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #4 procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); begin end; Buffer是他接受到的数据的地址,BufferLength是他的长度。使用时注意Buffer的类型
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); begin end; Buffer是他接受到的数据的地址,BufferLength是他的长度。使用时注意Buffer的类型
T taowei Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #5 我说的是动态创建SPCOMM控件,怎样进行事件处理? 动态创建了SPCOMM,我怎样发送数据和接收数据?
F fthanyong Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #6 判断长度与内容应该跟动态没有关系吧,只要读取相应的缓冲区中的数据不就行了吗?
T taowei Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #7 to:fthanyong 怎样读取缓冲区,因为动态建立以后,怎样用进行事件处理?
Y YANGWEI0308 Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #8 spcom1:= TComm.Create; spcom1.onReceiveData:= Comm1ReceiveData; 这里Comm1ReceiveData是你编写的事件处理程序。
L Lucker Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-23 #9 这里有串口控件 http://www.anylib.com
T taowei Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-24 #10 to YANGWEI0308 我想知道接收数据缓冲中的长度,怎么知道?
A ayu310 Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-25 #11 spcomm的缓冲区长度默认为2048.不过我想知道你为什么要动态创建spcomm呢?
M maxim88 Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-25 #12 动态创建的SPCOMM共用一个串口发送和接收事件 创建时不同的串口赋不同的标识comm.tag:=i; 接收时i:=Tcomm(sender).Tag;就是产生接收的串口
M maxim88 Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-31 #14 lxw5214已经说过了,BufferLength就是已接收数据的长度 //串口数据接收 procedure TForm1.COMReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var s:string; begin setlength(s,bufferlength); move(buffer^,s[1],bufferlength); memo1.text:=s; end;
lxw5214已经说过了,BufferLength就是已接收数据的长度 //串口数据接收 procedure TForm1.COMReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var s:string; begin setlength(s,bufferlength); move(buffer^,s[1],bufferlength); memo1.text:=s; end;
F fhli Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-31 #15 没有必要动态创建吧,因为全部是串行处理数据的,需要用到线程么?用线程,你还必须要用到临界量。麻烦。建议用缓冲池,而comm通讯中数据的接收发送在主程序里实现就行了,这样简单一点,^_^