Nemůžu si pomoct ale výjimečně si sem postnu něco kde se nic nekompiluje.
Z eBooku Kindle od Amazonu jsem opravdu nadšený, proč?
pondělí 20. září 2010
úterý 14. září 2010
Python: parsování dat - struct.pack(), struct.unpack()
Přijímám si data z komunikace do bufferu.
A poté si je chci rozparsovat do nějaké struktury nebo slovníku chcete-li.
Jo v céčku tam s tím nemám problém, prostě bych si buffer procházel, přetypoval na pointer přislušného typu a přiřadil..
ale jak si poradit v pythonu?
A poté si je chci rozparsovat do nějaké struktury nebo slovníku chcete-li.
Jo v céčku tam s tím nemám problém, prostě bych si buffer procházel, přetypoval na pointer přislušného typu a přiřadil..
/* struktura bufferu | mujByte(1b) | mujWord(2b) | mujDword (4b) | */ length = 0; data.mujByte = *(byte *)(buffer + length) length += sizeof(byte) data.mujWord = *(word *)(buffer + length) length += sizeof(word) data.mujDword = *(dword *)(buffer + length)
ale jak si poradit v pythonu?
pondělí 13. září 2010
Python a já, já a Python
Python je mocný, python je lehký, python je fajn.
Skriptovací jazyk, ve kterém i programátor jím neposkvrněný "sbastlí" velmi rychle funkční kód. To mě na něm uchvátilo okamžitě: chceš pracovat s sqlite? jsonem? se soubory? seriovým portem? .. google.. 3 řádky a ono to prostě funguje. Do srovnání s ostatními jazyky se rozhodně pouštět nebudu. Jen povím, že v pythonu mi prostě chodí nejvíc věcí napoprvé a nejrychleji.
Nejsem aplikační programátor a tak když se k něčemu jednou za čas dostanu, velmi oceňuji tuhle svižnost a lehkost s jakou se v pythonu píše. Funkční kód se opravdu dá napsat na pár řádek, ale pokud nechcete nemusíte.. OOP, vlákna.. no vlastně vše, co jsem kdy potřeboval tu funguje velmi dobře.
Python je bezesporu ideální jazyk pro situace, kdy potřebujete něco rychle a hned.
Ale neméně krásné je, že může a umí být mnohem víc...
Co už umím..
a co bych si sem rád poznamenal :-)
Skriptovací jazyk, ve kterém i programátor jím neposkvrněný "sbastlí" velmi rychle funkční kód. To mě na něm uchvátilo okamžitě: chceš pracovat s sqlite? jsonem? se soubory? seriovým portem? .. google.. 3 řádky a ono to prostě funguje. Do srovnání s ostatními jazyky se rozhodně pouštět nebudu. Jen povím, že v pythonu mi prostě chodí nejvíc věcí napoprvé a nejrychleji.
Nejsem aplikační programátor a tak když se k něčemu jednou za čas dostanu, velmi oceňuji tuhle svižnost a lehkost s jakou se v pythonu píše. Funkční kód se opravdu dá napsat na pár řádek, ale pokud nechcete nemusíte.. OOP, vlákna.. no vlastně vše, co jsem kdy potřeboval tu funguje velmi dobře.
Python je bezesporu ideální jazyk pro situace, kdy potřebujete něco rychle a hned.
Ale neméně krásné je, že může a umí být mnohem víc...
Co už umím..
a co bych si sem rád poznamenal :-)
- Parsování dat - struct.pack(), struct.unpack()
- Databáze sqlite
- Vytváření EXE souborů - py2exe
- GUI aplikace - pyQT - QT designer - pyuic -
- Vlákna - thread
- Seriový port - pySerial
- Struktorované ukládání dat - Json
- Generování HTML
- Logování
- Práce se soubory
úterý 24. srpna 2010
Terminál pro seriový port v linuxu
Moje nová hračka xport pro je malinký webserver s linuxem. Mimojiné disponoje jakýmsi "telnetem" přes seriový port. Oficiálně se to nazývá CLI neboli command line. Hledal jsem nástroj se kterým by se mi pracovalo stejně dobře jako s telnetem a běžel pod linuxem, bez kterého se zde neobejdu.
Zkusil jsem si
Zkusil jsem si
sobota 10. července 2010
Embedded Ethernet
Pro nový projektík jsem hledal ethernetový modulek, který by za mě "pořešil" všechny ty "síťové věci". Mám na mysli ošklivé zkratky jako HTTP, UDP, IPv4/IPv6, DHCP, ICMP a hlavně SNMP.
První na co jsem narazil byly modulky Connect One. Bohužel ale nepodporují SNMP, tak jsem hledal dál.
Našel jsem velice zajímavý hardware od firmy Rabbit. Na Rabbitu mě láká univerzálnost a možnost pozdějí koupit samotný chip, udělat vlastní desku a tím podstaným způsobem stlačit cenu. Existuje zde velká sada knihoven a programuje se klasicky v Céčku.
Nejvíc mě ale zaujaly, zejména svou kompaktností, modulky od firmy Lantronix. Velmi znamý je XPort, ale mě zaujal jejich nový produkt XPort PRO. Běží na něm linux a základní konfigurace probíhá klasicky přes UART. Slibuje vše co potřebuju a tak jestli to projde koupím jeden kousek, možná i development kit a budu si hrát..
První na co jsem narazil byly modulky Connect One. Bohužel ale nepodporují SNMP, tak jsem hledal dál.
Našel jsem velice zajímavý hardware od firmy Rabbit. Na Rabbitu mě láká univerzálnost a možnost pozdějí koupit samotný chip, udělat vlastní desku a tím podstaným způsobem stlačit cenu. Existuje zde velká sada knihoven a programuje se klasicky v Céčku.

