이것은 시리얼통신에서 데이타가 도착하면 데이타를받는 이벤트 핸들러에 정의한 코드입니다.
procedure TForm2.cp1RxChar(Sender: TObject; Count: Integer);
var
Str:String;
Vin,Iin,Vout,Iout,Vd,Vb :String;
i :integer;
begin
CPort1.ReadStr(Str, Count);//들어온 데이타를 읽습니다.
for i := 1 to Count do begin
Vin := Char(Ord(Str[1])) + Char(Ord(Str[2])) + Char(Ord(Str[3])) ;
//들어온 데이타중 1번째 2번째 3번째것을 VIn이라는 변수에 저장합니다.
들어온 데이타를 ASCII로 읽엇으므로 Char연산으로 문자형으로 만들어줍니다.
If (StrToInt(Vin) < Meter1.ThresholdLow) or (StrToInt(Vin) > Meter1.ThresholdHigh ) then begin
// 위에줄에서 에러가 나고있습니다.. Meter1,과 Meter2는 정수형만을 입력받습니다. ThresholdLow와 ThresholdHigh는 Meter의 property로 정수형 값을 갖습니다. vin이 문자형변수이므로 정수형으로 만들어주기위해 STrtoInt함수를 썼습니다.
Meter1.Value:= 0;
Meter2.Value := 0;
Meter1.Enabled := False;
Meter2.Enabled := False;
lab1.Value:= 0;
lab2.Value:= 0;
end
else begin
lab1.Value := StrToInt(Vin);
Meter1.Value := lab1.Value;
end;
위의코드에서 나는 에러는 시리얼통신방식으로 위 프로그램이 데이타를 받았을때 프로그램 자체가 서버립니다..그리고 위의 에러가 나는줄에 커서가 와있습니다. 아마도 IntToStr(vin) < meter1.ThresholdLow ... 등등의 경우에서 뭔가 적절치 못한값이 meter1.Thresholdlow에 들어갔나봅니다..
에러메시지는뜨지 않습니다..단지 프로그램이 서버립니다..
부디 절 좀 도와주세요...
아마 거기서 에러가 나서 프로그램이 서버린것 같습니다..