C++Guns – RoboBlog

26.03.2012

Faster 64Bit C Code - Part1

Filed under: Allgemein — Tags: , , , — Thomas @ 21:03

Auf 64Bit Plattformen ist in der Regel ein Int 32Bit groß. Macht man damit Pointerarithmetik muss die 32Bit Zahl erst zu eine 64Bit zahl convertiert werden, bevor sie verrechnet wird. Pointer sind auf 64Bit Plattformen auch 64Bit groß. Durch den Einsatz von size_t statt int und ptrdiff_t statt int* lässt sich das verhindern. Siehe http://www.viva64.com/en/a/0050/ […]

06.09.2011

example to change the base instance of a derived object

Filed under: Allgemein — Tags: , , — Thomas @ 15:09

Man hat ein Array von Objekten einer abgeleiteten Klasse. Da new[] nur den Default Konstruktor aufruft, kann man keine schon existierende Instanz der Basisklasse mitgeben. Folgender Code zeigt, wie man die Basisinstnaz nachträglich ändern kann. // example to change the base instance of a derived object #include < iostream > using namespace std; class rawData […]

07.08.2011

hex to int - 1 Byte

Filed under: Allgemein — Tags: — Thomas @ 10:08

uint8_t hex2int(char str[2]) { for(uint8_t i=0;i

04.04.2011

Etwas über C, Assember und Performance

Filed under: Allgemein — Tags: , — Thomas @ 21:04

Angenommen, ihr habt folgenden Code int main() { int i = 0; for(; i < 255; i++) { if(i != 10) printf("a"); else printf("b"); } return 0; } Angenommen, man ändert if(i != 10) zu if(i == 10). Läuft der Code schneller? Bei diesem Beispiel: Nein. Ich habe mir den erzeugten ASM Code ausgeben lassen […]

11.03.2011

Servocontroller

Filed under: Allgemein — Tags: , , , — Thomas @ 21:03

Mein Servocontroller ist online. Mehr zu lesen gibts hier Servocontroller

25.02.2011

Datenhandschuh: Die Verbindung mit dem PC steht

Filed under: Allgemein — Tags: , , , — Thomas @ 13:02

Heute habe ich den Operationsverstärker an einem Mikrocontroller angeschlossen, der das Signal an den PC schickt. Damit sind drei, einzel entwickelte Komponenten miteinander verbunden. Und es funktioniert zufriedenstellend :) Der Mikrocontroller, ein alter ATmega8, besitzt ein 10bit ADC mit interner 2.56V Referenzspannung. Neuere Typen kommen auch bis auf 1.1V runter. Aber für den Prototyp lange […]

14.02.2011

OpenCV death (hot) Pixel im Bild entfernen

Filed under: Allgemein — Tags: , — Thomas @ 14:02

Da meine ca. 11 Jahre alte Webcam mitlerweile ein paar kaputte Pixel hat, die einfach nur weiß sind, habe ich mir überlegt was man dagegen tun kann. Eine Möglichkeit wäre, die Pixel zu erkennen und durch den Median der umliegenden Pixel zu ersetzten. Um die Pixel zu erkennen macht man einfach ein paar Aufnahmen im […]

27.01.2011

OpenCV Mittelwert der Farben in einem Video

Filed under: Allgemein — Tags: , — Thomas @ 01:01

Schaut euch mal dieses geniale Video an http://www.youtube.com/watch?v=NtoYuwmTzt0 Wird das Video nicht zwischendrin irgendwie blasser? Es kommt mir gerade so vor. Hmmm man könnte ja mal die Farben analysieren. Also jedes einzelne Frame in den HSV (H Farbwert, S Sättigung, V Wert) umrechnen, den Mittelwert über alle Pixel bilden und dann grafisch auftragen. Gesagt, getan. […]

20.01.2011

C freien Speicher ermitteln

Filed under: Allgemein — Tags: — Thomas @ 13:01

Das Zauberwort heisst sysinfo. // Um den freien RAM zu bestimmen #include < sys/sysinfo.h > struct sysinfo meminfo; if(sysinfo(&meminfo) != 0) perror("Kann keine RAM Infos auslesen"); printf("mem total %i\n" ,meminfo.totalram/1024/1024); free memory usage

10.12.2010

C/C++ eine static Variable liegt im Heap

Filed under: Allgemein — Tags: , — Thomas @ 16:12

Eine statische Variable liegt im Heap, statt auf dem Stack. Das erklärt auch, warum das Programm meines Chefs funktionierte, nachdem er vorsorgshalber alle 200 Variablen im Datapool als static deklarierte. Der Stack ist nur einige MB groß (Wie groß genau? Infos suchen!). Fordert man ein entsprechend großes Array an, stürzt das Programm ab. Gefunden im […]

« Newer PostsOlder Posts »

Powered by WordPress