Autor Téma: Synapse - se.port  (Přečteno 710 krát)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2525
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Synapse - se.port
« Odpověď #15 kdy: 09-05-2019, 13:39:30 »
Proč ale komunikuje s tým programem serial monitor?
A proč mi to v tom lazarusu funguje?
No zrejme proto, ze je neco (nejspis nekde za scenou) trochu jinak nastaveno, protoze podle toho, co jsi posilal, mas vsude 8+1 @ 9600 bps bez parity a handshaku.

1. Ja bych vzal ten DB9 connector a zmeril, co na tech handshakach mas u ruznych softech
2. kdyby to bylo stejne, tak bych pouzil Com0Com (nebo jak se to jmenuje) a proti Synaser pripojil treba ten monitor a pak si posilal data do null modemu a dival se, co doleze do monitoru a vice versa: z monitoru bych poslal data a dival se, co prijmu. Muzes samozrejme zkouset s ruznymi softy a tim si doladit  vlastni komunikacni vrstvu.

A pokud by to nefungovalo, tak me uz nic nenapada.


Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 202
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse - se.port
« Odpověď #16 kdy: 09-05-2019, 21:42:35 »
Tak moment, podle prvních ukázek jsem usoudil, že odpověď je ukončena CRLF. A tak se jí snažím i cist. Pokud se ale používá jiný formát, odpovědi se nedočkáš. To by se poznali pohledem do toho LineBuffer, co jsem radil na začátku.

Podle toho, co jsi tu teď ukázal, tak v tom lazarovi čteš ale data jinak. Zkus to v Delphi číst úplně stejně! Ta čtecí metoda přeci v Synaseru je. Nicméně v tomto případě bych ji já rozhodně nepoužil, tak jak je použita, nemůže fungovat za všech okolností spolehlivě.

Vždycky je třeba si ujasnit, jak vypadaji data, která chceš přijímat. Vždycky máš vlastně jen tři možnosti:

1. Zpráva je ukončena nějakým znakem či sekvenci. Pak čteš recvterminated či recvstring.

2. Víš přesně kolik bytu má přijít, pak použijeme recvbufferex.

3. A nebo čteš cokoliv co přijde, pak je to recvpacket.

U všeho je ale třeba z povahy sériového portu i multitaskingu ve Windows používat rozumné velký timeout. Osobně jsem u Synaseru nikdy nepoužil timeout menší než vteřinu.

Jinak tvoji dokumentaci jsem nestudoval, teď se k tomu fakt nedostanu, i tohle píšu z paměti do mobilu.

Offline Faltynek

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: D5 Enterprise, D2009
Re:Synapse - se.port
« Odpověď #17 kdy: 13-05-2019, 12:05:39 »
Se synapsí sice nemám zkušenost, ale co dělá parametr RCVLineCrLf?
Dalibor (D2009 Enterprise, dřív D5Enterprise)

Offline Morrison

  • Plnoletý
  • ***
  • Příspěvků: 249
  • Karma: 10
    • Verze Delphi: D5, XE2
Re:Synapse - se.port
« Odpověď #18 kdy: 13-05-2019, 12:48:12 »
Tipnul bych si, že přijímá bajty dokud nepřijde CrLf (#13#10) a pak to vrátí přijatá data jako string.
nil

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 202
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse - se.port
« Odpověď #19 kdy: 13-05-2019, 17:37:09 »
... to dělá recvstring. Ale je tam property, kterou se zapne, že to ukončení nemusí být jen CRLF, ale klidně i jen CR. Convertlineend, tuším.

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 202
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse - se.port
« Odpověď #20 kdy: 18-05-2019, 07:28:10 »
Tak jsem se mrknul na ten manuál té váhy.

1. Ujisti se, jaké přesně máš nastavené komunikační parametry. Viz. Strana 13 až 15. Obzvlášť mne zajímá, jak máš nastaveno ovládání CTS, a jestli odpovídajícím způsobem s tím CTS zacházíš.

2. Kde jsi přišel na to, že se máš váhy ptát jen příkazem R<cr><lf>? Já v manuálu vidím, že se máš ptát příkazem READ<cr><lf>, připadne REXT<cr><lf>

Offline Leo.xxl

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
Re:Synapse - se.port
« Odpověď #21 kdy: 18-05-2019, 07:52:29 »
Kde jsi přišel na to, že se máš váhy ptát jen příkazem R<cr><lf>? Já v manuálu vidím, že se máš ptát příkazem READ<cr><lf>, připadne REXT<cr><lf>
K te vaze je program, ale všichní na něj nadavají, a když se něco špatně vyplní, program spadne a muže se važit odznova.
Ono to cele začlo tím programem Serial Port Monitor.
Když jsem ho spustíl a nechal naslouchat, viděl jsem jak ten program a vaha spolu komunikují.
http://img24.cz/images/09695816586221296492.png
A šlo to furt dokola, program poslal 52 0d 0a a vaha odpověděla.

Tak jsem vypnul ten program a připojil k portu ten Serial Port Monitor nastavil na HEX a odeslal 52 0d 0a a vaha odpověděla.
Pak jsem zkusil ten lazarus s tou komponentou a poslal 52 0d 0a a take ok,vaha odpověděla.

« Poslední změna: 18-05-2019, 07:58:57 od Leo.xxl »

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 202
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse - se.port
« Odpověď #22 kdy: 18-05-2019, 08:05:48 »
Ten protokol je očividně textový, hexa kódy se zabývejme jen u toho odřádkování. S příkazy bych se držel dokumentace a ne nedokumentovaných zkratek.

Ještě mne napadlo, jakou verzi Delphi používáš? Já jen že tvoje proměnná string nemusí být totéž, co v Synaseru používaný ansistring.

Offline Leo.xxl

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
Re:Synapse - se.port
« Odpověď #23 kdy: 18-05-2019, 08:20:48 »
10 Seattle

Jsem to v tom lazarusu zkoušel takto a nebavilo se to
LazSerial1.WriteData('R'#13#10);

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 202
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse - se.port
« Odpověď #24 kdy: 18-05-2019, 08:37:20 »
A to ti nepřijde ani trochu divné?

Offline Leo.xxl

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
Re:Synapse - se.port
« Odpověď #25 kdy: 18-05-2019, 13:44:31 »
Ještě mne napadlo, jakou verzi Delphi používáš? Já jen že tvoje proměnná string nemusí být totéž, co v Synaseru používaný ansistring.
Bude problem v tom, když mam ty 10 Seattle?

PS: Psal jsem, že jsem uplna lama a když se snažili ve škole mně něco naučit, tak to bylo ještě na win 98.
Jinak spiš lazarus na linuxu a to jen jako zabava.
« Poslední změna: 18-05-2019, 13:47:30 od Leo.xxl »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2525
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Synapse - se.port
« Odpověď #26 kdy: 18-05-2019, 14:43:10 »
PS: Psal jsem, že jsem uplna lama
Neskuhrej! Za tu dobu uz jsi mohl mi prectenou nejakou  ucebnici programovani v Pascalu i Delphi language reference...

Offline Leo.xxl

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
Re:Synapse - se.port
« Odpověď #27 kdy: 18-05-2019, 19:57:39 »
Ono konečně začalo jaro. Na zahrádce se to pěkně zelena a já mám jako sedět u knížky a učit se něco co už nikdy nebudu potřebovat.  ;)
Proč mi to nefunguje přes ten synapse se stejně nikde nedočtu  :)

