Synapse - seriova komunikace. – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Synapse - seriova komunikace. – Delphi – Fórum – Programujte.comSynapse - seriova komunikace. – Delphi – Fórum – Programujte.com

 

Borisek0
Stálý člen
1. 5. 2019   #1
-
0
-

Zdravím.

Komunikací s arduinem jsem už několikrát řešil, ale odesilal jsem řetězec.

Ser.SendString('test');

Bych potřeboval odeslat Hex  52 0d 0a

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1849 příspěvků
1. 5. 2019   #2
-
0
-

Při nejhorším by mělo jít asi nějak takhle poskládat ten řetězec.

Chr($52) + Chr($0d) + Chr($0a)

Asi to jde i nějak hezčeji a nejspíš ta komponenta umí odesílat i jiná data než stringy.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
2. 5. 2019   #3
-
0
-

#1 Borisek
musím se do synapse podívat, 0D a 0A je CR+LF a mám dojem, že to komunikace přidává automaticky, takže by mělo stačit odeslat ten kod $52 jestli se nepletu měl by to být znak %.

Nahlásit jako SPAM
IP: 185.112.167.–
MilanL+1
Grafoman
2. 5. 2019   #4
-
0
-

Tak tam to CRLF synaser nepřidává je třeba to tam poslat celé, já má tu sekvenci CRLF ($0D + $0A) v constantě.

const
  CR = #$0d;
  LF = #$0a;
  CRLF = CR + LF;

jinak na binární data bych použil spíš funkci sendbuffer

function TBlockSerial.SendBuffer(buffer: pointer; length: integer): integer;

sendString to tam stejně přeposílá, vezme pointer na string a jeho délku a pošle to

SendBuffer(pointer(data), lenght(data)) ;  //kde data je ten string

Nahlásit jako SPAM
IP: 91.139.9.–
gna
~ Anonymní uživatel
1849 příspěvků
2. 5. 2019   #5
-
0
-

#4 MilanL
Přesně na tohle jsem se snažil vzpomenout. Takže by mělo jít 

#$52#$0d$#0a

Ne?

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1849 příspěvků
2. 5. 2019   #6
-
0
-

Bez toho překlepu :)

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
3. 5. 2019   #7
-
0
-

Děkují moc.

Řeším komunikací s digitální váhou pro nákladní automobily, která je u kámoše na firmě.
Jezdím tam 2X týdně, takže až tam pojedu, vyzkouším (pondělí).

Nahlásit jako SPAM
IP: 95.173.82.–
Borisek0
Stálý člen
6. 5. 2019   #8
-
0
-

Tak ještě něco je špatně.
http://img24.cz/…74398586.png

To první je odeslane přes ser monitor 52 0d 0a jako hex a jde vidět že mi to vratilo váhu 0.kg

