Prośba o pomoc Delphi+Rs232+API ?

0

Mam problem ze sterowaniem miernika, poprzez port rs232 pod delphi 5 (Enterprise).
Problem dotyczy wysyłania komunikatów do miernika, czyli jego sterowania.
Nie działaja wszystkie komendy, które wysyłam (oczywiscie są wpisywane poprawnie).

np.: MEAS +#13#10 działa OK
FETCH? + #13#10 tez OK
ale juz MEAS;*WAIT;FETCH? +#13#10
TEST:TEST 1 +#13#10
nie działa.

Zorientowanych w temacie bardzo prosze o ewentualne uwagi

Pozdrawiam ;-)

0

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 ;-)

0

z tego co pamietam to w sdk Windows masz funkcje ktore umozliwiają ci otwarcie dostępu do portu, i mają szersze zastosowanie niz normalnie, ja niestety nie pisze wirtualnych przyrządów pomiarowych pod delphi tylko pod c wiec tutaj nie wiem jak dobrze ci pomodz

[dop] dodatkowo wez poduwage to ze najlepiej jest buforowac wysyłanie danych na port robic paczki i wysyłac w paczkach, bo windowsy potrawią swoje 3grosze wcisnąć, kiedys pisałem program pod win i dosa, i pod dosem chodziło a w windowsie okazywało sie ze czasy wysyłania instrukcji sie rozjeźdzają, dodatkowo mozna korzystać z wbudowanego bufora na rs232

0

NO I W KONCU MI SIE UDALO. DZIALA OK.

Rany boskie ile ja czasu przy tym spedzilem.
Spac nie moglem i w ogóle.
Ale juz koniec tych udrek. HA HA.
W takich chwilach to sie ciesze jak male dziecko i az dostaje skrzydel do
dalszej pracy w delphi.

Pozdrawiam :-)

<font color="black"></span>

1 użytkowników online, w tym zalogowanych: 0, gości: 1