Forum: Compiler & IDEs Cam MCA25 Vorschau?


von Timebeast (Gast)


Angehängte Dateien:

Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.