čtvrtek 1. července 2010
C/C++: Trocha pointerové poezie
Nechť máme funkci, která nám po nějaké, blíže nespecifikované komunikaci, vyšle data z bufferu, který jí předáme v parametru..
Inu pořídíme si takový buffer..
naplníme..
a vyšleme..
Nic složitého, já vím.
Jak si ale nejlépe poradit s naplněním bufferu, pokud proměnné temp1 a temp2 budou 16-ti nebo 32-ti bitové proměnné ?
void sendFunction(byte *pBuffer, byte lenght)
Inu pořídíme si takový buffer..
byte sendBuffer[30];
naplníme..
byte lenght=0; byte temp1 = 111; byte temp2 = 222; sendBuffer[lenght++] = temp1; sendBuffer[lenght++] = temp2;
a vyšleme..
sendFunction(sendBuffer, lenght);
Nic složitého, já vím.
Jak si ale nejlépe poradit s naplněním bufferu, pokud proměnné temp1 a temp2 budou 16-ti nebo 32-ti bitové proměnné ?
středa 30. června 2010
C/C++: Funkce a její návratová hodnota
Velice užitečné je si u funkcí, které nemusí dopadnout jak se od nich na první pohled čeká, vracet zda vše proběhlo v pořádku.
Obecně se vrací TRUE při správném průběhu a FALSE pokud se vyskytne nějáká chyba. Při volání funkce, která vrácí takovouto hodnotu, můžeme na případnou chybu nějak zareagovat anebo ji předat zase v podobě návratové hodnoty o úroveň výše.
Definujme podobně funkci byte setY(byte y);
Tyto dvě využijeme ve funkci pro nastavení x i y.
A konečně samotné nastavení x a y by mohlo vypadat nějak takhle..
Obecně se vrací TRUE při správném průběhu a FALSE pokud se vyskytne nějáká chyba. Při volání funkce, která vrácí takovouto hodnotu, můžeme na případnou chybu nějak zareagovat anebo ji předat zase v podobě návratové hodnoty o úroveň výše.
byte setX(byte x){ if (x>100) return 0; //chyba.. X lze nastavit jen v rozsahu 0-100 sGlobal.x = x; return 1; //ok }
Definujme podobně funkci byte setY(byte y);
Tyto dvě využijeme ve funkci pro nastavení x i y.
byte setXY(byte x, byte y){ if(setX(x)&&setY(y)) return 1; return 0; //chyba }
A konečně samotné nastavení x a y by mohlo vypadat nějak takhle..
Přihlásit se k odběru:
Příspěvky (Atom)