Conseils .Net pour jouer au SLR
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, }
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
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++; } } }
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);
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é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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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.

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 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.

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 # 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.

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