.Net-Tipps zum Spielen von SLR
Dieser Artikel beschreibt die Verwendung von .Net zum Spielen von Spiegelreflexkameras
Hintergrund
Ich habe den Garten seit mehr als einem Jahr nicht mehr besucht und meine Branche gewechselt Ja, aber es ist auch lohnend, mit verschiedenen F&E-Kulturen in Kontakt zu kommen, wie zum Beispiel dem technischen Fluss im Gaming-Kreis, dem Geschäftsfluss im E-Commerce-Kreis, dem künstlerischen Fluss in den Medien Kreis usw.
Der Hintergrund dieser Anwendung ist die Automatisierung von Spiegelreflexkameras. Der Chef möchte die Programmierung für die USBSchnittstelle durchführen, aber es handelt sich um eine zu einfache Technologie, um sie zu verwendenc# ist dafür nicht sehr geeignet. Nachdem wir eine Weile gefeilscht haben, lasst es uns für die Spiegelreflexkamera tun.
Angenommen, wir benötigen N-Spiegelreflexgeräte, um auf eine Blume zu zielen, alle 30 Sekunden ein Foto aufzunehmen und es automatisch auf Weibo zu veröffentlichen.
Technische Punkte
Canon SDK
WIA-Standard
Canon SDK stellt dll NET-Entwicklern zur Verfügung zitiert, dass auf die entsprechenden Kameramodelle von Canon durch Aufrufen des SDK leicht zugegriffen werden kann, die .NET-Version des SDK jedoch keinen Zugriff auf die Daten in der Kamera bietet. Daher wird es zum Problem, die Daten in der Spiegelreflexkamera zu erhalten. Einige Schüler sind möglicherweise verwirrt. Wenn die Spiegelreflexkamera an den USB-Anschluss des Computers angeschlossen ist, wird ein Laufwerksbuchstabe generiert. Kann es nicht ausreichen, DriveInfo.GetDrives () direkt zu verwenden, um den Laufwerksbuchstabendurchlauf zu erhalten? Lassen Sie mich Sie zunächst informieren. Die Klassifizierung von USB-Slave-Geräten kann aus dem bInterfaceClass-Byte abgerufen werden, das dem USB-Geräteschnittstellendeskriptor entspricht. Typische Codes für bInterfaceClass sind 1, 2, 3, 6, 7, 8, 9, 10, 11, 255. Die jeweiligen Bedeutungen sind 1-Audio: Zeigt ein Audio-Gerät an. 2-Kommunikationsgerät: Kommunikationsgeräte wie Telefon, Moden usw. 3-HID: Mensch-Computer-Interaktionsgerät wie Tastatur, Maus usw. 6-Bild-Bildgebungsgeräte wie Scanner, Kameras usw. Manchmal können auch Digitalkameras in diese Kategorie eingeordnet werden. 7-Drucker-Klasse. Wie Einweg-, Zwei-Wege-Drucker usw. 8-Massenspeicher-Massenspeicherklasse. Alles, was über bestimmte Speicherkapazitäten verfügt, kann in diese Kategorie eingeordnet werden. Beispielsweise fallen die meisten Digitalkameras in diese Kategorie. 9-Hub-Klasse. 11-Chipkarte/Smartcard. 255 – herstellerspezifisch. Benutzerdefinierte Klasse, die hauptsächlich für einige Spezialgeräte verwendet wird. Wie Schnittstellenadapterkarte usw.
Die Gerätetypen, die unsere Laufwerksinfo erfassen kann, sind
public enum DriveType { // Summary: // The type of drive is unknown. Unknown = 0, // // Summary: // The drive does not have a root directory. NoRootDirectory = 1, // // Summary: // The drive is a removable storage device, such as a floppy disk drive or a // USB flash drive. Removable = 2, // // Summary: // The drive is a fixed disk. Fixed = 3, // // Summary: // The drive is a network drive. Network = 4, // // Summary: // The drive is an optical disc device, such as a CD or DVD-ROM. CDRom = 5, // // Summary: // The drive is a RAM disk. Ram = 6, }
Im Allgemeinen sind USB-Festplattengeräte entfernbar. Die Spiegelreflexkamera ist jedoch ein tragbares Gerät und dieser Typ kann nicht mit der GetDrives-Methode abgerufen werden. Windows Systems32 bietet eine Reihe von API-Methoden für tragbare Geräte
Hier wähle ich WIA, die Abkürzung für Windows Die derzeit verfügbare Version ist WIA 1.0, ein digitaler Bilderfassungsdienst , der in Windows Millennium Edition (Windows Me) oder höheren Versionen von Windows-Systemen bereitgestellt wird. Er kann auch zur Verwaltung digitaler Bilderfassungsgeräte verwendet werden . WIA ist eine COM-Komponente, die mithilfe von Out-of-Process-Diensten implementiert wird. WIA vermeidet Leistungseinbußen während der Bilddatenübertragung, indem es einen eigenen Datenübertragungsmechanismus bereitstellt (IWiaDataTransfer-Schnittstelle). Die leistungsstarke IWiaDataTransfer-Schnittstelle nutzt Shared Memory, um Daten an Client-Programme zu übertragen. WIA besteht aus drei Hauptkomponenten: Geräte-Manager, Minidriver-Dienstbibliothek und Geräte-Minidriver.
◆Geräte-Manager: Bildgeräte aufzählen, Geräteattribute abrufen,
Ereignisse für Geräte erstellen und Geräte-Objekte erstellen; ◆Minidriver-Dienstbibliothek: alle geräteunabhängigen Funktionen ausführen Dienst;
◆Device Minidriver Explanation Mapping: WIA
Attribute und Befehle zu einem bestimmten Gerät. Über die Informationen in DeviceManagerClass().DeviceInfos können wir die
Geräteinformationen sammeln, die zu CameraDeviceType in der Spiegelreflexkamera gehören. Für Video und andere Typen gibt es andere ähnliche Methoden .
public void DownJpgFromAllCamera() { int i = 1; foreach (IDeviceInfo DevInfo in new DeviceManagerClass().DeviceInfos) { if (DevInfo.Type == WiaDeviceType.CameraDeviceType) { string DeviceID = DevInfo.DeviceID; Device wDevice = DevInfo.Connect(); Devparam dev = new Devparam {wiaDevice=wDevice, DeviceID = DeviceID, index = i }; new Thread((Camera) => { DownJpg(((Devparam)Camera).wiaDevice, ((Devparam)Camera).DeviceID, ((Devparam)Camera).index); } ).Start(dev); i++; } } }
public delegate uint EdsProgressCallback( uint inPercent, IntPtr inContext, ref bool outCancel); public delegate uint EdsCameraAddedHandler(IntPtr inContext); public delegate uint EdsPropertyEventHandler(uint inEvent, uint inPropertyId, uint inParam, IntPtr inContext); public delegate uint EdsObjectEventHandler( uint inEvent, IntPtr inRef, IntPtr inContext); public delegate uint EdsStateEventHandler( uint inEvent, uint inParameter, IntPtr inContext);
Der dritte wird für Benachrichtigungen über Änderungen im Status von Attributen wie Datenströmen in der Kamera verwendet, beispielsweise eine Reihe von Änderungen, die durch das Aufnehmen von Bildern verursacht werden.
Der vierte wird für Dateivorgänge verwendet, z B. Dateierstellung, Löschung usw.
Die fünfte wird für die Statuszeit der Kamera selbst verwendet, z. B. abnormales Ein- und Ausschalten usw.
Bitte beachten Sie dazu das Demoprogramm Verschiedene Anwendungsszenarien. Obwohl die Lademethode Multithreading aktiviert, ist die Festplatten-E/A selbst nur seriell. Es heißt, dass Sie es beim Spielen nicht ernst nehmen müssen
Rendering
Neu hinzugefügte Kameraausrüstung
Programmgesteuerte Kamera zum Aufnehmen von Bildern
Einladen -Kamerafotodaten
Das obige ist der detaillierte Inhalt von.Net-Tipps zum Spielen von SLR. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Nutzungsmethoden von Symbolen in der C-Sprachabdeckung Arithmetik, Zuordnung, Bedingungen, Logik, Bitoperatoren usw. werden für grundlegende mathematische Operationen verwendet, Zuordnungsoperatoren werden zur Zuordnung und Addition verwendet, Subtraktion, Multiplikationszuordnung und Abteilungszuweisung, Zustandsbetreiber werden für Unterschiede verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Zeiger, Markierungen am Ende der Datei und nicht numerische Werte.

Das Char -Array speichert Zeichensequenzen in der C -Sprache und wird als char Array_name [Größe] deklariert. Das Zugriffselement wird durch den Einweisoperator weitergeleitet, und das Element endet mit dem Null -Terminator '\ 0', der den Endpunkt der Zeichenfolge darstellt. Die C -Sprache bietet eine Vielzahl von String -Manipulationsfunktionen wie Strlen (), Strcpy (), Strcat () und strcmp ().

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

In C wird der Zeichenentyp in Saiten verwendet: 1. Speichern Sie ein einzelnes Zeichen; 2. Verwenden Sie ein Array, um eine Zeichenfolge darzustellen und mit einem Null -Terminator zu enden. 3. Durch eine Saitenbetriebsfunktion arbeiten; 4. Lesen oder geben Sie eine Zeichenfolge von der Tastatur aus.

In der C -Sprache werden Sonderzeichen durch Escape -Sequenzen verarbeitet, wie z. B.: \ n repräsentiert Linienbrüche. \ t bedeutet tab charakter. Verwenden Sie Escape -Sequenzen oder Zeichenkonstanten, um Sonderzeichen darzustellen, wie z. B. char c = '\ n'. Beachten Sie, dass der Backslash zweimal entkommen muss. Verschiedene Plattformen und Compiler haben möglicherweise unterschiedliche Fluchtsequenzen. Bitte wenden Sie sich an die Dokumentation.

In der C -Sprache kann die char -Typ -Konvertierung direkt in einen anderen Typ konvertiert werden, wenn: Casting: Verwenden von Casting -Zeichen. Automatische Konvertierung des Typs: Wenn ein Datentyp einen anderen Werttyp berücksichtigen kann, wandelt der Compiler diese automatisch um.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.
