Witam.
Czesciowo rozwiazalem ten problem ale, pojawil sie nastepny.
wrrrrrrrrrrrrrrrr.
Mam otwarty port do komunikacji.
Mam taka procedure, jest to nie buforowane wysylanie znakow do portu.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
i, CharNr : INTEGER;
begin
if hCommDev > 0 then
if Key = #13 then
begin
Memo1.Clear;
key:=#0;
ClearCommBreak(hCommDev);
for i:=1 to Length(Edit1.Text) do
begin
CharNr := Ord(Edit1.Text[i]);
TransmitCommChar(hCommDev,Char(CharNr));
Sleep(10);
end;
TransmitCommChar(hCommDev,char(13)); // CR
Sleep(10);
TransmitCommChar(hCommDev,char(10)); // LF
SetCommBreak(hCommDev);
end;
end;
Dziala ok z wykorzystaniem Edit na formie, ale jezeli umieszcze sobie tą procedure w osobnym module w postaci:
procedure Send_Comm(queryORcommand : string);
var
i, CharNr : integer;
begin
if (hCommDev > 0) then
begin
ClearCommBreak(hCommDev);
for i:=1 to Length(queryORcommand) do
begin
CharNr := Ord(queryORcommand[i]);
TransmitCommChar(hCommDev,Char(CharNr));
Sleep(10);
end;
TransmitCommChar(hCommDev,char(13)); // CR
Sleep(10);
TransmitCommChar(hCommDev,char(10)); // LF
SetCommBreak(hCommDev);
end;
end;
To wtedy nie zawsze dziala. Raz działa raz nie. I o co chodzi?
A jak np. za pomoca WriteFile(), wysylac znaki jak w powyzszych procedurach tylko w odstepach 10 milisekund miedzy kazdym wysylanym znakiem?.
Pozdrawiam ;-)