1 Naposledy upravil: absolonj (2023-07-14 09:48:56)

Téma: [vyřešeno] Nahrávání FCB přes POST

Zkoušíme napsat vlastní utilitu pro upgradování programu, ale nějak nám to nechce fungovat. Spojení se naváže, ale na příkaz "send POST header + command" nedostaneme žádnou odpověď. Dodaný příklad (váš exáč) se chová podobně, odpověď má nulovou délku, takže "Memo1.Lines.add('length < 1 ... FAIL')". Zapomněli jsme na něco nebo mám poslat výpis z WireSharku?

2

Re: [vyřešeno] Nahrávání FCB přes POST

Vyzkouším si to - který přesný typ SDS to je, a která verze FW ?

Odpověď přijít musí, viz krok [3] v SDS:POST_upload. Pokud ne, tak je někde problém.

Tím že ani vzorové EXE nefunguje, tak je to podezřelé (chyba ve FW ? firewall na síti ?). Jinak bych to viděl na typický problém nedodržení celého kroku [2], zejména chybějící <cr><lf> bývají typické pro tento problém. Ale pokud ani vzorové exe se nechová jinak, tak je to divné.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: [vyřešeno] Nahrávání FCB přes POST

SDS BIG-512, FW: 2023-06-06, tedy SDS_BIG_512K_060623_EN.bin

4

Re: [vyřešeno] Nahrávání FCB přes POST

OK díky jdu to hned vyzkoušet.

FW 28.2.2023 je OK, teď zkouším 6.6.2023 a ten má specifickou vlastnost, která není zohledněna ve vzorové EXE aplikaci.

Jde o to, že vlivem změny ve FW (která ale bude opravena), nelze poslat celý obsah [2] v jednom společném TCP paketu, ale musí to být rozděleno na dva.

Jakmile se to rozdělí, tak vše funguje.

Tedy, v originále, se v kroku [2] poslalo toto vše najednou:

 [2] send POST header + command name in URI    
                                                
   POST /command HTTP/1.1<cr><nl>               
   Host: 192.168.4.250<cr><nl>                  
   Content-Length: 12<cr><nl>                   
   <cr><nl>                                     
   NoncePlease<cr><nl>                          

Pro FW 6.6.2023 je to potřeba "rozdělit", tedy poslat ve dvou oddělených paketech:

První paket:

   POST /command HTTP/1.1<cr><nl>               
   Host: 192.168.4.250<cr><nl>                  
   Content-Length: 12<cr><nl>                   
   <cr><nl>                                     

A druhý samostatný paket, poslaný z klienta do SDS hned za tím prvním:

   NoncePlease<cr><nl>                          

V rámci ukázkové aplikace stačí rozděli zápis do socketu na dvě volání (nejprve volat Write pro první část, chvíli počkat, a pak volat Write pro druhou část, a až pak číst tak jak je v původním ukázkovém kódu).

Z principu má být FW má být udělán tak, aby se to rozdělovat nemuselo, a aby tedy uměl jak nerozdělenou variantu, tak rozdělenou.
To, že FW 6.6.2023 neumí nerozdělenou variantu, bude v novém FW opraveno. Předchozí FW uměl obojí, v tomto FW se schopnost zpracovat sloučený požadavek ztratila (vlivem přidání nové funkce bez regresního testu této specifické záležitosti), a v novém FW to bude zase opraveno.

Pokud svou klientskou část předěláte na rozdělený systém (dva pakety), bude to zpětně i dopředu kompatibiliní, proto to doporučím udělat, a tím to považovat (ze strany klientského SW) za vyřešené.
Za přidanou složitost se omlouvám.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: [vyřešeno] Nahrávání FCB přes POST

Prosím o vyzkoušení navrženého řešení na klientské straně. Děkuji za zpětnou vazbu.

Úpravu zdrojového kódu do vzorové exe aplikace jsem poslal mailem.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

6

Re: [vyřešeno] Nahrávání FCB přes POST

Teď to funguje, pokračujeme dál v psaní lodaeru. Díky.

7

Re: [vyřešeno] Nahrávání FCB přes POST

Už jsme se dostali téměř na konec, čili odesílání vlastních dat, ale to otestujeme až po víkendu.

Ještě mám dotaz, zda lze nějak dekódovat soubor .FC a vyextrahovat z něj FCB a UWB. Někdy jsou změny provedeny v jednom nebo druhém, někdy je potřeba nahrát obojí, protože jsou obě části na sobě závislé. Můžeme si to samozřejmě ošetřit sami nějakým novým typem souboru, který bude zazipovaným obsahem obou částí, ale proč to dělat, když už něco takového existuje.

8

Re: [vyřešeno] Nahrávání FCB přes POST

Soubor FC je zbytečně komplikovaný pro účel extrahovaní FCB a UWB (které v něm přímo nejsou, museli by se složitěji sestavit). Lze také napsat, že soubor FC obsahuje prakticky interní stav fullc.exe, které teprve všechny výstupy vytváří.

Proto je určitě vhodné udělat si svůj, vlastní, např. ZIP, který bude mít FCB a UWB neoddělitelně v sobě, a doplnit si to svými kontrolami atd.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !