Laden...

C#: über Netzwerkkabel angeschlossene Kameras steuern

Erstellt von Kraeuter vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.230 Views
K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren
C#: über Netzwerkkabel angeschlossene Kameras steuern

Hi,
ich habe ein Problem und zwar soll ich ein Programm entwickeln,
welches ermöglicht 4 Kameras jeweils ein Bild schießen zu lassen, wenn ein Auslöser aktiviert wird.
Das mit dem Auslöser könnte man erst einmal außen vor lassen, da wäre ich froh, wenn das überhaupt über einen Button geschieht.

Die 4 Kameras sind an eine Netzwerkkarte mit 4 Anschlüssen angeschlossen.
Es handelt sich dabei um das Modell mvBlueCougar-S121G von Matrix Vision.

Das einzige was ich habe sind Beispiele in C und C++, die ich aber nicht wirklich auf C# umgemünzt bekomme.
Ich programmiere auf einem Rechner mit Windows XP und Visual C# 2010 Express.

Hat einer mit sowas schon Erfahrung gemacht oder zumindest ein paar Ideen und Tipps für mich.

Ich danke schonmal, mfg Kräuter.

K
593 Beiträge seit 2007
vor 13 Jahren

Hallo Kraeuter,

bei dem SDK von MatrixVision sind auch .Net Assemblys dabei die du Nutzung kannst, zudem ist die Doku dort auch mit in C#.

Gruß

Kaji

K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren

Hi,

das SDK hab ich jetz installiert und hab dort endlich auch nen Manual für C# gefunden.
Wenn ich jetzt aber bei Visual C# "using mvIMPACT_NET" schreiben will, bietet er mir das noch nicht an, was muss ich dafür machen?

Hab bis jetzt in C# immer nur mit dem gearbeitet, was mir gegeben war.
Muss auch dazu sagen, ich bin zur Zeit noch in der Ausbildung und in der Berufsschule haben wir bis jetz grad mal 2 Stunden oder so WindowsForms gehabt. Aber das soll nich das Problem sein, bin ja lernfähig.

Gruß Kraeuter

K
593 Beiträge seit 2007
vor 13 Jahren

Hallo Kraeuter,

du musst erst die Assembly zu deinem Projekt hinzufügen. Also bei den Verweisen hinzufügen und dann kannst du es als Using hinzufügen.

Gruß

Kaji

K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren

Kannste mir genau erklären, was ich kopieren muss?

Würde jetzt deiner Beschreibung nach, die ganzen Samples von C# aus dem SDK-Ordner in den Projekt-Ordner von Visual Studio 2010 packen.
Denke aber nicht, dass das richtig wäre oder?

Gruß
Kräuter

268 Beiträge seit 2008
vor 13 Jahren

Nehmen wir an du willst den verweis BLAH hinzufügen. Dann gehst du in deinem Projekt(IN VISUAL STUDIO[NICHT DER ORDNER!]) Auf Verweise. Sagtst rechtsklick add und dann suchste dir die BLAH.dll oder so raus. Dann nurnoch in der zB Form1.cs

using BLAH;
dann passt das .

Hab grad aber kein VS hier ^^

Name: Scarecraft
Language:C#
learning since:winter 2007
IDE: Visual Studio 2005/08 Professional Editon
Skill:Medium
qualifications: MCP - Microsoft Certified Professional
Homepage : FX RPG Maker

K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren

danke, weis ich auch schonmal wie das geht

ich hab jetz nur das problem, dass in den ganzen beispielen das hier verwendet wird:

using mvIMPACT_NET;
using mvIMPACT_NET.acquire;

das find ich aber nirgends

B
193 Beiträge seit 2009
vor 13 Jahren

Du kannst dir in Visual Studio die jeweiligen Klassen in einer Library ansehen.

Andere Lösung: Alle Assemblies in den Verweisen hinzufügen, Programmcode schreiben und später die using automatisch (Rechtsklick, using ...) hinzufügen.

K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren

