Portál AbcLinuxu, 10. května 2025 20:29

Dotaz: FTDI prevodnik

18.11.2015 20:11 mika_hakkinen | skóre: 7 | olbramkostel
FTDI prevodnik
Přečteno: 341×
Odpovědět | Admin

Ahoj,

resim trochu problem se zpracovanim prichozich dat po uart-usb prevodniku s ftdi chipem.

Abych popsal situaci, mam zarizeni co meri vibrace motoru, ktere bez prestavky zapisuje pres uart rychlosti 500k. Format zprav je jednoduchy vzdy se stridaji 3 byte. Prvni byte je indentifikator, nebo ciselnik postupne se inkrementuje od 0 do 255, druhy byte je ta merena hodnota, treti je crc tech dvou. Puvodni soft jiz asi neexistuje.

 

Co mam za problem v pythone mam napsany jednoduchy skript, ktery cte. A pres plot jednou za minutu vykresli graf. Mam k tomu pouzitou libku/wrapper ftdi.

normalne zarizeni otevru podle id a nastavim rychlost

ftdi.ftdi_init(self.ftdic)

ftdi.ftdi_usb_open_string(self.ftdic, "i:0x0403:0x6001:0")

ftdi.ftdi_set_baudrate(self.ftdic, 500000)

 

ted u nastaveni teto promene mozna delam chybu

ftdi.ftdi_set_latency_timer(self.ftdic, 1)

ftdi.ftdi_read_data_set_chunksize(self.ftdic, 4096)

 

pak to resetuji a zahodim vsechny buffery

ftdi.ftdi_usb_reset(self.ftdic)

ftdi.ftdi_usb_purge_buffers(self.ftdic)

 

 

a pak ve smycce ctu data stale dokola a ulozim do newdata ftdi.ftdi_read_data(self.ftdic, newdata, 3) prectu 3 a pokracuji dale do funkce, kde kontroluji prvni byte to je sekvence/kontinuita prenostu, druhej byte je ta merena hodnota a to porovnam s 3 bytem, kde je crc. Problem je takovy ze se obcas stane, ze se prenos poskodi, vypadne cast tech dat. Pozna se to ze sekvence preskoci par mereni. A pak to zase pokracuje dobre. Jak casto to vypada primo souvisi se zatizenim pocitace. Kdyz se na nem nic nedela je vsechno v poradku, cely tyden to bezi bez preruseni kontinuity, ale staci cokoliv treba, kdy se aktivuje sporic obrazovky a pak je to v haji...

 

Nesetkal se nekdo s timto chovanim? Urcite bude zakopany pes v nastaveni latency_timer a chunksize

diky za kazdy tip


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 18.11.2015 22:40 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: FTDI prevodnik
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nešlo by to 1) číst jako normální sériák, 2) dát mezi to buffer v C?
20.11.2015 07:49 mika_hakkinen | skóre: 7 | olbramkostel
Rozbalit Rozbalit vše Re: FTDI prevodnik
Cist jako normalni seriak jsem zkousel jako prvni. Chovani naprosto identicke. Nastaveni latence prenosu taky samozrejme nastaveno. Tim ze pouziji primo ftdi libku, jsem si myslel ze to vyresim. Ted nevim co presne myslis dat mezi to buffer v C. Jasne je tu jeste moznost to zkusit napsat v Cecku.
Jendа avatar 20.11.2015 16:50 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: FTDI prevodnik
Ted nevim co presne myslis dat mezi to buffer v C.
Jednoduchý program, který si naalokuje kus paměti, a bude ze sériáku číst, ukládat do paměti a na výstup (stdout) zapisovat. Pak mu můžeš zkusit nastavit vysokou prioritu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.