W wuliaoderen Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-06 #1 现在我想读取串口的数据,然后处理。可是我怎么才能知道什么时候串口有数据,并读取它们进行处理。我用的是SPComm,希望知道的朋友们能告诉我怎么做,谢谢!!
J jamcky Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-06 #2 接收到数据后会触发Comm1ReceiveData事件,你在这个事件里处理你接收数据动作及数据处理就可以了
W wuliaoderen Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-06 #3 procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word); var i:integer; begin viewstring:=‘’ ; move(buffer^,pchar(@rbuf^),bufferlength); for i:=1 to bufferlength do viewstring:=viewstring+ inttohex(rbuf,2)+‘’ ; viewstring:=‘接收’+ viewstring; memo1.lines.add(viewstring); memo1.lines.add(‘’ ); end; 为什么这段代码编译不能通过呢?? 它能接收串口数据吗?
procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word); var i:integer; begin viewstring:=‘’ ; move(buffer^,pchar(@rbuf^),bufferlength); for i:=1 to bufferlength do viewstring:=viewstring+ inttohex(rbuf,2)+‘’ ; viewstring:=‘接收’+ viewstring; memo1.lines.add(viewstring); memo1.lines.add(‘’ ); end; 为什么这段代码编译不能通过呢?? 它能接收串口数据吗?
J jamcky Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-06 #4 move(buffer^,rbuf,bufferlength); 其中rbuf为数组
W wuliaoderen Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-07 #6 我要实现的是读取电话交换机发给电脑的串口数据。 我不需要给串口发数据的,我只要读取。这种情况怎么处理呢?
M mouthbig219 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-10 #7 move(buffer^,pchar(@rbuf^),bufferlength);这一句是错误的应该为:move(buffer^,pchar(@rbuf)^,bufferlength); 你想要实现的功能很好实现。就是在Comm1ReceiveData事件下面编写你想要的操作就可以实现了。注意要设置spcomm控件的属性。你可以到网上艘一下这方面的信息。我就不再这里多说了。
move(buffer^,pchar(@rbuf^),bufferlength);这一句是错误的应该为:move(buffer^,pchar(@rbuf)^,bufferlength); 你想要实现的功能很好实现。就是在Comm1ReceiveData事件下面编写你想要的操作就可以实现了。注意要设置spcomm控件的属性。你可以到网上艘一下这方面的信息。我就不再这里多说了。
X xfeiffer Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-10 #8 恰当的设置好你的控件的波特率,有时候虽然定下来了波特率,也有读取不到数据的情况的,我就遇到过这样的情况。
竹 竹本无心 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-10 #9 Comm1ReceiveData事件 只要交换机有数据到串口,该事件就会触发,注意交换机的波特率等信息,spcomm也设为一样.
W whbfeng Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-11 #10 将你的move(buffer^,pchar(@rbuf^),bufferlength);这条语句改为如下: SetLength(Temp_Buff,BufferLength); Move(Buffer^,PChar(Temp_Buff)^, BufferLength); 就可以实现!
将你的move(buffer^,pchar(@rbuf^),bufferlength);这条语句改为如下: SetLength(Temp_Buff,BufferLength); Move(Buffer^,PChar(Temp_Buff)^, BufferLength); 就可以实现!
W whbfeng Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-11 #11 数据的接收只是在COMM的这个事件上:Comm1ReceiveData 只要在这里面加上相应的接受代码及接收数据判断代码既可~
J janker Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-11 #12 好象接收事件触发后不能马上读吧,这样读到的数据有时有发生丢帧现象,最后先检查缓冲区里到达的数据长度,然后再读;或者延迟几毫秒再读