L
lcl_003
Unregistered / Unconfirmed
GUEST, unregistred user!
接收数据用tchart画线出现间歇停顿现象!!!
我从另外一台机器接收数据,然后用chart画出来,传过来的数据是正弦波的曲线,
刚开始画的时候还可以正常画几个周期,但是再往后就会出现chart间歇停顿的现象
而且好象操作系统也间歇停止响应,百思不得其解。
具体情况如下:
传过来的数据很长,我把他付给数组,长度有5280。大概500ms传过来一批。我把这些
数据进行计算然后用chart画出来。我接收也是定时(300ms)接收。
这是我接收的timer里的代码
var
send,recv:array of byte;
j:integer;
setlength(send,3);
setlength(recv,5280);
send[0]:=3; //我要发送的数据
send[1]:=0;
send[2]:=40;
SendData(lsn[2],send); //SendData,RecvData是调用动态连接库,就是发送和接受数据
RecvData(lsn[2],recv); //接收的数据付给recv
if recv[3]=1 then
for j:=0 to 49 do
begin
tmpn:=recv[j*96+345]*256+recv[j*96+344]; //我进行一些计算付给另外的数组 valcom1[2,j]:=(tmpn-regda1) / regda1;
end;
在我画线的timer里的代码如下:
for i:=0 to 49 do //一次画50点
series1.Add(valcom1[2,i]*Tfull1[combobox1.ItemIndex+1]);
我现在实在找不出是那里的毛病了,不过有两个地方值得怀疑:
1,通信过程
2,就是我定义的数组太长了,所以我创建动态数组,但是我觉得这里是最值得怀疑的地方
因timer没运行一次就会重新分配一次数组长度,要每300ms左右分配5280长度的数组,
会不会是这里出现处理不过来的现象?
但是我把动态定义的数组改成静态的也不行:(
我实在是想不出那里有问题了
各位帮忙分析分析吧:(
我从另外一台机器接收数据,然后用chart画出来,传过来的数据是正弦波的曲线,
刚开始画的时候还可以正常画几个周期,但是再往后就会出现chart间歇停顿的现象
而且好象操作系统也间歇停止响应,百思不得其解。
具体情况如下:
传过来的数据很长,我把他付给数组,长度有5280。大概500ms传过来一批。我把这些
数据进行计算然后用chart画出来。我接收也是定时(300ms)接收。
这是我接收的timer里的代码
var
send,recv:array of byte;
j:integer;
setlength(send,3);
setlength(recv,5280);
send[0]:=3; //我要发送的数据
send[1]:=0;
send[2]:=40;
SendData(lsn[2],send); //SendData,RecvData是调用动态连接库,就是发送和接受数据
RecvData(lsn[2],recv); //接收的数据付给recv
if recv[3]=1 then
for j:=0 to 49 do
begin
tmpn:=recv[j*96+345]*256+recv[j*96+344]; //我进行一些计算付给另外的数组 valcom1[2,j]:=(tmpn-regda1) / regda1;
end;
在我画线的timer里的代码如下:
for i:=0 to 49 do //一次画50点
series1.Add(valcom1[2,i]*Tfull1[combobox1.ItemIndex+1]);
我现在实在找不出是那里的毛病了,不过有两个地方值得怀疑:
1,通信过程
2,就是我定义的数组太长了,所以我创建动态数组,但是我觉得这里是最值得怀疑的地方
因timer没运行一次就会重新分配一次数组长度,要每300ms左右分配5280长度的数组,
会不会是这里出现处理不过来的现象?
但是我把动态定义的数组改成静态的也不行:(
我实在是想不出那里有问题了
各位帮忙分析分析吧:(