Portál AbcLinuxu, 10. května 2025 20:29
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:
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.