delphi spcomm 打开不正常有关问题

delphi spcomm 打开不正常问题;
procedure TForm1.Timer1Timer(Sender: TObject);
var
testr : string;
begin
timer1.Enabled := false;
edit17.Text := '';
edit18.Text := '';
edit19.Text := '';
edit20.Text := '';
edit21.Text := '';
edit22.Text := '';
edit23.Text := '';
edit24.Text := '';
edit25.Text := '';
edit26.Text := '';
edit27.Text := '';
edit28.Text := '';
edit29.Text := '';
edit30.Text := '';
edit31.Text := '';
edit32.Text := '';
//showmessage('a');
testr := '3a4b000085';
try
memo1.Lines.Add('尝试关闭端口!');
//comm1.Free;
comm1.StopComm;
//comm1.ReadIntervalTimeout
//sleep(100);
sleep(10);
comm1.StartComm;
form1.SendHex(testr);
timer2.Enabled := true;
except
memo1.Lines.Add('尝试失败!!');
//comm1.Free;
//sleep(200);
comm1.StopComm;
//sleep(100);
sleep(1000);
comm1.StartComm;
form1.SendHex(testr);
timer2.Enabled := true;
end;
end;
程序运行一直很正常,但是当过6小时或者不确定时间以后
发现程序出错 error serial opening ports;
我估计应该是comm1.stopcomm没有做出反应,造成comm1.startcomm打开失败报错;
我用的时spcomm+usb转232串口
等大大帮忙下!!
分实在不多,但希望好心人士帮助;

------解决方案--------------------
探讨
procedure TForm1.Timer1Timer(Sender: TObject);
var
testr : string;
begin
timer1.Enabled := false;
edit17.Text := '';
edit18.Text := '';
edit19.Text := '';
edit20.Text := '';
edit21.Text := ''……

------解决方案--------------------
[code=Delphi(Pascal)][/code]
timer2.Enabled := true; 这里边是什么东西?

form1.SendHex(testr); 这个里边是什么?

在timer里边用sleep(1000),界面会停止吗?现在不想去test
------解决方案--------------------
问题在于,你的Timer1在这次没执行完呢,就又开始了下一次执行,这时串口被占用,访问出错
你应该先置Timer1停止,串口处理完置为打开
------解决方案--------------------
Timer1
应该设置一个参数来控制Timer1
事件的有效性的