Zápis dat do CSV z UDP – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zápis dat do CSV z UDP – Python – Fórum – Programujte.comZápis dat do CSV z UDP – Python – Fórum – Programujte.com

 

Vlákno bylo úspěšně vloženo.
Pokud sám přijdeš na řešení, nezapomeň ho sem přidat!
Michal
~ Anonymní uživatel
683 příspěvků
7. 1. 2018   #1
-
0
-

Ahoj a hezký večer všem.

Potřeboval bych menší radu, s Pythonem mám minimální zkušenosti a primárně v  práci pracuji s FPGA a procesory (VHDL a C).

Odesílám data skrze UDP pomocí lwIP stacku. V počítači potřebuji tyto data přijmout a zapsat do souboru typu CSV. Data, která jsou skládána do odesílacího bufferu mají šířku 32 bitů (uint32_t).  Verze skriptu se kterým pracuji aktuálně:

with open(csvf, 'w', newline='', encoding='ascii') as csv_handle:

    csv_writer = csv.writer(csv_handle, delimiter=',')

    while(True):
        try:
            data,addr = s.recvfrom(buf)
            csv_writer.writerow(data) 
        except (socket.timeout,KeyboardInterrupt, SystemExit):
            raise
        except Exception:
            traceback.print_exc()

dává následující výstup:

0,0,0,4,0,0,0,4,0,0,0,8

Ale potřebuji výstup:

4,4,8,12,16, etc.

Dávám i výstřižek z Wiresharku:

Připojen obrázek.

Děkuji za veškeré rady. Jde mi o to, abych maximálně využil možnosti Pythonu a nedělal něco neefektivně.

Michal.

Nahlásit jako SPAM
IP: 217.170.105.–
Kit+15
Guru
7. 1. 2018   #2
-
0
-

#1 Michal
Data v "data" jsou po bajtech, ale podle všeho chceš vypsat každou čtveřici bajtů jako jeden integer.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Michal
~ Anonymní uživatel
683 příspěvků
7. 1. 2018   #3
-
0
-

#2 Kit
přesně jak píšeš, a podle všeho ještě potřebuji provést byteswap - aktuálně je totiž třeba hodnota 4 vyjádřená jako 0x04000000, namísto 0x00000004, hodnota 12 jako 0x0c000000, ale to už předpokládám, že zvládnu vyřešit sám, 

Nahlásit jako SPAM
IP: 217.170.105.–
Kit+15
Guru
7. 1. 2018   #4
-
0
-

#3 Michal
To je právě rozdíl mezi Little Endian a Big Endian. Buď se strefíš, anebo to obrátíš.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Michal
~ Anonymní uživatel
683 příspěvků
8. 1. 2018   #5
-
0
-

#4 Kit
Jasně, nicméně když se vrátím k věci - napadá tě jak snadno vždy 4 Byty spojit a udělat  z nich Integer?

Zkoušel jsem struct.unpack(), mělo by to být to pravé?

Nahlásit jako SPAM
IP: 217.170.105.–
Kit+15
Guru
Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
Nahlásit jako SPAM
IP: 91.139.9.–
Kit+15
Guru
9. 1. 2018   #8
-
0
-

#7 MilanL
Vypadá to, že bajty není třeba přehazovat, že jsou správně.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 5 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ý