Danke ich glaub ich habs durch dich hinbekommen, auch wenn du es vlt nicht auf den weg gemeint hast

Ich hab einfach so nen Beispiel mit Visual C# 2010 geöffnet und konnte mir dann bei Verweise anschaun, wo der herkommt, den hab ich dann in meinem Projekt hinzugefügt.
Das funtz schon mal.

Jetz hab ich nen Beispiel mal so angewandelt, dass es mir einfach nur die verfügbaren Anschlüsse der Netzwerkkarte zeigt.
Muss den ganzen Kram ja erstmal von Grund auf verstehen.
Am Quellcode wird nichts rumgemeckert, aber beim Ausführen kommt dann imer ne Fehlermeldung (Siehe Anhang).

Hier mal mein Quellcode (hoffe ihr könnt helfen):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using mvIMPACT_NET;
using mvIMPACT_NET.acquire;

namespace KameraProjekt
{
    class Program
    {
        static DeviceManager devMgr;
        static Device getDeviceFromUserInput(ref DeviceManager devMgr)
        {
            uint devCnt = devMgr.deviceCount();
            if (devCnt == 0)
            {
                Console.WriteLine("No MATRIX VISION device found!");
                return null;
            }

            // display every device detected
            for (uint i = 0; i < devCnt; i++)
            {
                Device dev = devMgr.getDevice(i);
                if (dev != null)
                {
                    Console.WriteLine("[{0}]: {1}({2}, family: {3})", i, dev.serial.read(), dev.product.read(), dev.family.read());
                }
            }

            // get user input
            Console.Write("Please enter the number in front of the listed device followed by [ENTER] to open it: ");
            uint devNr = System.Convert.ToByte(Console.ReadLine());

            if (devNr >= devCnt)
            {
                Console.WriteLine("Invalid selection!");
                return null;
            }

            Console.WriteLine("Using device number {0}", devNr);
            return devMgr.getDevice(devNr);
        }

        static void Main(string[] args)
        {
            devMgr = new DeviceManager();
            Device dev = getDeviceFromUserInput(ref devMgr);
            if (dev == null)
            {
                Console.WriteLine("Unable to continue! Press any key to end the program.");
                Console.Read();
                Environment.Exit(0);
            }


        }
    }
}

Kann das sein, dass mir da das neue Visual C# in die Suppe spuckt?

S
8.746 Beiträge seit 2005
vor 13 Jahren

Sollte zu beheben sein, indem man das Projekt auf .NET 3.5 umstellt. Aber ich entsinne mich dunkel, dass das die Express-Edition nicht beherrscht...

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Kraeuter,

beachte bezüglich deiner Zwischenfragen zur Benutzung von VS, dass wir solch grundlegende Benutzung von VS als bekannt voraussetzen und entsprechend Frage somit nicht erlaubt sind. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren

Werd ich demnächst beachten und zweimal überlegen, ob ich die Frage stelle.

Heute versuch ich erstmal, ob ich das Problem in den Griff bekomm, wenn ich Visual C# 2008 installiere und damit weiterprogrammiere.

Edit: Also mit Visual C# 2008 funktioniert es ohne Probleme.
Werde mich also jetzt daran setzen, nen Bild von der jeweils ausgewählten zu Kamera zu bekommen und danach dann ma nen Bild abzuspeicher, alles Schritt für Schritt.

K
Kraeuter Themenstarter:in
13 Beiträge seit 2010
vor 13 Jahren

Hi,
also dafür, dass ich doch noch ein recht großer Anfänger bin, was die C# Programmierung angeht, bin ich doch recht weit gekommen.

Wenn ich mein Programm starte, werden jetzt nacheinander alle 4 Kameras angesprochen und jeweils ein Foto gespeichert.
Nun muss das noch so angepasst werden, dass es durch einen Trigger ausgelöst werden kann und mögliche Fehler abgefangen werden.

Werde euch auf dem laufenden halten und gegebenfalls wieder konsultieren.

Gruß Kräuter