Autor Téma: ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?  (Přečteno 5325 krát)

Offline Jirka Ondricek

  • Mladík
  • **
  • Příspěvků: 90
  • Karma: 5
    • Verze Delphi: 12
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #15 kdy: 04-05-2014, 21:27:21 »
Po správném gebyho dotazu je zřejmé, že to nebudou AT příkazy. Zkusil bych v synaseru např. SendString.

Offline jtfcobra

  • Plnoletý
  • ***
  • Příspěvků: 240
  • Karma: 0
    • Verze Delphi: XE4,XE5 v testovní
    • XDA Developers
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #16 kdy: 04-05-2014, 21:31:13 »
Sendstring jsem napsal

takto a neslo to ale ted odeslu ale nevim jak prijmout odpoved:


Kód: Delphi [Vybrat]
  1. var
  2.   ser:TBlockSerial;
  3.   s:AnsiString;
  4. begin
  5.   ser:= TBlockSerial.Create;
  6.   ser.RaiseExcept:= True;
  7.   try
  8.    ser.Connect(Porty.Text);
  9.    ser.Config(StrToIntDef(Edit2.Text, 9600),8,'N',0,false,false);
  10.    s := AnsiString(Edit3.Text+#13#10);
  11.    ser.SendString(s);
  12.  
  13.    //memo1.lines.text:= ser.ATCommand(s);
  14.   finally
  15.     ser.free;
  16.   end;
  17. end;
« Poslední změna: 04-05-2014, 21:33:00 od jtfcobra »

Offline Daniel_Andrascik

  • Guru
  • *****
  • Příspěvků: 575
  • Karma: 20
    • Verze Delphi: D2007, D10.4
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #17 kdy: 04-05-2014, 22:06:07 »
v tomto vlakne http://forum.delphi.cz/index.php/topic,14052.msg83781.html je odo mna uvedena kratka ukazka ako prijimat cez synaser

Offline jtfcobra

  • Plnoletý
  • ***
  • Příspěvků: 240
  • Karma: 0
    • Verze Delphi: XE4,XE5 v testovní
    • XDA Developers
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #18 kdy: 07-05-2014, 14:43:30 »
No udelal jsem to takto
Ale neprichazi cisty text potreboval bych jen cisty text.....

napriklad prijde:

..... OK ....
...............
DATA XXX .....
.....................



Kód: Delphi [Vybrat]
  1. var
  2.   ser:TBlockSerial;
  3.   s:AnsiString;
  4.   odpoved:string;
  5. begin
  6.   try
  7.     ser:= TBlockSerial.Create;
  8.     ser.RaiseExcept:= True;
  9.     try
  10.     ser.Connect(Porty.Text);
  11.     ser.Config(StrToIntDef(ComboBox3.Text, 9600),8,'N',0,false,false);
  12.     s := AnsiString(Edit1.Text+#13#10); //
  13.     ser.SendString(s);
  14.     sleep(1000);
  15.     if Ser.CanReadEx(10) then
  16.     begin
  17.     odpoved:=Ser.RecvBufferStr(Ser.WaitingDataEx,0);
  18.     Edit2.text := odpoved;
  19.     memo1.Lines.Add(Edit2.text);
  20.     end;
  21.     finally
  22.       ser.free;
  23.     end;
  24.   Except
  25.   Showmessage('Chyba komunikace.Vyzkoušejte jiný port případně zkontrolujte USB kabel.');
  26.   end;
  27. end;

Offline Jirka Ondricek

  • Mladík
  • **
  • Příspěvků: 90
  • Karma: 5
    • Verze Delphi: 12
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #19 kdy: 07-05-2014, 18:57:11 »
Jsem přesvědčený o tom, že tak jak to popisuješ bude mít tvé zařízení pro komunikaci nějaký protokol (zahajovací znaky, uváděcí znaky, ukončovací apod.) Chtělo by si to najít a hned bude jasnější jak z toho dostat jen požadovaná data, respektive budeš vědět co přesně očekávat.

Offline jtfcobra

  • Plnoletý
  • ***
  • Příspěvků: 240
  • Karma: 0
    • Verze Delphi: XE4,XE5 v testovní
    • XDA Developers
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #20 kdy: 08-05-2014, 08:55:07 »
No vypada to takto

Odpoved kterou potrebuji cistou...bez mezer

Kód: Delphi [Vybrat]
  1. ATZ // Prikaz
  2.  
  3.  
  4. ELM327 v1.5 // Odpoved kterou potrebuji cistou...bez mezer
  5.  
  6. > // Konec komunikace
  7.  
  8. AT SP 6
  9. OK
  10.  
  11. >
  12.  
  13. 010C
  14. CAN ERROR
  15.  
  16. >
  17. 010D
  18. CAN ERROR
  19.  
  20. >
  21. 0105
  22. CAN ERROR
  23.  
  24. >
  25.  

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #21 kdy: 08-05-2014, 09:27:46 »
Kód: Delphi [Vybrat]
  1. ATZ // Prikaz
  2. ELM327 v1.5 // Odpoved kterou potrebuji cistou...bez mezer
Ja bych rek, ze spis potrebujes parser na odpoved pro kazdy prikaz, ktery ti  konkretne  v tomto pripade z toho vynda jmeno zarizeni a cislo verze a v programu si zkontrolujes, jestli s tim ten tvuj soft vubec umi komunikovat...

A pokud si myslis, ze ti psani takovych parseru usnadni vypousteni mezer ev. jinych znaku: ty neumis projit posloupnost znaku v jednom retezci a vybrat si z ni jen znaky, ktere te zajimaji :-O
« Poslední změna: 08-05-2014, 09:31:26 od pf1957 »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #22 kdy: 08-05-2014, 09:29:49 »
Jsem přesvědčený o tom, že tak jak to popisuješ bude mít tvé zařízení pro komunikaci nějaký protokol (zahajovací znaky, uváděcí znaky, ukončovací apod.) Chtělo by si to najít a hned bude jasnější jak z toho dostat jen požadovaná data, respektive budeš vědět co přesně očekávat.
To vis ze ma, ale to by si o tom musel nejdriv neco precist nez naslepo bez odpovidajicich znalosti neco smolit a pak tady prudit a vylizovat mozky: http://www.elmelectronics.com/ELM327/AT_Commands.pdf

Offline jtfcobra

  • Plnoletý
  • ***
  • Příspěvků: 240
  • Karma: 0
    • Verze Delphi: XE4,XE5 v testovní
    • XDA Developers
Re:ovladani ve Windows 7 COM port v poradku a ve Windows 8 nejde?
« Odpověď #23 kdy: 08-05-2014, 09:41:47 »
Ty prikazy jsou mi jasny ale fakt nevim jak identifikovat tu odpoved

Napriklad mi prijde zpet nejaky text ale kdyz tam mam mezery tak to nelze pouzit a idendifikovat ....


Nebo mam chybu v te odpovedit kdyz se zeptam ??


Například přijde
Kód: Delphi [Vybrat]
  1.  if dotaz='010C' then
  2.                          begin
  3.                          s:=odpoved;
  4.                          s1:=Copy(s,Length(s)-1,2);
  5.                          s2:=Copy(s,Length(s)-4,2);
  6.                          num:=StrToInt('$'+s2+s1);
  7.                          a:=num; b:=4; C:=a/b;
  8.                          vysledek:=FloatToStr(c)+' Otacky';
  9.                          end;  // otacky
« Poslední změna: 08-05-2014, 09:46:26 od jtfcobra »