To druhe je Ser.SendString(#$52#$0d#$0a);

A nic nevratí.

 Ser.Config(9600, 8, 'N', 0, False, False);
 Ser.Connect('COM6');

A takto mám nastavený ser.monitor, přes který to funguje.

http://img24.cz/images/07123974130337788982.png

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
7. 5. 2019   #9
-
0
-

#8 Borisek
musíš to mít jako spojení znaků do řetězce tzn #$52+#$0d+#$0a

respektive tak bych to udělal já.

hm ted jsem na to koukal ono se to chová stejně.

zkusil bych to dát předem do proměnné string nebo  konstanty

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Grafoman
7. 5. 2019   #10
-
0
-

no na tom prvním obrázku je vidět že to snad odešlo a stejně jako v prvním případě, takže problém bude spíš s příjmem nebo na straně váhy, nevím jak u té váhy funguje paměť měření rezp příkazy, 

Já dělal program pro vyčítání dat z refraktoru (měření Cukru v nápojích), tam když jsem vyčetl data posledního měření tak do dalšího měření byla mezipaměť prázdná a nic to nevracelo.

Nahlásit jako SPAM
IP: 91.139.9.–
Borisek0
Stálý člen
7. 5. 2019   #11
-
0
-
Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
7. 5. 2019   #12
-
0
-

#11 Borisek
hele zkus přehodit ty 2 řádky

nejdřív connect a pak config, nejspíš nejdřív nakonfiguruješ defaultní port a pak se připojíš na COM6, který může být jiný

Nahlásit jako SPAM
IP: 91.139.9.–
Borisek0
Stálý člen
7. 5. 2019   #13
-
0
-
Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1849 příspěvků
7. 5. 2019   #14
-
0
-

1 stop bit

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
7. 5. 2019   #15
-
0
-
Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1849 příspěvků
7. 5. 2019   #16
-
0
-

To je 1.5. A máš tam vůbec čtení?

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1849 příspěvků
7. 5. 2019   #17
-
0
-

Aha, ona 0 znamená 1 stop bit. Byl to jen tip.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
7. 5. 2019   #18
-
0
-

Ha, nějakou chybu mam ve čtení.

Najdu někde nějake demo ohledně čtení přes ten ser.port?

procedure TForm1.Timer1Timer(Sender: TObject);
var
Rcvd : string;
begin
Rcvd := '';

if  Ser.LastError = 0 then
   begin
        if Ser.CanRead(10000) then
        begin
             Rcvd := Ser.Recvstring(10000);
        end;
 Memo1.Lines.Add(Rcvd);
 Ser.Purge;
end;
Nahlásit jako SPAM
IP: 95.173.82.–
Borisek0
Stálý člen
7. 5. 2019   #19
-
0
-

Čitat to nechce.
Vrací mi to mezera 9997 mezera 9997 atd.

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    i:integer;
    Replystring:string;
    begin
     
    if Ser.LastError = 0 then
       begin
            Ser.SendString(#$52#$0d#$0a);
            Replystring := Ser.recvstring(2000);
            Memo1.Lines.Add(Replystring);
            Memo1.Lines.Add(IntToStr(Ser.LastError));
            Ser.Purge;
        end
        else
        begin
            i:= Ser.LastError;
            Memo1.Lines.Add('chyba'+ IntToStr(Ser.LastError));
        end;
    end;
Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
7. 5. 2019   #20
-
0
-

#17 gna
ano v synapsy je stopbit výčtový typ sbOne=0

#19 Borisek
zviditelni na chvilku e-mail pošlu ti kontakt případně mojí unitu obsluhující ten refraktor, včetně komunikace.

také zkus otestovat lasterror po té configuraci portu, zda se to povedlo nastavit podle těch parametrů.

Nahlásit jako SPAM
IP: 185.112.167.–
gna
~ Anonymní uživatel
1849 příspěvků
8. 5. 2019   #21
-
0
-

9997 se zdá být timeout. Když nastavíš RaiseExcept na True, tak by to mělo házet vyjímky hned, jak je něco blbě.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
8. 5. 2019   #22
-
0
-

mimrod007@seznam.cz

Se omliuvám, zařizení je v prací a ja jsem poctívý zaměstnanec a dodržují pracovní dobu   

Mně ještě napadlo zkusit ten lazarus.
Připijít k portu tu komponentu LazSerial, odeslat ty data,odpojít, připojit se jen přes synapse a zkusit načist data.

Pokud to tak pujde, měl bych zjistít, zda je problem v odesilaní, nebo ve čtení

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
8. 5. 2019   #23
-
0
-

#22 Borisek
no pomohl by druhý pc nb propojit je po tom seriáku na jednom testovat program na druhým monitorem příjímat a odesílat  vzorky

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
8. 5. 2019   #24
-
0
-

#23 MilanL
Ono to funguje.
Jsem si napsal programek do arduina.
Posilam mu po ser.p. data a ono podle toho co mu přijde odpovida.

Ono něco schazi při odesilaní toho hex

Jsem si zkusil nainstalovat komponentu ZylSerialPort.
Vyhazuje hlašku, že je to demo, ale jinak plně funkční.
Tato komponenta komunikuje, ale vraci se mi jen ERR04.
http://img24.cz/…98940132.png

Takže mužu být rad, že mi to alespon přes ten lazarus chodí a budu muset ten program napsat v něm.

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
8. 5. 2019   #25
-
0
-

#24 Borisek
no to ERR04 ti vrací arduino ne? tzn nepoznal příkaz tak vrátil chybu tak to by snad mělo fungovat.

Nahlásit jako SPAM
IP: 185.112.167.–
MilanL+1
Grafoman
8. 5. 2019   #26
-
0
-

#25 MilanL
btw jakej máš čas v timeru, nelezou ti do sebe jeho přerušení? vše chvilku trvá, než se to pošle, než zařízení připraví odpověď, ve funkci čtení máš timeout, tak vše dohromady chvíli trvá a jestli máš krátký cyklus timeru může to lézt do sebe.

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
8. 5. 2019   #27
-
0
-

#25 MilanL

no to ERR04 ti vrací arduino ne? tzn nepoznal příkaz tak vrátil chybu tak to by snad mělo fungovat.

Ne, komunikace s arduinem je bez chyby.
ERR04 mi vraci ta vaha přes tu komponentu ZylSerialPort


Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
8. 5. 2019   #28
-
0
-

#27 Borisek
máš tam v meilu ode mě tu mojí unitu fungující s poznámkami k fungování, a nnějaké další drobnosti, dnes už asi pomalu půjdu spát, ale zítra po 15h jsem rdy kdyby bylo něco potřeba.

Nahlásit jako SPAM
IP: 185.112.167.–
Borisek0
Stálý člen
9. 5. 2019   #29
-
0
-
Nahlásit jako SPAM
IP: 95.173.82.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý