Maison développement back-end Tutoriel C#.Net Conseils .Net pour jouer au SLR

Conseils .Net pour jouer au SLR

Mar 12, 2017 pm 02:04 PM
.net

Cet article partage l'utilisation de .Net pour jouer au SLR

Contexte

Je n'ai pas visité le jardin depuis plus d'un an, j'ai changé de secteur d'activité. et je sentais que j'étais trop occupé Oui, mais c'est aussi gratifiant d'être exposé à différentes cultures de R&D, comme le flux technique dans le cercle des jeux, le flux commercial dans le cercle du commerce électronique, le flux artistique dans les médias. cercle, etc.

L'arrière-plan de cette application est d'automatiser les appareils photo reflex. Le patron veut faire de la programmation pour l'interface USB, mais c'est une technologie de trop bas niveau pour être utilisée. 🎜 >c# n'est pas très approprié à faire. Après avoir marchandé un moment, faisons-le pour le SLR.

Supposons un scénario dans lequel nous avons besoin d'appareils N SLR pour viser une fleur, prendre une photo toutes les 30 secondes et la publier automatiquement sur Weibo.

Points techniques

SDK Canon

Norme WIA

SDK Canon fournit dll NET aux développeurs. a indiqué que les modèles d'appareils photo correspondants de Canon sont facilement accessibles en appelant le SDK, mais que la version .NET du SDK ne donne pas accès aux données de l'appareil photo. Alors, comment obtenir les données dans l’appareil photo reflex devient un problème. Certains étudiants peuvent être confus. Si l'appareil photo reflex est connecté au port USB de l'ordinateur, une lettre de lecteur sera générée. Ne suffit-il pas d'utiliser directement DriveInfo.GetDrives() pour obtenir la traversée de la lettre de lecteur ? Laissez-moi d'abord vous renseigner. La classification des périphériques USB esclaves peut être obtenue à partir de l'octet bInterfaceClass correspondant au descripteur d'interface du périphérique USB. Les codes typiques pour bInterfaceClass sont 1, 2, 3, 6, 7, 8, 9, 10, 11, 255. Les significations respectives sont 1-audio : indiquant un appareil audio. 2-appareil de communication : équipement de communication, tel que téléphone, modem, etc. 3-HID : dispositif d'interaction homme-machine, tel qu'un clavier, une souris, etc. Équipements d'imagerie à 6 images, tels que scanners, appareils photo, etc. Parfois, les appareils photo numériques peuvent également être classés dans cette catégorie. 7-Classe d'imprimante. Comme les imprimantes unidirectionnelles, bidirectionnelles, etc. Classe de stockage de masse à 8 stockages de masse. Tout ce qui possède certaines capacités de stockage peut être classé dans cette catégorie. Par exemple, la plupart des appareils photo numériques entrent dans cette catégorie. Classe à 9 hubs. Carte à 11 puces/carte à puce. Classe personnalisée du fabricant 255, principalement utilisée pour certains équipements spéciaux. Tels que la carte adaptateur d'interface, etc.

Les types de périphériques que notre driveinfo peut capturer sont


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,
    }
Copier après la connexion


Généralement, les périphériques de disque USB sont amovibles, mais l'appareil photo reflex est un PortableDevice et ce type ne peut pas être obtenu à l'aide de la méthode GetDrives. Windows Systems32 propose une série de méthodes api pour les appareils portables. Les étudiants intéressés peuvent essayer

.Net 玩单反的技巧

Ici, je choisis la programmation d'interface wia. WIA est l'abréviation de Windows. Acquisition d'images. La version actuellement disponible est WIA 1.0, qui est un service d'acquisition d'images numériques fourni dans Windows Millennium Edition (Windows Me) ou les versions supérieures des systèmes Windows. Il peut également être utilisé pour gérer les équipements d'imagerie numérique. . WIA est un composant COM implémenté à l'aide de services hors processus, WIA évite la perte de performances lors du transfert de données d'image en fournissant son propre mécanisme de transfert de données (interface IWiaDataTransfer). L'interface IWiaDataTransfer hautes performances utilise la mémoire partagée pour transférer des données vers les programmes clients.
WIA comporte trois composants principaux : Device Manager, Minidriver Service Library et Device Minidriver.
◆Gestionnaire de périphériques : énumérer les périphériques d'image, obtenir les attributs des périphériques, créer des événements pour les périphériques et créer des objets de périphériques
◆Bibliothèque de services Minidriver : exécuter toutes les fonctions indépendantes du périphérique ; Service ;
◆Mappage d'explications du minipilote de périphérique : WIA attributs et commandes vers un périphérique spécifique.
Grâce aux informations de DeviceManagerClass().DeviceInfos, nous pouvons collecter les informations sur l'appareil appartenant à CameraDeviceType dans le SLR. Quant à la Vidéo et d'autres types, il existe d'autres méthodes similaires. .


        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++;
                }
            }
        }
Copier après la connexion


Parlons du SDK La version Canon sdk .net propose 5 types de délégation de handles

<🎜. >


        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);
Copier après la connexion


Le premier est utilisé pour le traitement des données tel que la copie de données, la sauvegarde d'images, etc.

Deuxièmement pour PC pour découvrir de nouveaux appareils photo

Le troisième est utilisé pour les notifications de changements dans l'état d'attributs tels que les flux de données dans l'appareil photo, comme une série de changements provoqués par la prise de photos

Le quatrième est utilisé pour les opérations sur les fichiers telles que comme la création, la suppression de fichiers, etc.

Le cinquième est utilisé pour l'heure d'état de la caméra elle-même, comme une mise sous et hors tension anormale, etc.

Veuillez vous référer au programme de démonstration pour divers scénarios d'application. Bien que la méthode de chargement active le multithread, l'E/S du disque dur lui-même est en série. Voici juste cela dit que vous n'avez pas besoin de le prendre au sérieux lorsque vous jouez au

Rendu<.>

Équipement photo nouvellement ajouté

.Net 玩单反的技巧

Caméra contrôlée par programme pour prendre des photos

.Net 玩单反的技巧

Charger dans -données photo de la caméra

.Net 玩单反的技巧


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les perspectives d'emploi du C# ? Quelles sont les perspectives d'emploi du C# ? Oct 19, 2023 am 11:02 AM

Que vous soyez débutant ou professionnel expérimenté, la maîtrise du C# ouvrira la voie à votre carrière.

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM May 06, 2024 pm 04:43 PM

Le développement des technologies d’intelligence artificielle (IA) bat son plein aujourd’hui et elles ont montré un grand potentiel et une grande influence dans divers domaines. Aujourd'hui, Dayao partagera avec vous 4 cadres de projets liés au modèle d'IA open source .NET LLM, dans l'espoir de vous fournir une référence. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel est un kit de développement logiciel (SDK) open source conçu pour intégrer de grands modèles de langage (LLM) tels qu'OpenAI, Azure

Technologie d'optimisation des performances .NET pour les développeurs Technologie d'optimisation des performances .NET pour les développeurs Sep 12, 2023 am 10:43 AM

Si vous êtes un développeur .NET, vous devez être conscient de l'importance d'optimiser les fonctionnalités et les performances pour fournir des logiciels de haute qualité. En utilisant de manière experte les ressources fournies et en réduisant les temps de chargement des sites Web, vous créez non seulement une expérience agréable pour vos utilisateurs, mais vous réduisez également les coûts d'infrastructure.

Différences de performances entre le framework Java et le framework .NET Différences de performances entre le framework Java et le framework .NET Jun 03, 2024 am 09:19 AM

En termes de traitement des requêtes à haute concurrence, .NETASP.NETCoreWebAPI fonctionne mieux que JavaSpringMVC. Les raisons incluent : la compilation précoce AOT, qui réduit le temps de démarrage, une gestion plus raffinée de la mémoire, où les développeurs sont responsables de l'allocation et de la libération de la mémoire des objets.

C # .NET des questions et réponses d'entrevue: améliorez votre expertise C # .NET des questions et réponses d'entrevue: améliorez votre expertise Apr 07, 2025 am 12:01 AM

C # .NET Les questions et réponses d'entrevue comprennent les connaissances de base, les concepts de base et l'utilisation avancée. 1) Connaissances de base: C # est un langage orienté objet développé par Microsoft et est principalement utilisé dans le framework .NET. 2) Concepts de base: la délégation et les événements permettent des méthodes de liaison dynamiques, et LINQ fournit des fonctions de requête puissantes. 3) Utilisation avancée: la programmation asynchrone améliore la réactivité et les arbres d'expression sont utilisés pour la construction de code dynamique.

Tutoriel avancé C # .NET: Ace votre prochain entretien de développeur senior Tutoriel avancé C # .NET: Ace votre prochain entretien de développeur senior Apr 08, 2025 am 12:06 AM

L'entrevue avec C # Developer Senior Developer nécessite de maîtriser les connaissances de base telles que la programmation asynchrone, la LINQ et les principes de travail internes des frameworks .NET. 1. La programmation asynchrone simplifie les opérations par asynchronisation et attend pour améliorer la réactivité de l'application. 2.Linq exploite des données dans le style SQL et fait attention aux performances. 3. La CLR du cadre net gère la mémoire et la collecte des ordures doit être utilisée avec prudence.

C # .NET: Explorer les concepts de base et les principes fondamentaux de la programmation C # .NET: Explorer les concepts de base et les principes fondamentaux de la programmation Apr 10, 2025 am 09:32 AM

C # est un langage de programmation moderne et orienté objet développé par Microsoft et dans le cadre du .NET Framework. 1.C # prend en charge la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme. 2. La programmation asynchrone en C # est implémentée via Async et attend des mots clés pour améliorer la réactivité des applications. 3. Utilisez LINQ pour traiter les collections de données concisement. 4. Les erreurs courantes incluent les exceptions de référence NULL et les exceptions indexes hors gamme. Les compétences de débogage comprennent l'utilisation d'un débogueur et une gestion des exceptions. 5. L'optimisation des performances comprend l'utilisation de StringBuilder et d'éviter l'emballage et le déballage inutiles.

Du Web au bureau: la polyvalence de C # .net Du Web au bureau: la polyvalence de C # .net Apr 15, 2025 am 12:07 AM

C # .NETtisversatileforbothwebandDeskTopDevelopment.1) forweb, useasp.netfordynamicapplications.2) fordesktop, employwindowsformSorwpfforrichInterfaces.3) usexamarinforcross-plateformDevelopment, permanant les codéescosswindows, macos, linux, etmobiledevices.

See all articles