急!急!!一个数据采集的小问题,请大家解决!!谢谢了(100分)

  • 主题发起人 主题发起人 Kungfu
  • 开始时间 开始时间
K

Kungfu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下载的控件(TComPort)控制PC的COM口,来实现数据采集并处理(基本思想:测量仪器可以不断地测量并发送数据,当程序接收到“END"按键时,就开始收集一次量测数据,并将数据加入到Memo控件)。但是我发现我的程序不能收集一次完整的测量数据,而只能收集到数据的前面几位,真的不知道是为什么??请各位帮忙吧!!
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
if Key=VK_END then
begin
ComPort2.Open;
ComPort2.SetRTS(true);
end;
end;
procedure TForm1.ComPort2RxChar(Sender: TObject; Count: Integer);
var s:string; //当接收到数据时做处理!!
begin
ComPort2.ReadStr(s,100);
Memo1.Lines.Add(s);
ComPort2.SetRTS(false);.......................(1)
end;
就是这样当我按下END键时,并不能接收到完整的一次测量数据,只能接收到前几位数据。但是如果将如上语句(1)去掉,则可以取得每次完整的数据,但是却会不断地就收数据,
而我只希望在按下END键时去接收一次完整的数据。不只该怎么办才好,请大家一定帮忙了,这里先谢谢大家!!!
 
1、你所谓的完整数据是如何定义的?是位、字节?以及整个数据结构?
2、你的PC与数据采集装置是如何接口的?是仅仅用串口来通信,还是用了串口的某些
信号线作控制?
3、象你这样每次采集时才去OPEN串口是不合适的。应该在程序一开始运行就独占串口,
退出时归还系统;
4、在OS下,只要不是直接在驱动程序中做处理,那么,串口就可以看作是个字节流设备,
数据字节之间是没有绝对的边界的,如何区分开始和结尾是自己的事情;
5、你需要提供更多点信息才能帮你分析问题所在。
 
后退
顶部