Home

Parallelport Kamera

image

Contents

1. Nibble Mode Compatibility Nibble Mode signal description signal name Mode signal name PtrClk nAck Reverse data transfer phase Used to qualify data being sent to the host Reverse idle phase Set low then high by the peripheral to cause an interrup indicating to the host that data is available PtrBusy eee everse data transfer phase Data bit 3 then 7 then forward channel busy status AckDataReq Reverse data transfer phase Data bit 2 then 6 Reverse idle phase Set high until the host requests a data transfer then follows nDataAvail nFault Reverse data transfer phase Data bit 1 then 5 Reverse data transfer phase Set low to indicate that host can receive peripheral to host data then set high to acknowledge receipt of that nibble Following a reverse channel transfer the interface transitions to idle phase when HostBusy nAutoFd is set low and the peripheral has no data available Reverse idle phase Set high in response to PtrClk nAck low pulse to re enter reverse data transfer phase If set high with IEEE 1284 Active nSelectIn set low the IEEE 1284 idle phase is aborted and the interface returns to Compatibility Mode Reverse data transfer phase Set low to indicate that the peripheral has the data ready to send to the host Then used to send data bit 0 LSB then 4 Reverse idle phase Used to indicate that data is available Abbildung 5 Nibble Modus Xflag H
2. http neil fraser name software Itp Studienarbeit Thorsten Geier 18 Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor 4 1 Videoprozessor Der in der Kamera verwendete VVL404 CMOS Bildsensor liefert die reinen Bilddaten an den Videoprozessor Dieser berf hrt die Daten in ein 4 2 2 bzw 4 2 0 YUV Format in YUYV Reihenfolge Die Bild gr e betr gt 352 288 CIF Pixel oder 176 144 QuarterCIF QCIF Pixel Anschlie end stehen die Bilddaten dem Videokompressions modul zur Verf gung Sensor USB IPP NTERFACE a VIDEO COMPRESSION Difference Engine amp Run Length Encoder DATA STREAMER Run Length Encoder VP VIDEO DATA INTERFACE decode Abbildung 16 Die CPiA Bilddatenverarbeitung Studienarbeit Thorsten Geier 19 4 2 Videokompressionsmodul Das Videokompressionsmodul bietet die M glichkeit die Bilddaten unbearbeitet zu lassen oder auf zwei Arten zu komprimieren Die erste M glichkeit ist eine einfache Laufl ngenkodierung RLE Dabei werden l ngere Folgen von gleichen Bildwerten durch zusammenfas sen gek rzt Die zweite M glichkeit ist eine Differenzkodierung Bei der Differenzkodierung wird zu jedem Pixel eines neuen Bildes ein Vergleich zum vorherigen Bild durchgef hrt und nur noch die Bild werte bertragen die sich ge ndert haben Die Laufl ngenkodierung ist dann sehr effektiv wenn es viele Bereiche mit gleichen Farben und Helligkeiten im
3. eeeeessseecceceeeeeeeeeeneeeeeeeeeeeeeee 21 Ansteuerung der Kamera 22 5 1 Vorhandener Quellcode 22020200eennn 22 5 2 PP test sanieren he 22 5 2 1 pport c comm c und cpialink c 22 5 2 2 cmd h und cpia_emd c nnnen 23 5 2 3 cconvert c decode c und cpia_vid h 23 5 2 4 mam menie Ser 28 5 2 5 PP gt 35 BC E TEE 32 5 3 SmallVersionr EP en een 33 3 4 CamWVIonttor ssnin nsina a IS 33 5 4 1 imageviewer cCpp nee 34 5 4 2 thread CDDen ie noiis rasa eisten 35 5 3 Xsmall Versi iie seh 36 5 5 1 SendPacket Jenice na a a 37 5 5 2 GetP ckett Jas reaa ein 38 5 5 3 UploadStreamData 39 Fazit und Ausblick near 40 Abbildungsverzeichnis Abbildung 1 Technische Daten 7 Abbildung 2 Creative Video Blaster WebCam II 7 Abbildung 3 Ger te Manager scicivscecenivicctinsvsdisinivedavecisedetsnivadexcatsedes 8 Abbildung 4 Kamerasoftware von Ceative uneseeseeeeeeeeeeeeeeeeeeeeeennnnn 9 Abbildung 5 Nibble Modus aa 10 Abbildung 6 Byte Modus en Coden davitasa ees 11 Abbildung 7 EPP Modus a 12 Abbildung 8 ECP Modus 12 Abbildung 9 IEEE1284 Moda keiten 13 Abbildung 10 Fehlermeldung unter Windows XP 14 Abbildung 11 Initialisierung von inpout32 dll eeeeeeeeeeeeeeeeeeeenen 16 Abbildung 12 Ablaufdiagramm von inpout32 dll 000000000000000000 17 Abbildung 13 Dein
4. http www geeksville com kevinh linuxcomm html e http webcam sourceforge net 3 5 Portzugriffe mit C C Auch die Portzugriffe unter C C unterliegen den Restriktionen des eingesetzten Betriebssystemes WindowsXP Fiir den Zugriff auf den Druckerport kommt hier inpout32 zum Einsatz Die Portzugriffe funktionieren damit problemlos und unkompliziert Auch lasst sich der Code ohne Probleme in DevC und VisualStudio einbinden 3 6 Installation und Benutzung von Inpout32 dll Zur Benutzung von inpout32 muss man die Datei inpout32 dll ins Windows Systemverzeichnis oder in den Order mit dem ausfiihrbaren Quellcode kopieren Im Quellcode selbst muss man die Libary in pout32 dll initialisieren Das k nnte z B so aussehen prototype function typedef for DLL function Inp32 typedef short _stdcall inpfuncPtr short portaddr typedef void _stdcall oupfuncPtr short portaddr short datum int initialiseInp32 void HINSTANCE hLib inpfuncPtr inp32 oupfuncPtr oup32 Load the library hLib LoadLibrary inpout32 dll printf inpout32 dll loaded n if hLib NULL printf LoadLibrary Failed n return 1 get the address of the function inp32 inpfuncPtr GetProcAddress hLib Inp32 if inp32 NULL printf GetProcAddress for Inp32 Failed n return 1 oup32 oupfuncPtr GetProcAddress hLib Out32 if oup32 NULL printf GetProcAddress for Oup32 Failed n
5. mit der man den Parallelport ansteuern kann Unter WindowsXP bleibt der Zugriff auf den Druckerport mit der Java Communications API aber aus den oben genannten Griinden verwehrt Eine Zugriffsm glichkeit unter Java bietet Parport von Juan Gabriel Del Cid Portillo Nach dem Herunterladen des zip Archivs und Be folgen der Installationsanleitung gelingt der Zugriff auf den Drucker port Alternativen sind hier RxTx und Java Comm for Linux JCL Spe ziell Java Comm for Linux und RxTx sind auf Parallelportzugriffe unter Linux ausgelegt Allerdings wurden diese Alternativen hier nicht getestet und es kann somit keine verbindliche Aussage getroffen werden ob die Benutzung des Parallelports damit wirklich funktio niert Nachdem die Ansteuerung der Druckerschnittstelle unter Java gelang wurde dennoch die Programmiersprache gewechselt und auf C C umgestiegen Dadurch bedingt erfolgte die Programmierung nicht mehr mit Eclipse sondern mit DevC und VisualStudio Die Gr nde hierf r waren keine M ngel der Programmiersprache Java bzw Vor teile bei C C sondern rein praktischer Natur Unter SourceForge fand sich ein Projekt mit DOS Quellcode der Kamerasoftware vom Hersteller Creative unter der GNU Public License Um diesen testen zu k nnen war der Umstieg auf C C sinnvoll 1 http www logix4u net inpout32 htm http java sun com products javacomm http www geocities com Juanga69 parport K http www rxtx org
6. printf s n filename strcat filename ppm imagefile fopen filename wb if imagefile NULL printf UploadImage Unable to open s file n filename return Header fiir PPM Format if VIDEOSIZE VIDEOSIZE_QCIF fprintf imagefile P3 n d n d n255 n imageWidth 2 imageHeight 2 else fprintf imagefile P3 n d n d n255 n imageWidth imageHeight int pixel 0 int stopH 0 stopW 0 if VIDEOSIZE VIDEOSIZE_QCIF stopH imageHeight 2 stopW image Width 2 Pixel richtig umsortiert in Datei schreiben Fiir QCIF nur das letzte Bufferviertel for int lines imageHeight lines gt stopH lines for int cols image Width cols gt stopW cols pixel imageWidth 3 lines cols 3 fprintf imagefile u rgb24Buffer pixel 2 fprintf imagefile u rgb24Buffer pixel 1 fprintf imagefile u rgb24Buffer pixel fprintf imagefile n printf File written n fclose imagefile Abbildung 25 SaveBufferToFile void ContinousGrab void bool rtn bool stop false continuousGrabbing true CPIA_GotoHiPower CPIA_SetGrabMode 1 CPIA_SetFormat VIDEOSIZE subSampling 0 CPIA_SetCompression compMode decimation long start clock do SingleGrab 0 0 rtn imageNumber verifyAndFormat saveBufferToFile if _kbhitQ stop true if imageNumber gt 1100 stop true while stop CPIA_GotoLoPower printf d images taken n imag
7. Frameheader Studienarbeit Thorsten Geier 27 5 2 4 main_menu c Main_menu c ist die Steuerzentrale des Programms Die main Methode enth lt die Initialisierungsaufrufe f r die ben tigten Kompo nenten und Variablen Nach Finden eines Druckerports wird in einer Dauerschleife das Benutzermenu dargestellt Sobald der User eine Option des Men s ausw hlt wird der entsprechende Code ausgef hrt und es erscheint wieder das Benutzermen Neben der Einstellung der Aufnahmeparameter Resolution und Compression sind die wichtigs ten Men punkte Single Grab und Continuous Grab Single Grab nimmt genau ein Bild auf und speichert es als ppm Datei auf der Festplatte Hierbei wird die Kamera zun chst in den HiPower Modus versetzt und die aktuellen Parameter f r Bildgr e und Kom pression an den CPiA Chip der Kamera gesendet Danach wird die Methode SingleGrab aufgerufen Als Parameter werden Variablen zum Z hlen der bertragenen Bytes zum Speichern des Streamstates und ein bool Wert zur Fehleranzeige bergeben Innerhalb von Sin gleGrab wird als erstes CPIA_GrabFrame aufgerufen Dieser CPiA Befehl wird ber CLINK_TransferMsg direkt an die Kamera gesendet und das aktuelle Bild mit den zuletzt bertragenen Aufnah meparametern im Speicher der Kamera abgelegt Diese Vorverarbei tung des Bildes dauert einige Millisekunden Sobald die Bilddaten zur bertragung bereit sind signalisiert die Kamera dies ber ein Setzen von STREAM
8. Og Eingabeger te Human Interface Devices H Grafikkarte ww INE ATA ATADT Controiler Abbildung 3 Ger te Manager Hilfreich zur Funktions berpr fung der Kamera ist eine Installation der ebenfalls auf der CD enthaltenen Kamerasoftware Sollte die Ka mera nach einer experimentellen bzw nicht ganz korrekten Ansteue rung nicht mehr reagieren kann der Start des Programms WebCam Monitor die Kamera ggf reaktivieren Weiterhin lassen sich die Ka merabilder und die Anzeigegeschwindigkeit gut mit dem eigenen Pro gramm zur Kameraansteuerung vergleichen Studienarbeit Thorsten Geier 8 Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor WEBCAM MONITOR OU Abbildung 4 Kamerasoftware von Ceative 3 berblick ber die parallele Schnittstelle Der Parallelport geh rt mit den seriellen Schnittstellen zu den ltesten Anschlussm glichkeiten von externer Hardware an den PC Die paral lele Schnittstelle auch Centronics Schnittstelle genannt hat 25 Pins Alle Signale besitzen TTL Pegel also entweder OV oder 5V Der erste Parallelport LPT1 wird zumeist unter der Basisadresse 378h der zweite unter 278h angesprochen Die Basisadresse wird ben tigt um die Daten Status und Steuerregister der Schnittstelle zu beschreiben oder auszulesen Ins Datenregister k nnen 8 Bit Daten zum Transfer an das angeschlos sene Ger t geschrieben werden Durch einen Strobe Impuls werden die Daten vom Ger t bernomm
9. return 1 printf inpout32 dll ready for use n Abbildung 11 Initialisierung von inpout32 dll 1 http www logix4u net inpout32 htm Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor Nun kann tiber outp32 portAdresse wert ein Wert auf den unter portAdresse angegebenen Parallelport geschrieben werden inp32 portAdresse liest den Port aus und liefert einen Short Wert der aktuellen Belegung zur ck Portadresse und Wert sind auch je weils Short Werte Folgende Grafik zeigt den internen Ablauf bei Aufrufen von inp32 oder outp32 User calls Inp32 or Out32 function Checking OS version Use _inp _out library Is hwinterface sys kernel functions for data transfer mode driver loaded Yes No Try to load Driver Pass data request to Success driver using DevicelO Control API No ie Install Driver Driver writes to or reads from parallel port using HAL functions Abbildung 12 Ablaufdiagramm von inpout32 dll Am Ende des Programms kann die inpout32 dll wie folgt entladen werden int deinitialiseInp32 void FreeLibrary hLib return 0 Abbildung 13 Deinitialisierung der inpout32 dll Eine Alternative zur inpout32 dll bietet ParallelPort von PJ Naughter Die Vorgehensweise zur Benutzung ist sehr ahnlich I http www naughter com Studienarbeit Thorsten Geier 17 Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor 3 7 Kontrollwerkzeug
10. Die f r die Darstellung der GUI relevanten Daten sind in den Dateien imageviewer cpp und thread cpp enthalten Das Layout der Programmoberfl che wird von l http www trolltech com Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor Qt in der Datei imageviewer ui verwaltet Da sich die Qt 4 0 Version direkt in das Visual Studio integriert lassen sich die Oberfl chen dort per Drag amp Drop erstellen nderungen an der erstellten Oberfl che werden beim normalen Kompilieren ebenfalls mit eingebunden so dass die Oberfl chen nicht mehr au erhalb vom Visual Studio Kompi liert werden m ssen F r die Ausf hrung einer mit Visual Studio und Qt erstellen Releaseversion m ssen neben der inpout32 ddl auch qtgui4 dll qtcore4 dll msvcp71 dll und msvcr71 dll im gleichen Ver zeichnis vorhanden sein Ist dies nicht der Fall oder sind keine Pfade zu den dll Dateien gesetzt bricht das Programm mit einer entspre chend Fehlermeldung ab 5 4 1 imageviewer cpp Die Datei imageviewer cpp enth lt die gleichnamige Klasse image viewer und ist das Herzst ck der GUI Hier werden die verschiedenen Oberfl chenelemente z B Pushbuttons und Radiobuttons mit ihren Eigenschaften beschrieben und gruppiert Zudem werden die dort so genannte Slots und Actions angelegt Signale brauchen nicht explizit angelegt zu werden Kn pfe versenden z B automatisch das Signal clicked wenn sie angeklickt werden Slots sind die angelegten Klas senmeth
11. auch automatisch die Bildartefakte Eine m gliche L sung zur Vermeidung dieser Bildarte fakte ist es zuerst ein Bild ohne Kompression aufzunehmen und dann erst die Kompression einzuschalten Dadurch wird die Entstehung von Bildartefakten direkt verhindert Aufl sung YUV 4 2 2 YUV 4 2 0 CIF 203 kB 153 kB QCIF 51 kB 38 kB Abbildung 21 Bildgr en ohne Kompression Die Datei cpia_vid h enth lt die Definition des Frameheaders gem den Vorgaben des Software Developer s Guide for CPiA Cameras Neben den reinen YUV Farbinformationen wird zu jedem Bild ein Frameheader in den Datenstrom eingebaut Der Frameheader besteht Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor aus den ersten 64 Bit des Datenstroms Er startet mit den Magic Num bers 0x19 und 0x68 zur Identifikation Des weiteren enth lt er detail lierte Informationen ber das Bildformat die Kompression dem ver wendeten Bildausschnitt ROI region of interest und dem Kamera status mates nme mm fo HEADERO 0x19 Magic number Be HEADER1 0x68 Magic number TIMESTAMP_0 Time at which image was captured Format to be decided TIMESTAMP_1 Not related to the USB SOF timestamp 6 TIMESTAMP_2 Time at which image was captured Format to be decided 7 TIMESTAMP_3 Not related to the USB SOF timestamp Fun Seren heer ee e poose n SUB_SAMPLE 1 4 2 2 0 4 2 0 colour subsampling 18 YUV_ORDER a a os Abbildung 22
12. bertragung der Bildinformationen bereit ist Mit UploadStreamData werden die Bildaten dann byteweise mit NibbleReadBuffer oder ECPReadBuffer gelesen Mit dem Finden der EOF End of Frame einer Folge von vier OxFF Werten wird der Lesevorgang beendet Das aufgenommene Bild kann dann wie gewohnt dekomprimiert und ge speichert werden int UploadStreamData int EndOnFF unsigned long DataBytes unsigned char DataBuffer unsigned long ActualBytes unsigned long StreamChunkSize unsigned long curr Transfer Mode REQUEST_LINK ECP_DATA_IN for curr 0 curr lt DataBytes curr StreamChunkSize ifdef NIBBLE_MODE NibbleReadBuffer true amp DataBuffer curr StreamChunkSize else ECPReadBuffer true amp DataBuffer curr StreamChunkSize endif ActualBytes curr StreamChunkSize if DataBuffer curr StreamChunkSize 4 OxFF amp amp DataBuffer curr StreamChunkSize 3 OxFF amp amp DataBuffer curr StreamChunkSize 2 OxFF amp amp DataBuffer curr StreamChunkSize 1 OxFF break ECP_INIT_ON if TransferEnd return 0 return true Abbildung 36 UploadStreamData 6 Fazit und Ausblick Die Arbeit an der Studienarbeit war sehr vielseitig und lehrreich Ich konnte mich in Themenbereiche einarbeiten mit denen ich mich noch nicht befasst hatte z B die Oberfl chengestalltung mit Qt Auch das berwinden der kleineren und gr eren Probleme bis zur Aufnahme des
13. break default colourformat NOT_SUPPORTED break Vision CPiA Data Sheet pdf Kap 3 8 Image Reformating Colour Space Conver sion break case FOURCC_IYUV case FOURCC_I420 colourformat 1420 break case FOURCC_YV12 colourformat YV12 break case FOURCC_YVU9 colourformat NOT_SUPPORTED break case FOURCC_UYVY colourformat UYVY break case FOURCC_YUY2 colourformat YUY2 break default colourformat NOT_SUPPORTED break return colourformat Abbildung 20 Format ToSupplyFourCC F r die Verwendung von FormatStream ist es in jedem Fall wichtig die Ausgabebuffer in der richtigen Gr e zu w hlen da For matStream sonst abbricht Der Ausgabebuffer sollte beim Anlegen mit Farbwerten z B in blau oder schwarz initialisiert werden Falls die Kamera direkt Bilder mit aktivierter Kompression liefert soll ohne das vorher Vollbilder ohne Kompression bertragen wurden dann berechnet der CPiA Chip die Differenz zum letzten Bild im Speicher der Kamera Nach einer Trennung vom Netz sind die Werte im Spei cher nicht definiert Es werden in jedem Fall nur Teile des ganzen Bildes bertragen Durch das Initialisieren des Ausgabebuffers bleiben die nicht bertragen Bereiche zwar in der Farbe der Initialisierung aber der Ausgabebuffer enth lt f r die Weiterverarbeitung zumindest g ltige Werte Sobald sich der Bildinhalt an den bislang noch nicht bertragenen Stellen ver ndert verschwinden
14. cconvert c decode c und cpia_vid h Cconvert c dient der Umwandlung der von der Kamera gelieferten Bilddaten Grunds tzlich liefert die Kamera die Bilddaten im YUV oder UVUY Format mit einer Abtastung von 4 2 2 oder 4 2 0 Die in Siehe Kapitel 3 ff Cconvert c enthaltenen Methoden erlauben es die Bildinformationen von YUV nach RGB mit 16 24 oder 32 Bit Farbtiefe zu konvertie ren Als Eingabeparameter werden Verweise auf einen Buffer mit den vorhandenen YUV Werten und auf einen weitern Buffer fiir die RGB Werte ben tigt void YUVPixeltoRGB24 unsigned char YUVPixel unsigned char RGBPixel int yval uval vval yval2 int guv rv bu yval YUVPixel 16 uval YUVPixel yval2 YUVPixel 16 vval YUVPixel uval 128 vval 128 yval 19 yval yval2 19 yval2 bu uval lt lt 5 guv 6 uval 13 vval rv 26 vval RGBPixel unsigned char limit yval bu gt gt 4 RGBPixel unsigned char limit yval guv gt gt 4 RGBPixel unsigned char limit yval rv gt gt 4 RGBPixel unsigned char limit yval2 bu gt gt 4 RGBPixel unsigned char limit yval2 guv gt gt 4 RGBPixel unsigned char limit yval2 rv gt gt 4 return Abbildung 19 YUVPixeltoRGB24 Decode c zeichnet sich verantwortlich fiir die Dekodierung der gelie ferten Bilddaten Eine Dekodierung ist n tig sobald die Daten komp rimiert
15. diesem Prinzip funktionieren auch die anderen Programmversionen aller dings sehr viel verschachtelter als in camera c 5 5 1 SendPacket Um einen Befehl z B GoToHiPower an den CPiA Chip zu senden wird SendPacket mit dem entsprechenden Befehl als Parameter aufge rufen In diesem Fall SendPacket g_ucPktGotoHiPower SendPacket f hrt zuerst ein TransferMode REQUEST_ECP aus Damit wird der bertragungsmodus auf ECP gesetzt Dann wird die bertragung des Befehls mit WriteBuffer ausgef hrt WriteBuffer bertr gt das bergebene Befehlspacket Byte f r Byte an die Kamera Abschlie end wird der Transfer mit TransferEnd beendet void SendPacket unsigned char packet TransferMode REQUEST_ECP WriteBuffer packet 8 TransferEnd Abbildung 33 SendPacket int WriteBuffer unsigned char Data unsigned long Bytes unsigned long i c unsigned char ptr ECP_AUTOFEED_OFF we are now in forward idle phase while ECP_BUSY true ptr Data for i 0 i lt Bytes i set_ECP_DATA Data i cpia_datasheet pdf Kap 2 2 5 8 Command Status Transfers usleep 2000 ECP_STROBE_OFF usleep 2000 while ECP_BUSY false event 36 ECP_STROBE_ON while ECP_BUSY true event 36 return true Abbildung 34 WriteBuffer 5 5 2 GetPacket GetPacket liest Daten von der Kamera und schreibt sie in einen per Verweis bergebenen Buffer Um
16. ersten Bildes mit der Webcam war ein kontinuierlicher Prozess Generell k nnen die zahlreichen Foren im Internet zur L sung von Problemen sehr hilfreich sein Besonders zur Thematik der Ansteue rung des Parallelports unter WindowsXP hat die Suche in den Foren gute Hinweise geliefert Besonders hervorheben m chte ich an dieser Stelle die Foren supportnet de mikrocontroller net und tutorials de Nat rlich aber auch die gute Betreung von Dr Merten Jost Nachdem die Ansteuerung der Creative VideoBlaster II Webcam mit den verschieden Programmversionen funktioniert ist besonders die vierte Version f r eine direkte Ansteuerung der Kamera mit einem Controller zur Realisierung einer Netcam interessant CamMonitor und XsmallVersion werde ich auch nach dem Ende der Studienarbeit weiterentwickeln und weitere Funktionen hinzuf gen Literatur 1 10 11 12 13 14 15 16 17 Dirk Louis C C Kompendium Das komplette Programmier wissen f r Studium und Job Markt und Technik Verlag M n chen 2003 Klaus Dembowski PC Werkstatt Markt und Technik Verlag M nchen 2000 VISION CPiA Data Sheet VV0670P001 Colour Processor In terface ASIC 02 07 98 Software Developer s Guide for CPiA Cameras Release 1 0 1998 IEEE P1284 IEEE Standard Signaling Method for a Bidirectional Parallel Peripheral Interface for Personal Computers Draft D1 2 August 1 2000 Creative VideoBlaster WebCam II Benutzerhandbuch http we
17. sich an da es sehr einfach aufgebaut ist Im einfachsten Fall wird eine Textdatei angelegt und die RGB Farbwerte hintereinander f r jedes Pixel eingef gt Zudem m ssen zu Beginn der Datei eine Magic Number und die Bildabmessungen enthalten sein Mit der Da teiendung ppm ist es f r die meisten Bildbetrachtungsprogramme dann keine Schwierigkeiten die Bilder anzuzeigen Abbildung 24 Erstes Bild ohne ge nderter Pixelfolge und vertauschten RB Werten Mit der Methode saveBufferToFile werden die Bildinformationen im PPM Format gespeichert Nach dem Schreiben des korrekten Hea ders werden die RGB Werte aus dem Buffer in die Datei eingef gt Die ersten drei Werte im Buffer entsprechen dem BGR Wert des letz ten Pixels im Bild Deshalb m ssen die RGB Tripel von hinten nach vorne aus dem Buffer ausgelesen und dann mit vertauschten Rot und Studienarbeit Thorsten Geier 29 Blauwerten in die Datei geschrieben werden Die obige Abbildung zeigt das Ergebnisbild ohne die Anderung der Pixelreihenfolge und der RB Werte Die griinen Farbwerte sind korrekt aber der Blumen topf ist normalerweise rot und nicht blau void saveBufferToFile void FILE imagefile char filenamel frame char filename char number AsString 5 filename new charl strlen filename1 12 strepy filename filenamel if continuousGrabbing itoa imageNumber numberAsString 10 printf numberAsString strcat filename numberAsString
18. wird daf r noch ein extra Adapter von DIN auf PS2 Ist keine PS2 Tastatur Buchse verf gbar l sst sich die Kamera auch mit einer externen Spannungsversorgung betreiben Die Gleich spannung sollte 5V betragen und kann ber Pin X und Pin Y des am Kabel befestigten PS2 Steckers oder ber Pin X und Pin Y des DIN Steckers eingespeist werden Ein Hinweis f r die externe Stromversorgung Die Kameraelektronik reagiert recht empfindlich auf unsaubere Gleichspannung wie sie z B unstabilisierte Steckernetzteile liefern dadurch kann es zu unerw nschten Bildst rungen kommen Abbildung 2 Creative Video Blaster WebCam II Studienarbeit Thorsten Geier Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor 2 2 Inbetriebnahme der Kamera Zum Anschluss der Kamera kann man sich an die Anweisungen im mitgelieferten Handbuch halten Auf der Treiber CD von Creative sind Treiber f r Windows95 Windows98 und WindowNT enthalten Damit die Kamera von WindowsXP erkannt wird installiert man am besten den Treiber f r WindowsNT Bei erfolgreicher Installation erscheint die Kamera im Ger temanager von Windows als VLSI Visi on Ltd PPC2 Camera eee HES Acronis Devices Andere Ger te e VLSI Vision Ltd PPC2 Camera F Anschl sse COM und LPT Audio Video und Gamecontroller BestCrypt bus controllers Class for PdiPorts devices Computer Diskettencontroller SB Diskettenlaufwerke 3 DVD CD ROM Laufwerke
19. Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor Studienarbeit Thorsten Geier Betreuer Dr Merten Joost 01 April 2005 Sommersemester 2005 Institut f r integrierte Naturwissenschaften Abteilung Physik Universit t Koblenz Landau Universit tsstra e 1 56070 Koblenz Inhaltsverzeichnis 1 6 EPIC TUN toire iie a A E E ER E OR E RA 4 1 1 Motivation ennen nnn annan op a iene 4 1 2 Aufgaben und Zee a 5 1 3 Entwicklungsumgebung snnnneen 5 Technische Grundlagen us wink 6 2 1 Webcam Beschreibung nenn 6 2 2 Inbetriebnahme der Kamera uu esesesasonanes 8 berblick ber die parallele Schnittstelle 9 3 1 IEE1284 Parallelport Mod 0 00 10 3 1 1 Compatible Mode use ea 10 3 1 2 Nibble Moden Akad ina aaia 11 3 1 3 Byte Mode ene e aeea EATS 11 3 1 4 Extended Parallel Port 11 3 1 5 Enhanced Capability Mode 12 3 2 Auswahl des bertragungsmodus eeeee 13 3 3 Zugriff auf den Parallelport unter Windows 14 34 Portzugriffe mit Java Ra 15 3 5 Portzugriffe mit C C a 4 cca en cee hadi ante siee 16 3 6 Installation und Benutzung von Inpout32 dll 16 3 7 Kontrollwerkzeug f r Parallelportzugriffe 18 Der GPiA Prozess0r ana 18 4 1 WIAEOPLOZESSOM unsere 19 4 2 Videokompressionsmodul 22uueesssnnnereennenne 20 4 3 KontrollproZessor
20. Bild gibt Im Allgemeinen ist die Differenzkodierung wesentlich effizienter Vorraussetzung daf r ist aber dass sich der Bildinhalt m glichst wenig ver ndert F r die Erh hung der Kompres sion benutzen beide Verfahren einen Schwellwert der festlegt mit welcher Toleranz Bildwerte als gleich anzusehen sind Beide Verfah ren sind dann verlustlos wenn der Schwellwert so eingestellt ist dass nur wirklich identische Werte als gleich gelten In der Praxis macht dies bei der verwendeten Webcam jedoch keinen Sinn und erh ht nur das zu bertragende Datenvolumen Die beschrieben Verfahren k n nen beide gleichzeitig eingesetzt werden Der CPiA Prozessor bietet zudem die M glichkeit die Kompression auf Automatik zu setzen CLK400H LOWPO NORM POWER MANAGEMENT REGISTERS INTERFAC Abbildung 17 Das CPiA Videokompressionsmodul 4 3 Kontrollprozessor Der Kontrollprozessor steuert den Videoprozessor und Videokom pressor Er kontrolliert die automatische Blende Belichtung und die Farbbalance der Videobilder Zudem tibernimmt er die Kommunikati on mit dem PC ber parallele Schnittstelle Diese h lt sich an Vorga ben der IEEE1284 f r die parallele Schnittstelle F r an die Kamera gerichtete Nachrichten wird immer der ECP Modus verwendet F r Datentransport von der Kamera zum PC benutzt der Kontrollprozessor entweder ECP oder den Nibble Modus falls der Port als nicht bidirek tional erkannt wird Zudem werde
21. Bilder von seiner Umgebung bertragen kann Im Vergleich zu einfachen Webcams sind Netcams wesentlich teurer in der Anschaffung Je nach Funktionsumfang ergibt sich ein Aufpreis von ca 100 bis 200 Euro Die hohen Anschaffungskosten k nnen als ein Grund angesehen werden eine Netcam selbst zu bauen Basis zur Realisierung einer selbstgebauten Netcam sind eine Webcam und ein g nstiger programmierbarer Controller mit einer Netzwerk und einer weiteren Schnittstelle zum Anschluss der Webcam Alternativ zu heu tigen Webcams mit USB Anschluss kommen f r dieses Projekt auch ltere Webcams zum Anschluss an den Parallelport in Betracht da sich die Ansteuerung des Parallelports im Controller leichter realisie ren l sst Getestet wird die Realisierung mit einer Video Blaster WebCam II von Creative Labs Damit die Kamera am Parallelport des Controllers steuerbar ist muss aber zun chst ermittelt werden wie die Kamera berhaupt angesprochen wird Mit diesem Teilproblem besch ftigt sich diese Studienarbeit im Folgenden 1 2 Aufgaben und Ziele Die generelle Zielsetzung der Studienarbeit ist es Wissen ber die Ansteuerung der verwendeten Creative VideoBlaster II Kamera und deren CPiA Controller zu sammeln Neben der Inbetriebnahme der Kamera und dem Ansprechen des Parallelports liegt der Schwerpunkt der Studienarbeit in der Programmierung einer Software zum Steuern der Kamera Die Software sollte die M glichkeit bieten die grundle genden F hi
22. CLINK_TransferMsg erh lt als Eingaben die Anzahl der zu bertra genden Bytes und einen Verweis auf die Daten Diese werden je nach erkanntem Parallelport automatisch per ECP SimECP oder im Nibble Modus unter R ckgriff der Methoden aus pport c an die Ka mera bertragen Um Bilddaten von der Kamera zu lesen wird CLINK_UploadStreamData benutzt Durch den Aufruf wird der von CPiA Chip produzierte Datenstrom eines Bildes gelesen Der Aufruf darf erst nach Aufnehmen einens Bildes erfolgen wenn die Kamera im Zustand STREAM_READY ist Als Parameter erh lt diese Methode ebenfalls Verweise auf einen Buffer zur Datenablage Byte zahl und die aktuell gelesenen Bytes 5 2 2 cmd h und cpia_cmd c Cmd h und cpia_cmd c enthalten die Definitionen und Implementie rung aller Steuerbefehle in entsprechenden Methoden f r CPiA Controller D h Cpia_command c umfasst alle Befehle die im Soft ware Developer s Guide for CPiA Cameras beschrieben sind Die Be fehle dienen der Einstellung aller Parameter f r den Videoprozessor z B Belichtung Farbparameter den Kontrollprozessor z B HiPo wer BaudRate GrabMode sowie das Videokompressionsmodul z B Kompressionsrate Bei Aufruf einer der Methoden aus cpia_cmd c mit passenden Parametern wird der entsprechende Befehl erstellt und ber CLINK_TransferMsg an die Kamera geleitet Je nach Befehl werden Antworten der Kamera ebenfalls ausgelesen und stehen dann zur Auswertung zu Verf gung 5 2 3
23. _READY ber die while Schleife wird der Status der Kamera solange berpr ft bis dieses Ereignis Eintritt Sobald die Webcam bereit ist wird die Daten bertragung per CPiA_UploadStreamData gestartet Genauer beschrieben CPiA_UploadStreamData ruft CLINK_UploadStreamData zur Daten bertragung auf Die bertragenen Bilddaten werden in den be reitgestellten Buffer geschrieben int SingleGrab unsigned long actual_bytes unsigned char streamState bool rtn Capture process rtn CPIA_GrabFrame 0 if rtn printf CPIA_GrabFrame failed n do rtn CPIA_GetCameraStatus NULL NULL amp streamState NULL NULL NULL NULL NULL if rtn printf CPIA_GetCameraStatus failed n break while streamState STREAM_READY Transfer process Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor rtn CPIA_UploadStreamData STREAM_BUFFER_LEN gStreamBuffer amp actual_bytes 1024 if rtn printf CPIA_UploadStreamData failed n printf UploadImage Image uploaded lu bytes n actual_bytes return 1 Abbildung 23 SingleGrab Die weitere Verarbeitung der Bilddaten wird unabh ngig von der Ka mera durchgef hrt Mit dem Aufruf von verifyAndFormat wird das im Buffer abgelegte Frame dekomprimiert und in 24 Bit RGB Werte transformiert Dies ist n tig da die Bilder in einem PPM Format ge speichert werden sollen Das PPM Format Portable Pixel Map bietet
24. amData u n nuen nnanann 39 1 Einleitung 1 1 Motivation Webcams sind mittlerweile sehr weit verbreitet und werden z B f r Videochat und Videotelefonie benutzt Durch ihre einfache Inbe triebnahme und Handhabung sind sie unter Computernutzern sehr beliebt Gr ter Nachteil der Webcams ist dass man sie nur dann zur Bild oder Videoaufnahme benutzen kann wenn sie an einen Compu ter angeschlossen sind und dieser auch eingeschaltet ist Zur Raum berwachung f r eine Alarmanlage bieten sich einfache Webcams daher nicht an F r eine Webcam die kontinuierlich Bilder aufnimmt und an einen Webserver schickt braucht man immer einen Computer der die Kamera ansteuert die Bilder entgegen nimmt und diese dann an den Webserver weiterleitet F r diesen Einsatzzweck gibt es Web cams mit Netzwerkanschluss sog Network Cameras oder Netcams Diese Kameras lassen sich direkt an ein Netzwerk anschlie en und ber eine eigene IP Adresse ansteuern Teilweise haben die Netz werkkameras eine RISC CPU mit Speicher und einem Mini Linux als Betriebssystem an Bord Diese Kameras k nnen dann direkt als Web Server fungieren Neben dem Anschluss ber 10BaseT 100BaseTX Ethernet ber eine RJ 45 Buchse gibt es auch NetCams die ber WLan kommunizieren Dies erm glicht den mobilen Einsatz der NetCams u a auch in Modellbauflugzeugen oder Autos Ange dacht ist der Bau eines autonomen Fahrzeugs das mit einer Netcam ausgestattet ist und somit
25. bcam sourceforge net http sourceforge net projects cpiawindows http www logix4u net inpout32 htm http java sun com products javacomm http www geocities com Juanga69 parport http www naughter com http neil fraser name software Itp http www trolltech com http www supportnet de http www mikrocontroller net http www tutorials de
26. eNumber 1000 long end clock printf Time d n end start 1000 imageNumber 1000 Abbildung 26 ContinousGrab F r die kontinuierliche Bildaufnahme kann die Methode Continu ousGrab verwendet werden Nach bertragung der Aufnahmepa rameter wird SingleGrab zusammen mit verifyAndFormat und saveBufferToFile in einer Schleife aufgerufen Die Schleife wird verlassen sobald eine Taste gedr ckt wird oder nachdem 100 Bilder aufgenommen worden sind Dabei werden die Bilder mit fortlaufen den Nummern gespeichert Aufnahmezeiten f r100 Bilder ohne Farbkonvertierung und Speichern der Dateien Kompression off on on off Decimation off on off on QCIF 4 2 0 26s 4s 14s 20s QCIF 4 2 2 36s 6s 20s 20s CIF 4 2 0 106s 9s 37s 70s CIF 4 2 2 139s 20s 47s 71s Abbildung 27 Aufnahmezeiten f r ContinuousGrab Eine alternative M glichkeit kontinuierlich Bilder aufzunehmen be steht in der Nutzung von StreamGrab Hierbei sendet die Kamera von sich aus automatisch ein Frame nach dem anderen Es muss also nicht f r jedes Einzelbild SingleGrab aufgerufen werden CPiA_SetGrabMode 1 aktiviert den kontinuierlichen Aufnahmemo dus CPIA_InitStreamCap versetzt die Kamea in den Stream Captu re Modus In diesem Modus werden GrabFrame und UploadFrame Befehle z B durch SingleGrab ausgel st ignoriert Erst wenn der Modus ber CPIA_FiniStreamCap wieder beendet wird werden GrabFrame und UploadFrame Befehle wieder a
27. en Die Adresse des Datenregisters entspricht der Basisadresse Das Statusregister Basisadresse 1h kann nur gelesen werden Da tentransferrichtung vom Ger t zum PC Die Bits werden vom ange Studienarbeit Thorsten Geier 9 schlossenen Ger t gesetzt und dienen der Statusriickmeldung an den PC Die Bezeichnungen der Statusbits wie z B PaperOut lassen sich damit erkl ren dass die parallele Schnittstelle urspr nglich nur f r den Anschluss von Druckern konzipiert worden ist ber die Basisadresse 2h kann das Steuerregister beschrieben und gelesen werden Datentransferrichtung vom PC zum Ger t Durch setzten des DataDirection Bits l sst sich der Druckerport auch bidirek tional betreiben was urspr nglich nicht vorgesehen war D h Ger te sollten nur ihren Status an den PC zur ckmelden aber sonst keine Daten an ihn senden 3 1 TIEE1284 Parallelport Modi Erst seit 1994 ist der Parallelport durch Einf hrung des IEE1284 Standards offiziell auf bidirektionalen Betrieb erweitert worden IEE1284 beschreibt f nf verschiedene Betriebsarten f r den Parallel port Diese sind e Compatible Mode Nibble Mode Byte Mode Extended Parallel Port Enhanced Capability Mode 3 1 1 Compatible Mode Der Compatible Mode auch SPP verh lt sich wie der urspr ngliche Centronics Port um die Kompatibilit t zu lteren Ger ten zu gew hr leisten Die maximale Daten bertragungsrate f r diesen Modus be tr gt 150 Kbyte pro Sekunde
28. erwendeten Ein stellungen aus jedem Frameheader auslesen FormatStream arbeitet sehr effektiv da Dekompression und Farbraumkonvertierung in einem Schritt ausgef hrt werden Bei aktivierter Differenzkodierung werden nur die Pixel bertragen die sich um einen gewissen Betrag in ihrem Farbwert ver ndert haben Nur diese Pixel konvertiert FormatStream in den gew nschten Farbraum und berschreibt die betroffenen Farb werte im Ausgabebuffer Zuerst ein vollst ndiges Bild zu erstellen und dieses dann komplett in einen anderen Farbraum zu transformieren w re ineffizienter Diese Vorgehensweise tritt aber genau dann ein wenn keine Kompression verwendet wird Sowohl die Daten bertra gung als auch die Farbraumkonvertierung dauern in diesem Fall we sentlich l nger Es ist also in jedem Fall empfehlenswert die Kom pression zu aktivieren Zudem sollte nicht unerw hnt bleiben dass die Konvertierung von YUV nach RGB recht teuer ist und daher nur durchgef hrt werden sollte wenn es wirklich notwendig ist COLOUR_FORMAT FormatToSupplyFourCC unsigned long FourCC FourCC code for output format unsigned short BitDepth bit depth for rgb fourcc s COLOUR_FORMAT colourformat NOT_SUPPORTED switch FourCC case FOURCC_BI_RGB case FOURCC_RGB switch BitDepth case 8 colourformat NOT_SUPPORTED break case 16 colourformat RGB16 break case 24 colourformat RGB24 break case 32 colourformat RGB32
29. f r Parallelportzugriffe Als sehr n tzlich hat sich das Programm Parallel Port Monitor von Neil Fraser erwiesen Das Programm berwacht einen gew hlten Pa rallelport und zeigt dessen aktuelle Belegung des Daten Status und Steuerregisters an Die Software arbeitet im Hintergrund und erlaubt anderen Programmen weiterhin den Zugriff auf den Port Ob eine Da ten bertragung stattfindet l sst sich somit leicht kontrollieren Ferner bietet das Programm auch die M glichkeit die Bits im Daten und im Steuerregister per Mausklick zu manipulieren Rn Parallel port monitor Data output register _ r Parallel part 0 Databito C LPTI 3B Data bit 1 LPT 378 Data bit 2 C LPT 278 IV Databit3 Data bit 4 IV Data bit 5 pin 8 Data bit 6 pind IV Data bit 7 Control register Feedback register _ pind I Strobe pin 15 Eror pin14 F Auto line feed pin 13 IV Select pin 16 IV Initialise printer pin 12 I Out of paper pint IV Select input pin 10 IV Acknowledge IV Interupt enable pin 11 T Busy Tristate outputs Abbildung 14 Parallel port monitor 4 Der CPiA Prozessor Das Herzstiick der benutzten Videoblaster Webcam II von Creative bildet der CPiA Color Processor Interface ASIC Chip Hier findet die Bildvorverarbeitung und die Kommunikation mit der Au enwelt statt Der CPiA Chip besteht aus drei Modulen Einem Videoprozessor VP einem Videokompressor VC und einem Kontrollprozessor CP
30. f r die weitere Verwendung des Programms alle M glichkeiten offen zu halten sind die Leseoperatio nen sowohl im ECP Modus als auch im Nibble Modus realisiert Get Packet wird direkt im Anschluss an SendPackage verwendet wenn der CPiA Befehl Status Daten von der Kamera anfordert Analog zu SendPacket wird nach dem Aufruf erst der Transfermo dus festgelegt Dementsprechend wird entweder NibbleRead Buffer oder ECPReadBuffer aufgerufen Die beiden Methoden lesen je weils so viele Byte wie es der bergebene Parameter Bytes vorgibt Dabei muss die Methode NibbleReadBuffer beachten dass jedes Byte in zwei H lften bertragen wird Nach dem Einlesen der Daten wird die Ausf hrung von GetPacket durch TransferEnd abgeschlossen int ECPReadBuffer int uploadMode unsigned char Data unsigned long Bytes int i c if uploadMode ECP_DATA_IN ECP_INIT_OFF event 39 for i 0 i lt Bytes i set_ECP_CONTROL 0x22 while ECP_ACK true event 43 Data i get_ECP_DATA set_ECP_CONTROL 0x20 while ECP_ACK false event 45 if uploadMode ECP_INIT_ON event 39 return 1 Abbildung 35 ECPReadBuffer 5 5 3 UploadStreamData UploadStreamData wird zum Empfangen der Bilddaten verwendet Zur Aufnahme eines Bildes wird zuvor ein SendPacket g_ucPktGrabFrame an die Kamera gesendet Mit dem Befehl Send Packet g_ucPktGetStatus wird festgestellt wann die Kamera zur
31. gO start NormalPriority else exit void Thread stopOf abort true void Thread run while abort int stopH 0 int stopW 0 int lines 288 int cols 352 unsigned int rgb int bufferPos int stop 0 bool rtn get Image singleGrab if getVideoSize lines 144 cols 176 stopH 144 stopW 176 Qlmage image cols lines QImage Format_RGB32 get Image Data uchar buffer getBuffer sort Data and set Pixel in output Image for lines 288 lines gt stopH lines for cols 352 cols gt stopW cols bufferPos 352 3 lines cols 3 rgb qRgb buffer bufferPos 2 buffer bufferPos 1 buffer bufferPos image setPixel 352 cols 288 lines rgb emit imageGrabbed image Abbildung 31 Thread zur Bildaufnahme 5 5 XsmallVersion Eine weitere Programmversion zur Ansteuerung der VideoBlaster II Webcam tr gt den Namen XsmallVersion Bei dieser Version wird die Kamera sehr hardwarenah angesprochen Die Steuerbefehle werden direkt an den Parallelport gesendet Das Auslesen des Ports erfolgt ebenso direkt Bei den anderen Version lief die Steuerung der Kamera ber die Methoden in pport c cpia_link c und cpia_cmd c Zus tzlich waren noch die Befehlsdefinitionen in cmd h n tig In der XsmallVer sion sind alle n tigen Befehle und Methoden zur Steuerung sowie Daten bertragung in der Datei camera c enthalten Wiederholung des Aufbaus der Steuerbefehle Alle CPiA Ste
32. gh for a minimum of 1uS before lre asserting This signal should be driven inactive as a positive acknowledgment from the peripheral that transfer of data or address is completed The signal is active low It should be driven active as an indication that the device is eady for the next address or data transfer This signal is actrve low When driven active low this signal initiates a termination cycle that results in the interface retuming to Compatibil ity Mode This signal is manufacturer specific and beyond the scope of this standard It is commonly used to indicate data is available as in ECP mode Abbildung 7 EPP Modus 3 1 5 Enhanced Capability Mode Der Enhanced Capability Mode ECP ist ebenso wie der EPP ab wartskompatibel und bietet weitere Register zur Nutzung Hinzu kommt noch die Fahigkeit verlustlose RLE Komprimierung bei der Datern bertragung einzusetzen Au erdem verf gt der ECP Modus ber einen 16 k gro en FIFO First in first out Buffer mit DMA und Interruptf higkeiten Die Daten bertragungsrate betr gt ebenfalls ma ximal 2 Mbyte pro Sekunde ECP Mode signal Compatibility ECP Mode signal description name Mode signal name HostClk nStrobe Used in a closed loop handshake with PeriphAck Busy to transfer data or address information from the host to the peripheral Datal Data8 Datal Data8 Host to peripheral or peripheral to host address or data PeriphCik nAck Used in a closed loop ha
33. gkeiten der Kamera zu nutzen Dazu geh rt die Aufnahme von Bildern und die bertragung der Bilder an den Computer Alle daf r notwendigen Aufnahmeparameter sollten ebenfalls von der Software mit CPiA Befehlen gesetzt werden k nnen Zus tzlich sollte die erstellte Software in der Lage sein die von der Kamera bermittel ten Bildinformationen zu verarbeiten Die bertragenen Bilder sollten dargestellt oder in einem lesbaren Bildformat gespeichert werden k nnen Im Hinblick auf die Tatsache dass die Kamera sp ter direkt an einen Controller angeschlossen werden soll sollte die Ansteuerung der Ka mera so beschaffen sein dass sie sich sp ter mit wenig Aufwand auf den Controller bertragen l sst 1 3 Entwicklungsumgebung Zum Einsatz kommt ein Computer mit Pentium 4 Prozessor und 2 GHz Prozessortakt mit WindowsXP als Betriebssystem Wobei die Prozessorgeschwindigkeit f r die Studienarbeit vernachl ssigbar ist Wichtiger sind das Vorhandensein von PS2 Tastaturanschlu und der Druckerport zum Anschluss der Kamera Als Programmierumgebun gen kommen f r Java Eclipse und f r C C VisualStudio und DevC zum Einsatz F r die Entwicklung einer grafischen Benut zeroberfl che zus tzlich noch eine Testversion von Qt 4 0 des Herstel lers Trolltech 2 Technische Grundlagen 2 1 Webcam Beschreibung Die verwendete Video Blaster WebCam II von Creative Labs stammt aus dem Jahr 1998 Da mittlerweile zahlreiche Nachfolgemodelle he rausgek
34. ignals Abbildung 8 ECP Modus vgl S 682 703 PC Werkstatt Studienarbeit Thorsten Geier 12 Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor Pin Richtung Compatible Nibble Strobe HostClk HostClk Write 3 mercem stove onic sone 2 mecen oa foan foa o roem ome foe a reece owas fos s rce omas omas fons e recem owas omas omas u 5 gt oO oa 10 Ger t PC PtrClk Interrupt Ger t PC_ Busy Data3 7 PtrBusy Periphack Wait Select Dans DD zes Userdefinz 14 Datastrb wis Ss er ee Chassis GND Peripheral Logic High la e oe emere remit naa 0 6 seta rerteue Dede nicht definiert PC Ger t Selectin Abbildung 9 IEEE1284 Modi 2 N N foa m 3 2 Auswahl des bertragungsmodus F r die Ansteuerung der Creative Video Blaster II Webcam in Ver bindung mit einem Controller kommen theoretisch alle f nf bertra gungsmodi in Betracht Allerdings ist die Ansteuerung im vollen ECP Modus durch DMA und Interrupts sehr aufwendig Welcher Modus zum Einsatz kommt ist in erster Linie davon abh ngig welche Modi Kamera und Controller unterst tzen Zumindest f r die Kamera ist im Handbuch angegeben dass der Standard Drucker Port also SPP 8 Bit bidirektional Byte oder EPP und ECP Enhanced Modus unter st tzt werden Ob die Kamera die vollen 2 Mbyte
35. itialisierung der inpout32 dll n nneeeennn 17 Abbildung 14 Parallel port monitor n se 18 Abbildung 15 CPiA System Block Diagramm uuseesseeeeeeeeeeeeeeeennnn 19 Abbildung 16 Die CPiA Bilddatenverarbeitung u 19 Abbildung 17 Das CPiA Videokompressionsmodul 20 Abbildung 18 Benutzte Parallelport Pins eessnennsseeeeeeeennnn 21 Abbildung 19 YUVPixeltoRGB24 annnnnessssssssnnnnnnnnnnnnnnnnnnnnnnnnnnnn 24 Abbildung 20 Format ToSupplyFourCC neeeeeeeeeeeeeeeeeeeeeeeeeeeeeennn 26 Abbildung 21 Bildgr en ohne Kompression 26 Abbildung 22 Frameheader ananswnnceaneiahen ee 27 Abbildung 23 SingleGrab ass ra eek 29 Abbildung 24 Erstes Bild ohne ge nderter Pixelfolge und VENQUSCHICH RB Werten meiiens ainia ae fi 29 Abbildung 25 SaveBufferToFile u As en 30 Abbildung 26 ContinousGrab c ssssssssssessssssssnssnnssnsanensanaees 31 Abbildung 27 Aufnahmezeiten f r ContinuousGrab 31 Abbildung 28 StreamGrab sauce 32 Abbildung 29 SmallVersionECP Benutzermen u 33 Abbildung 30 CamMonitor mit grafischer Benutzeroberfldche 34 Abbildung 31 Thread zur Bildaufnahme n 36 Abbildung 32 Der Befehl GetCPiA Version 36 Abbildung 33 SCHOPACKEL Sun abe 37 Abbildung 34 WriteBuffen siceasiccscvssxsdiptess las sasshtistassndsseasestivtesindes 38 Abbildung 35 ECPReadBuffer aan 38 Abbildung 36 UploadStre
36. n auch im ECP Modus nur das Da ten Status und Steuerregister verwendet H_STROBE P_STROBE H_AUTOFD P_AUTOFD H_INIT P_INIT H_SELECTIN P_SELECTIN Control Control Host PC Pass Parallel CPiA Device through Port Port HLFAULT P_FAULT H_ACK PLACK H_BUSY P_BUSY H_PERROR P_PERROR H_SELECT P_SELECT HP_DATAG7 Abbildung 18 Benutzte Parallelport Pins Data is transfered in 8 byte packets each packet being preceeded by the 1284 negotiation and setup sequences and terminated with a 1284 termination sequence Commands are passed to CPiA in a single 8 byte packet termed a command transfer This can optionally be fol lowed by the transfer of a data transfer Bytes within the command packet are used to specify whether a data packet is to follow and its direction Most commands are not accompanied by data packets Die Kommandos zur Steuerung des CPiA Prozessors und somit der Kamera sind im Dokument Software Developer s Guide for CPiA Cameras n her beschrieben Vision CPiA Data Sheet pdf Kap 2 2 5 8 Command Status Transfers 5 Ansteuerung der Kamera 5 1 Vorhandener Quellcode Unter Sourceforge findet sich ein Projekt das sich ebenfalls der An steuerung von Webcams mit CPiA Controller widmet Im Rahmen der GNU Public License sind dort Quellcodedateien von STMicroe lectronics ver ffentlicht Windows ppc2 tar gz enth lt rund 65 Dateien und pp test zip 10 Da teien in der Programmiersprache C Let
37. ndshake with HostAck nAutoFd to transfer data from the peripheral to the host PeriphAck Busy The peripheral uses this signal for flow control in the forward direction PeriphAck also provides a ninth data bit used to determine whether command or data information is present on the data signals in the reverse direction See section 6 9 and figure 14 events 42 46 HostAck nAutoFd The host drives this signal for flow control in the reverse direction It is used in an interlocked handshake with PeriphClk nAck HostAck also rovides a ninth data bit that is used to determine whether command or data information is present on the data signals in the forward direction See section 6 9 and figure 13 events 34 32 NReverseRequest ninit This signal is driven low to place the channel in the reverse direction While in the ECP Mode the peripheral is only allowed to drive the bidi rectional data signals when nReverseRequest is low and IEEE 1284 Active is high NPeriphRequest nFault During ECP Mode the peripheral shall drive this pin low to request communications with the host This signal provides a mechanism for peer to peer communication This signal would be typically used to generate an interrupt to the host This signal 1s valid in the forward and reverse directions NAckReverse The peripheral drives this signal low to acknowledge nReverseRequest The host relies upon nAckReverse to determine when it is permitted to drive the data s
38. ntem Port stehen verschieden bertragungsmodi f r den Datentransfer be reit Neben ECP und Nibble gibt es noch einen weiteren Modus Na mens SimECP Dieser Modus ist schneller als eine reine Nibble bertragung und fast so schnell wie der normale ECP Modus F r die bertragung stehen f r jeden Modus Schreib und Lesemethoden be reit z B ECPWriteBuffer ECPReadBuffer ber die Methode setTransferMode kann der bertragungsmodus auch manuell aus gew hlt werden Generell werden alle Schreib oder Lesezugriffe auf i http webcam sourceforge net die Kamera ber pport c ausgef hrt Da die vorhandenen Methoden inp und outp unter WindowsXP nicht auf den Druckerport zugrei fen d rfen werden sie auf inp_32 und outp_32 umgeleitet ber comm c ist die inpout32 dll f r den Portzugriff eingebunden In comm c ist die Initialisierungsmethode COMM_Init bool test bool writeToFile um zwei Parameter erweitert Mit dem ersten bool Wert wird beim Initialisieren explizit ein Lese und Schreibtest auf den Pa rallelport ausgef hrt Mit dem zweiten Parameter kann s mtlicher Datentransport ber inp_32 bzw outp_32 in eine Textdatei pro tokolliert werden Auf pport c baut cpialink c auf Auch hier gibt Methoden zur Initiali sierung und Portdetektion Diese verwenden u a die von pport c be reitgestellten Funktionen Die wichtigsten Methoden von cpialink c sind CLINK_TransferMsg und CLINK_UploadStreamData
39. oden die zur Ausf hrung bereit stehen Actions k nnen z B Eintr ge in der Men struktur sein ber ein connect k nnen Ac tions Oberfl chenelemente und Signale mit Slots verbunden werden EX Studienarbeit WebCam File Help CiF422 Q CIF 4 2 0 Q QC 4 22 Q QCIF 420 Abbildung 30 CamMonitor mit grafischer Benutzeroberfl che Studienarbeit Thorsten Geier w K 5 4 2 thread cpp Nach dem Start des Programms wird von der main Methode die GUI gestartet Mit einem Klick auf den Startknopf oder Start im Filemenii wird der Slot start aufgerufen Hier wird zun chst die Kamera an einem der drei LPT Ports gesucht und mit startCamControl der Datenaustausch mit der Kamera vorbereitet Nach erfolgreicher Initia lisierung ffnet sich ein Fenster mit den Versionsdaten der Kamera firmware und des Videoprozessors Im n chsten Schritt wird dann der Bildaufnahmethread gestartet und die Zust nde der Bedienelemente aktualisiert Ist der Thread gestartet nimmt er kontinuierlich Bilder auf Die Bild informationen werden dekomprimiert und in RGB Werte transfor miert Aus den RGB Werten wird schlie lich ein QImage erstellt Sobald dies geschehen ist wird ein Signal ausgel st das den Slot dis play const Olmage amp image startet und die Darstellung des QImages in der Oberfl che aktualisiert Thread Thread QObject parent QThread parent restart false abort false void Thread grablmage if lisRunnin
40. ommen sind ist diese Kamera fast nur noch gebraucht zu be kommen Als Bezugsquelle dient das Online Auktionshaus Ebay Die Preise liegen bei etwa einem bis f nf Euro pro Kamera Zu den technischen Daten Anschluss 25 pol Sub D zum Anschluss an Parallel Port Schnittstelle Stromversorgung ber DIN oder PS2 Tastatur Adapter Sensor Vision VM6426 ColorMOS Bildsensor Aufl sung Videomodus 160 x 120 176 x 144 320 x 240 352 x 288 Standbildmodus 160 x 120 176 x 144 320 x 240 352 x 288 640 x 480 interpoliert 704 x 576 interpoliert Empfindlichkeit 15 lux bei 7 5 fps Geschwindigkeit max 20 fps im 352 x 288 Video Mode max 30 fps im 176 x 144 Video Mode Video Formate 24 und 16 Bit RGB 8 Bit RGB mit Farbpalette 4 2 0 YUV planar YUV2 UYVY YUV9 Belichtung automatisch oder manuell per Software Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor Farbbalance automatisch oder manuell per Software Blickwinkel 52 horizontal Tiefensch rfe 50 Millimeter bis unendlich Port Standard unidirektionaler Drucker Port Kompatibilit t 8 Bit bidirektional ECP Enhanced Modus Abbildung 1 Technische Daten Das Geh use der Kamera ist recht kompakt Die Kamera besitzt kei nen Autofokus Zur Einstellung der Fokussierung muss die Objektiv linse per Hand gedreht werden F r den Anschluss an einen aktuellen PC muss dieser ber einen Druckerport und eine PS2 Tastatur Buchse verf gen Ben tigt
41. ostBusy Select nAutoFd nDataAvail nFault 1 Vid Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor 3 1 2 Nibble Mode Bei Verwendung des Nibble Modes werden vier Bit des Statusregis ters zur Daten bertragung vom Ger t zum PC benutzt Da nur vier Bit zur Verf gung stehen wird ein Byte in zwei H lften bertragen Das Datenregister wird im Nibble Mode nicht verwendet Die maximale Daten bertragungsrate f r diesen Modus betr gt 50 Kbyte pro Sekun de 3 1 3 Byte Mode Im Byte Mode werden die Daten vom PC zum Ger t als auch vom Ger t zum PC ber das Datenregister bertragen Im Gegensatz zum Nibble Mode werden die Daten byteweise gesendet bzw empfangen Die bertragungsrichtung wird im Steuerregister ber das DataDirec tion Bit festgelegt Die maximale Daten bertragungsrate f r diesen Modus betr gt 150 Kbyte pro Sekunde Byte Mode Compatibility signal name Mode signal Byte Mode signal description HostClk nStrobe Will be pulsed low during Byte Mode transfers The penpheral shall ensure that HostClk nStrobe does not cause data to be latched when Datal Data8 Datal_Data8 PirCik nAck Reverse data transfer phase Used to qualify data being sent to the host PtrBusy y AckDataReq PError everse data transfer phase Set low to indicate that the host can receive peripheral to host data then set high to acknowledge
42. r Kamera getestet 5 3 SmallVersionECP SmallVersionECP ist eine Folgeversion von PP_Test Es bietet ann hernd die gleichen Funktionen ist aber im Umfang des Quellcodes deutlich reduziert Die gr ten nderungen betreffen cpia_cmd c cpia_link c und decode c Hier wurden zu Gunsten der bersichtlich keit viele Methoden die nicht gebraucht werden aus dem Quellcode entfernt Gravierende nderungen an der Funktionsweise gibt es je doch nicht Die Bedienung des Programms erfolgt wie bei PP_Test ber ein Textmen inpout32 dll ready for use Log to file ready LPT1 at 8x378 ECP 4 Bit DeviceID MFG ULSI Vision Ltd MDL PPC2 Gamera CMD CPIA_1 28 5CLS MEDIA DES Paral lel Port Camera SmartCam v8 99 q Port Info J Get Version e Force Reset Single Gr gt Continuous Grab 1B8 Resolution Compression c Framerate Abbildung 29 SmallVersionECP Benutzermenii 5 4 CamMonitor CamMonitor ist ein Programm zur Bedienung der Creative Vide oBlaster II Webcam mit einer grafischen Benutzeroberfl che Das Programm bietet die M glichkeit die Bild bertragung der Kamera per Mausklick zu starten und als Livestream im Fenster zu betrachten W hrend des Betriebs k nnen zudem das Bildformat und die Kom pression ge ndert werden Die Oberfl che wurde mit einer Testversion der GUI Bibliothek Qt 4 0 von Trolltech realisiert Basis f r die Ansteuerung der Kamera ist SmallVersionECP auf das die GUI aufbaut
43. receipt of hat byte Following a reverse channel transfer the interface transitions o idle phase when HostBusy nAutoFd 1s set low and the peripheral has no data available Reverse idle phase Set high in response to PtrClk nAck low pulse to re enter reverse data transfer phase If set high with IEEE 1284 Active nSelectIn set low the IEEE 1284 idle phase is aborted and the interface returns to Compatibility Mode set low to indicate that the peripheral has data to send to the host HostBusy nDataAvail nFault Abbildung 6 Byte Modus 3 1 4 Extended Parallel Port Der Extendet Parallel Port EPP ist abw rtskompatibel zum SPP Mo dus Neben dem Daten Status und Steuerregister bietet der EPP die M glichkeit f nf weiter Register zur Daten bertragung zu nutzen Die zus tzlichen Register befinden sich von Basisadresse 3h bis Basisad resse 7h Die Daten bertragungsrate betr gt maximal 2 Mbyte pro Sekunde Studienarbeit Thorsten Geier 11 Ansteuerung einer Parallelport Webcam mit CPiA Videoprozessor ompatibility EPP Mode signal description name Iode signal name InWrite Strobe Set low to denote an address or data write operation to the peripheral Set a high to denote an address or data read operation from the peripheral Host to peripheral or peripheral to host address or data Used by the peripheral to interrupt the host This signal is pulsed low for a minimum of 500nS and must be raised hi
44. s im ECP Modus zur Daten bertragung nutzen kann bleibt vorerst ungekl rt Nach Ver Studienarbeit Thorsten Geier suchen mit der zur Kamera mitgelieferten Software Webcam Monitor liegt die Vermutung nahe dass der ECP Modus in einer abw rtskom patiblen Einstellung betrieben wird da die durchschnittliche bertra gungsgeschwindigkeit bei ca 150 Kbytes pro Sekunde zu liegen scheint 3 3 Zugriff auf den Parallelport unter Windows Die erste gro e H rde f r eine erfolgreiche Kommunikation mit der Kamera ist die Ansteuerung der Parallelports In den meisten Pro grammiersprachen gibt es Befehle zum Auslesen und Schreiben von Daten am Druckerport z B _inp oder _outp Diese Lese und Schreibzugriffe funktionieren unter lteren DOS Systemen Win dows95 und Windows98 ohne Probleme Mit der Einf hrung von WindowsNT hat sich dies jedoch ge ndert Being a very secure operating system Windows NT assigns some privileges and restrictions to different types of programs running on it It classifies all the programs in to two categories User mode and Ker nel mode ie running in ring3 and ring0 modes User mode programs are running in ring3 mode and Kernel mode programs are running in ringO mode The programs you generally write falls in the user mode category The user mode programs are restricted to use certain instruc tions like IN OUT etc Whenever the operating system finds that a user mode program is trying to execute such instr
45. uctions the operat ing system stops execution of those programs and will display an error message Mit anderen Worten WindowsNT Windows2000 und WindowsXP verbieten Zugriffe auf den Parallelport im User Mode Beim Versuch auf den Druckerport mit einem selbstgeschriebenen Programm zu zugreifen erscheint eine Fehlermeldung PARTEST1 EXE Application Error S p x The exception Privileged instruction 0xc0000096 occurred in the application at location Ox0040bc27 Click on OK to terminate the program Click on CANCEL to debug the program Cancel Abbildung 10 Fehlermeldung unter Windows XP 1 http www logix4u net inpout32 htm Kernel mode programs are in no way restricted in executing such instructions Device drivers are capable of running in kernel mode So the workaround for the above stated problem is to write a kernel mode driver capable of reading and writing data to parallel port and let the user mode program to communicate with it Die L sung des Problems liegt also in der Benutzung eines Pro gramms das im Kernel Mode ausgefiihrt wird und somit vollen Zugriff auf den Parallelport hat Dies kann in Form eines Ger tetrei bers geschehen der dem Benutzer eine Schnittstelle zu Kommunikati on mit dem Parallelport anbietet 3 4 Portzugriffe mit Java Urspr nglich war geplant die Kameraansteuerung in Java zu pro grammieren Java besitzt von Haus aus eine API die Java Communi cations API
46. uerbefehle bestehen aus einer Folge von acht Byte Das erste Byte bmRequestType legt fest ob eine Antwort von Ger t erwartet wird Bei einem Wert OxCO ist dies der Fall device to host transfer Ist der Wert 0x40 wird von der Kamera keine Antwort er wartet host to device transfer Eine Ausnahme bilden hier die Befeh le die eine bertragung von Bilddaten bewirken Das zweite Byte bRequest identifiziert den Befehl eindeutig Die n chsten vier Byte dienen der bergabe von notwendigen Parametern Das vorletzte Byte legt fest wie viele Bytes als Antwort auf den Befehl zu senden sind Dieser Wert wird nur gesetzt falls ein informationsanfordernder Be fehl device to host Transfer vorliegt Bedeutung der vom CPiA Chip zur ckgesendeten Bytes ist fest definiert cone Tmoaoor ou Jo oo Joan or om Abbildung 32 Der Befehl GetCPiA Version Der oben aufgef hrte Befehl GetCPiAVersion wird also durch die folgenden acht Byte repr sentiert OxCO 0x01 0x00 0x00 0x00 0x00 0x04 0x00 F r eine Ansteuerung der Kamera ohne gro en Overhead m ssen also in der Theorie lediglich Folgen von acht Bytes an den CPiA Chip ge sendet werden k nnen Diese Schreiboperation sollte gem Daten blatt im ECP Modus durchgef hrt werden F r den Empfang der Kameradaten muss der Parallelport Byteweise ausgelesen werden k nnen F r die Leseoperation kann der Daten bertragungsmodus vorher auf ECP oder Nibble Modus festgelegt werden Nach
47. usgef hrt Durch CPIA_InitStreamCap findet noch keine Aufnahme und bertragung von Bildern statt Erst durch CPIA_StartStreamCap beginnt die Kamera damit und bertr gt solange Bilder bis CPIA_StopStreamCap aufgerufen wird Durch den kontinuierlichen Upload der Bildinformationen m ssen f r die Weiterverarbeitung die einzelnen Bilder aus dem Datenstrom ext rahiert werden Der Beginn eines Frames wird durch die beiden Magic Numbers im 64 Byte langen Frameheader signalisiert Das Ende eines Frames markieren vier aufeinanderfolgende OxFF Werte Falls die bertragung weiterl uft folgen weiter OxFF Werte bis ein weiteres Frame beginnt void StreamGrab void bool rtn rtn CPIA_SetGrabMode 1 rtn CPIA_InitStreamCap 0 0 rtn CPIA_StartStreamCapQ do while _kbhit rtn CPIA_StopStreamCap rtn CPIA_FiniStreamCap Abbildung 28 StreamGrab 5 2 5 pp_test c Pp_test c stellt Methoden bereit um die Funktionalit t der Kamera und des CPiA Controllers zu testen ber den Men punkt Systemtest im Benutzermen wird die Methode DoSystemTest gestartet Do SystemTest ruft die Versionen der Firmware und des Videocontrol lers ab berpr ft den Status der Kamera und bertr gt Daten im Vision CPiA Data Sheet pdf Kap 3 9 3 End of Frame 3 11 1 Description of ECP Nibble Upload Modes Nibble und im ECP Modus von der Kamera zu Computer Weiterhin werden der Videoprozessor und das EEPROM de
48. von der Kamera bertragen werden oder wenn die Daten in ein anderes Farbformat konvertiert werden sollen Neben der Konvertie rung in RGB ist es mit den Methoden von decode c auch m glich fol gende Formate zu erhalten 1420 YV12 4 2 0 planar UYVY 4 2 2 und YUY 4 2 2 Nach der Initialisierung mit nitDecode ist es mit VerifyStream m glich die von der Kamera gelieferten Bilddaten eines Frames auf ihre Korrektheit hin zu tiberpriifen Dieser Schritt ist jedoch optional da die Bilddaten sehr zuverl ssig und immer korrekt von der Kamera bertragen werden Bei Nutzung von VerifyStream kann es unter Verwendung des QCIF Bildformates und aktivierter Kompression zu Fehlermeldungen kommen Die gelieferten Bilddaten sind aber den noch korrekt und lassen sich ohne Probleme weiter verwenden Um die Bilder sp ter in einem einfachen PPM Bildformat speichern zu k nnen werden die Bilddaten in ein RGB Format mit 24 Bit Farbtiefe umgewandelt Der gew nschte Farbraum wird mit FormatToSupply FourCC festgelegt Wichtigster Schritt ist der anschlie ende Aufruf von FormatStream Als Eingabeparameter ben tigt FormatStream ein g ltiges Farbformat Verweise auf den Buffer mit den Bilddaten und einen weiteren Buffer in dem das Frame im neuen Format gespei chert werden soll Zus tzlich werden noch die Bildgr e und eine Information ber die Kompression ben tigt Diese Angaben lassen sich auch ohne Wissen ber die zur Bildaufnahme v
49. zteres ist ein Programm zur einfachen Funktionspr fung von CPiA Webcams Da der Code aus dem Jahr 1999 stammt und zur Ausf hrung unter DOS gedacht ist l sst er sich nicht ohne aufwendige Modifikationen kompilieren Zu s tzlich sind nicht alle inkludierten Dateien im Archiv enthalten Die se sind jedoch teilweise im anderen Archiv enthalten Aus dem Bestreben den Quellcode wieder lauff hig zu machen ist eine erste Programmversion zur Ansteuerung der Creative VideoBlaster Web cam entstanden 5 2 PP_test Dieses Programm bietet die M glichkeit die grundlegenden Kamera funktionen zu testen Neben der Einstellung verschiedener Kamerapa rameter k nnen Bilder aufgenommen und auf der Festplatte im PPM Format abgespeichert werden Diese Version ist auch die Grundlage f r sp tere Programmversionen Der Quellcode umfasst 17 C Dateien mit entsprechenden Headerda teien Die Dateien lassen sich nach ihrer Funktionalit t in die vier Gruppen Datenaustausch Befehlsumsetzung Konvertierung und Steuerung aufteilen 5 2 1 pport c comm c und cpialink c F r den Datenaustausch mit der Webcam ber die parallele Schnitt stelle sind die Dateien pport c comm c und cpialink c verantwortlich Pport c definiert die Pins des Druckerports und die Daten bertra gungsmodi Nibble und ECP Mit den entsprechenden Methoden k n nen die vorhanden Druckerports detektiert und initialisiert werden so dass sie dem Programm zur Verf gung stehen Je nach erkan

Download Pdf Manuals

image

Related Search

Related Contents

Samsung NX NX300M + 18-55 OIS i-Function + SEF-8A  Notice utilisateur  uCdimm ColdFire 5272 Hardware / Firmware Reference Guide  ATH-CP500i 取扱説明書  (取扱し、上の麦主意) ※絵表示【ま注意事項を示すものであり、実際の  MANUEL DU PROPRIÉTAIRE - Hayward Pool Products  RCA TP210BKN User's Manual  Manual de Usuario v1.1  Fujitsu S26361-F2222-L600 NVIDIA Quadro K6000 12GB graphics card    

Copyright © All rights reserved.
Failed to retrieve file