Přes lazarus mam už program hotový.
Přes delphi take, jen mi schazí dořešít to čtení.
Pokud to nepujde přes ten synapse, což bych ale radějí, tak to dořeším přes tu komponentu VaComm.
« Poslední změna: 18-05-2019, 19:59:34 od Leo.xxl »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2525
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:Synapse - se.port
« Odpověď #28 kdy: 18-05-2019, 20:17:45 »
Ono konečně začalo jaro. Na zahrádce se to pěkně zelena a já mám jako sedět u knížky a učit se něco co už nikdy nebudu potřebovat.  ;)
Proč mi to nefunguje přes ten synapse se stejně nikde nedočtu  :)
Ty ses vlastne takovy ukazkovy exemplar parazita: vyreste za me muj problem  >:(

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 202
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Synapse - se.port
« Odpověď #29 kdy: 18-05-2019, 22:00:56 »
Excellent
Rated 2 times
PS: Psal jsem, že jsem uplna lama a když se snažili ve škole mně něco naučit, tak to bylo ještě na win 98.

Vidis, a Synaser vznikl na W95... a od te doby s minimalnima zmenama proste funguje. A jak jsem vysvetlil vedle, LazSerial je jen nadstavbicka nad Synaserem, ktery tam ma jen modifikace pro neblokujici rezim pro Linux. takze ti to se Stynaser jednou funguje a jednou nefunguje. Kde bude asi tak problem? Nekde u tebe, co myslis?

Uz jen to, ze rikas, ze kdyz odesles 'R'#13#10, tak to nefunguje. Zatimco #$52#$0d#$0a ano. Fakt ti neni divne to, ze jde jen o dva ruzne zapisy tehoz retezce? Jak zareaguje spravny programator? Zacne nadavat. A az donadava, zacne patrat po tom, co je jinak. Jak to, ze ty dva zapisy tehoz nedaji stejny vysledek. Krokovat a overovat, kde se co stane jinak, nez ocekava.

Rozhodne nezacne na internetu hledat hromady dalsich knihoven, a aniz by vlastne tusil, jak ktera funguje, neposlepuje neco, co zdanlive funguje. A bude to fungovat klidne i nekolik let, nez se pak v nejakou chvili (a vem si jed na to, ze v tu nejblbejsi chvili) neco zvrtne, a zacne to blbnout. Zmena prevodniku, vymena zarizeni, zmena ovladace ve windows, nebo treba jen trochu vic vytizeny procesor... A to cele klidne jen proto, ze treba ctes data nevhodnym zpusobem, ze nepredpokladas, ze odpoved ti nemusi prijit najednou v ramci jedne operace, ze pouzivas nevhodne timeouty, atd.

Programovani hardware neni snadna vec. Je treba umet programovat a zaroven je treba ten hardware znat. To neni nic pro zacatecniky, a uz vubec ne pro ty, kteri se to ani naucit nechteji.

Ja vim, je venku krasne, proc bys mel ztracet cas nejakym ucenim. Ale proc bychom ze stejneho duvodu meli ztracet cas my tvym problemem? Uz to stare prislovi rika: "Chytremu napovez, hloupeho kopni." A tech napoved tu padlo docela hodne.