Hallo Leute,
kennt sich noch jemand mit dem Projekt avr ip webcam von Simon Schulz
(avr.auctionant.de) aus?
Ich versuche schon seit ewigen Zeiten die Cam für eine kleine Robo
Anwendung mal ohne den ganzen Webserver Kram zum laufen zu bringen. Wo
ich darmals allerdings schon an der Initalisierung gescheitert bin, bin
ich heute schon nen gutes Stück weiter.
Initialisierung, läuft!
Configuration, läuft!
Auch die Funktion "mca25_start_image_grab()" läuft anstandslos durch,
allerdings von den Previews weit und breit nichts zu sehen... :-(
Nebenbei, das Perl Programm läuft auch, hab auch die Beispieldaten die
auf der Website sind, schon decodieren können, ich müßte also nur
irgendwie an die Daten gelangen.
Was ich schon versucht hab:
ich erstelle mir ein Array char data[CAM_BUFFER_LEN] (512 Byte lang) und
beschreibe diesen halt im unteren Teil der Funktion, also nach case 1:
1 | ...
|
2 | case 1:
|
3 | for(i=0;i<31;i++){
|
4 | data[x++]=buf[i];
|
5 | };
|
6 | ...
|
Ausgeben tue ich das ganze über einen Software gelösten UART (an dem
Hardware USART hängt ja die Cam). Dieser läuft mit 115200Baud und
funktioniert prächtig!!
Ausgabe erfolgt nachdem das Ende der 512Byte erkannt wurden, also hier:
1 | ...
|
2 | // [F9 83 EF 11 ** ** ** ** ** ** ** ** 3F F9 ]
|
3 | #if CAM_BUFFER_LEN == 256
|
4 | if ( (memcmp(buf,"\xF9\x83\xEF\x11",4) == 0) ||
|
5 | (memcmp(buf,"\xF9\x83\xEF\x1D",4) == 0) ) {
|
6 | #else //CAM_BUFFER_LEN == 512
|
7 | if ( (memcmp(buf,"\xF9\x83\xEF\x21",4) == 0) ||
|
8 | (memcmp(buf,"\xF9\x83\xEF\x31",4) == 0) ) {
|
9 | #endif
|
10 |
|
11 | state =0;
|
12 | soft_uart_write_data(data); //Ausgabe über Softuart
|
13 | ...
|
Diese ersten 512Byte sehen auch richtig gut aus, man sieht in Klartext
sogar schon die "EBMP_1.0" und natürlich ne menge Mux Kram aussenrum
;-).
Aber leider war´s das dann auch schon. Die Cam scheint sich aufzuhängen
und spuckt keine weiteren Pakete mehr aus...ich denke die Übertragung
der 512Byte über RS232 dauert einfach zu lange. Wenn ich die Übertragung
raus nehme, läuft die Funtion ja anstandslos durch, aber wie soll man es
anders lösen?
Ich häng hier nochmal den ganzen Code den ich bisher geschrieben habe
mit dran.
!!!!!!GANZ WICHTIG!!!!!!
DIESER CODE IST ABSOLUTER BETA, WAS SAG ICH ALPHA STADIUM. Ich bin
ausdrücklich NICHT daran intressiert meinen Programmierstil hier
beurteilen zu lassen, da das ganze Projekt aus meiner Sicht erstmal nur
ein wirklich ganz finsterer übler Hack ist, der die Grundfuntionallität
zur Verfügung stellen soll. Es geht mir nicht um die "großen" sondern um
die Vorschaubilder. Historisch gewachsen sind natürlich noch sämtliche
anderen Programmteile vorhanden...
Ach so, das ganze ist in C++ unter AVR Studio 4.14 auf einem ATmega32
mit 14,745600 Mhz Quarz entstanden.
Gruß
Ralf