还是串口的问题,不管控件的事,原理问题,请指教!(100分)

Z

zkking

Unregistered / Unconfirmed
GUEST, unregistred user!
我用单片机和DELPHI程序通信,单片机只能每次发送一个字节,我可以不听的发过来,大家都知道
DELPHI控件或者API的程序中,都有串口数据到达是触发的事件或者线程,而且都有到达的字节数
,那么当单片机数据第一个字节到了后,DELPHI肯定要触发事件了,这个时候,大家一般都是用
某些数据读取函数将串口的数据读出来,我想不通的是:
这个时候的接受缓冲区的数据字节数肯定是一定的,由于是第一次触发事件,因该是1 啊,
因该读到一个字节啊,为什么后面到达的数据都可以读出来了???
还有,串口的数据如果不读,会不会冲掉啊!(在缓冲区不溢出的情况下)
我现在用的CPORT控件,数据发送没有什么问题,很不错,但是数据接受还是有点搞不明白,
有的时候可以,有的时候不行,不懂啊!我的程序是这样的:
在ONRXCHAR事件中
VAR
S:ARRAY [1..255] OF BYTE;
I:INTEGER;
COMFALG:BOOLEAN;
begin
CPORT1.READ(S,COUNT);
CASE S[1] OF
$FF:
begin
COMFALG:=FASLE;
FOR I:=1 TO 8 do

IF S <> $FF then
COMFALG:=TRUE;
IF COMFALG then
SHOWMESSAGE('WRONG');
........
有没有什么问题啊,10次中总是有几次不行啊!



 
接收很好办,设置好属性,设置成读完数据后清空接收缓冲区,
不要一次读几个数据,你一次就把缓冲区的数据读完就行了
,这样你就可以不用担心冲掉数据了.
数据在缓冲区是不会冲掉的,除非缓冲区溢出.
 
多人接受答案了。
 
顶部