Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von ismirschlecht
Thema: Wo in einer MC Anwendung instantiiere ich den Controller?
Am im Forum: Grundlagen von C#

Hallo,

Ich habe ein Hauptformular und einen als Klasse geschriebenen Controller.
Preisfrage: Wo in der Anwendung instantiiere ich den Controller ?

ism

Thema: Listbox im Hintergrund aktualisieren
Am im Forum: GUI: Windows-Forms

Könnte unglückliches Design sein.
Trenne Daten (Stringliste) und optische Präsentation (Grid).
1. Liste lustig füllen, so wie es notwendig ist
2. Für das Formular mit dem Grid einen Event suchen, der beim "Hervorholen" ausgelöst wird (OnShow ???)
3. Erst beim Formularanzeigen die Daten ans Grid bilden
4. Datenbindung beim Verbergen des Formulars lösen
Grid.datasource = null; oder so

Würde auch sinnlose Hintergrundarbeit verhindern

ism

Thema: Was kann das Windows Biometric Framework ?
Am im Forum: Rund um die Programmierung

Hallo,

eine Anfängerfrage: Ich befasse mich zur Zeit mit Fingerprintscannern, wobei es mir NICHT um eine wie auch immer geartete Anmeldung / Authentifikation an Windows geht.
Ziel ist ein Zugangskontrollsystem, bei dem registrierte Kunden "mit ihrem Finger" eintreten, bezahlen usw. können.
Mit in einer DB gespeicherten Kundendaten incl. Fingerabdrücken.
Jetzt liest man, daß das WBF quasi dazu konforme Reader ansprechen kann, und daß man damit seine eigene Anwendung stricken kann.
Geht das wirklich oder würde man doch nur bei einem Logon landen ?
Anforderungen wären in etwa:
- Aufnahme von Abdrücken und Zuordnung in einer (eigenen) Datenbank
- Verteilung von Abrücken an mehrere Scanner, wenn der Mustervergleich in den Geräten stattfindet
- oder Vergleich eines lokal gescannten Fingers mit den zantral gespeicherten Abdrücken

Und natürlich: Reicht da das API von Microsoft oder braucht man noch ein externes SDK ?
Ich weiß, hier im Forum gibt es mehrere threads zu dem Thema, die habe ich schon durch...

Gruß ism

Thema: Forum auf Discourse umstellen
Am im Forum: Wünsche und Kritik

Also ich kann auf Signaturen händeringend verzichten. Da steht oft nur pseudogeistreicher Unsinn.

Und zur Forensoftware: Never touch a running System.
Man hat sich dran gewöhnt, man ist im Forum, um zu arbeiten, man weiß, wie man wo was schnell findet, coole Features müßten schon sehr cool (sprich: nützlich) sein um die Übergangsschwierigkeiten zu rechtfertigen.
Und dann geht es ja wohl nie ganz ohne Datenverluste ab bei solchen Aktionen.

Also von mir ein klares

Gruß ism

Thema: Datenübergabe Serialport -> eigene Datenstruktur korrekt implementieren
Am im Forum: Rund um die Programmierung

Hallo,

die Dinge haben sich weiterentwickelt.

an Taipi88: Geht klar, deshalb mein erster Ansazu über Delegates (Nowosti() )
Ich dachte eben, Events seien genau das Mittel, das Invoke zu vermeiden.

an LaTino: Äh ja, ich bin am Verstehen. 8-)

Der Artikel von Herbivore ist wirklich gut.
Man bleint dran,
ism

Thema: Datenübergabe Serialport -> eigene Datenstruktur korrekt implementieren
Am im Forum: Rund um die Programmierung

Nachdem ersten Versuch über eine eigene Eventklasse wurde ich von der Runtime vollgenölt, Thread A würde in Thread B (GUI) schreiben.
Fazit: Ich mußte mir eine üble Invoke-Konstruktion trotz Events besorgen.
Wo soll nun der Vorteil der Events liegen ?
Da sind Delegaten doch ein wenig einfacher zu verstehen.

Und: Zieht ein Event, der aus einem Thread etwas an der GUI drehen will, zwangsläufig ein Invoke nach sich ?

Gruß ism

Thema: Datenübergabe Serialport -> eigene Datenstruktur korrekt implementieren
Am im Forum: Rund um die Programmierung

Hallo,

danke, das kam mir auch schon in den Sinn.
ism

Thema: Datenübergabe Serialport -> eigene Datenstruktur korrekt implementieren
Am im Forum: Rund um die Programmierung

Hallo,

erstmal zwei Informationen:
1. Ich arbeite mit VS2010 unter NET4.0
2. Zu

Zitat
Jede Serialportinstanz verweist dabei auf den gleichen Eventhandler DataReceived()
:
Das heißt einfach nichts anderes als daß ich jedem Serialport den gleichen Datareceived-Handler zuweise. Über "sender" komme ich ja an den Absender ran.

Ist ein Datenpaket erkannt (klappt) übergebe ich die Nutzdaten in ein Hilfsobjekt und starte einen Einmal-Thread (klappt), welcher die spezifische Arbeit erledigt (klappt).

Aber jetzt kommt eine Stelle, bei der ich mich unwohl fühle:
Wie bekommt die GUI eine Rückmeldung vom Thread, sprich seinem Hilfsobjekt ?
Das Hilfsobjekt steckt in einer separat deklarierten Quelldatei und soll vom Hauptformular nichts wissen, ich will das Zeugs je vielleicht weiterverwenden.

Dazu habe ich im Hauptformular einen Delegaten und eine konkrete Instanz definiert:


        public delegate void Nowosti( string nobui);
        public void konkNowosti(string nowui)
            {
            // stelle die Nachricht irgendwo dar
            }

Weiterhin bekommt die Helferklasse den gleichen Delegaten und einen Verweis für ein Besitzer-Objekt:


        public delegate void nowo(String nachri);
        public nowo Nowohandler = null; 
        public object Elter = null;    // das wird das Hauptformular

Im Hauptthread, wo das Hilfsobjekt erstellt wird, weise ich Besitzer (Elter) und Delegat zu:


  // Ka heißt mein Hilfsobjekt
  Ka.Nowohandler = konkNowosti;
  Ka.Elter = this;


... und zum guten Schluß rufe ich im Arbeitsthread den Delegaten auf:


   Nachr = "Es hat geklappt";
   ((Form) this.Elter).Invoke(new nowo(Nowohandler),Nachr);

So, Code zur Kritik freigegeben. Der Compiler hat Ja gesagt, das Programm läuft...

Gruß ism

Thema: Datenübergabe Serialport -> eigene Datenstruktur korrekt implementieren
Am im Forum: Rund um die Programmierung

Hallo,

danke erstmal an alle.
Genug Stoff zum Rumprobieren.

Bis zum Punkt 4 bin ich jetzt gekommen:


public class Einheit : SerialPort
        {
        public Paket P=null;
        public string Bez="";
        public Einheit(string cname, int Baud, Parity party, int Bits, int Plength,   
                            string   _bez)
            : base (cname,Baud,party,Bits)
            {
            this.Bez = _bez;
            this.P = new Paket(Plength);
            }

        }

Diese "Einheit" besitzt ein "Paket", und im Ereignishandler kann ich das über Casting ansprechen:


 private void OnDataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
            Einheit iP= ( (Einheit) sender);
            while (iP.BytesToRead > 0)
                {
                iP.P.Push(  iP.ReadByte()  );
                // Push(int) schiebt das nächste Byte in die 
                // Warteschlange des Paketes
                // hier dann Paketerkennung usw.
                }
       
            }

Bis dahin scheint es mir relativ sauberer Stil zu sein.
Die Weiterverarbeitung (bei erkanntem Paket) würde ich gerne nach dem Motto
"fire and forget" abhandeln, dazu werde ich mir aber wohl noch userdefinierte Events ansehen müssen...
ism

Thema: Datenübergabe Serialport -> eigene Datenstruktur korrekt implementieren
Am im Forum: Rund um die Programmierung

Hallo,

ich stecke bei folgendem Problem fest:
1. Ich möchte N Serialports erzeugen, initialisieren und starten (geht schon);
Jede Serialportinstanz verweist dabei auf den gleichen Eventhandler DataReceived()
2. Die Daten kommen "unvorhersehbar" rein und sind byte - Werte
3. Jedem Serialport wird eine Datenstruktur mit Namen "Paket" zugeordnet; dieses "Paket" schiebt sequenziell Bytes rein (Schieberegister) und prüft nach jedem neuen Byte, ob ein Paket erkannt wurde (Anfengssequenz, Checksumme). Auch das geht.

4. Das Problem: Wie gelangen die Bytes aus dem jeweiligen Eventhandler
KORREKT in ihr zugeordnetes Paket ?
Ich habe so ein Programm schonmal in Delphi geschrieben und möchte nun Designsünden von vornherein vermeiden.
Natürlich könnte ich im Tag des Serialports einen Verweis auf das zugeordnete Paket unterbringen, das kommt mir aber sehr dreckig vor...

5. Wenn 4. erledigt ist: Wie stößt ein erkanntes Paket korrekt die Weiterverarbeitung seiner selbst an ?

Ich will keinen Code sondern eher Strategien, um den Paradigmenwechsel zu NET hinzubekommen.

ism.

EDIT:

Habe gerade festgestellt, daß Serialport gar keinen tag hat.
Also entfällt auch dieser Schleichpfad...
(4.)

Thema: Form sendet String vor click auf OK
Am im Forum: GUI: Windows-Forms

Es gibt keine Inputbox ? Echt nicht ?
Aber man könnte sich eine selbst zimmern, auch für spätere projekte.
1. ein kleines Fenster mit einer Titelzeile, einem Textfeld, einem OK- und Escape-Button
2. das Fenster erhält zwei Felder: boolean _ok und string _eingabe
_ok wird gesetzt wenn OK gerückt wurde
_eingabe enthält den Text (bei OK)
3. OK und Escape schließen das Minifenster
4 statische Funktion String Inputbox(...), die ein solches Minifenster instantiiert und das Ergebnis rausreicht

Sollte als Roadmap reichen

Ich hab mir sowas gebastelt und: seeehr nützlich

Thema: Mitte einer Grafik in einem Bild feststellen
Am im Forum: Grafik und Sound

Die Frage ist ein bißchen zu allgemein.
Was ist "die Mitte" ?
Und wenns mal zwei Kreise sind ? Oder gar Buchstaben ?
Was für Grafiken können das sein ?
Oder gehts eigentlich um den Schwerpunkt ?

Thema: Programmier Ideen in C# - WPF?
Am im Forum: Smalltalk

Ne eigene Schach - KI ?
Ein Go - Programm ?
Einen kleinen, aber ergonomischen PIM (Personal Information Manager) ?
und und und...

Thema: [ungelöst] Einfacher Sprachumschalter mit ComboBox oder kompatibel gesucht
Am im Forum: GUI: Windows-Forms

Und weiterhin wäre zu sagen, daß die Menüs in der Control-Collection nicht beachtet werden.
Ich habe aus stackoverflow eine Methode gekupfert, wie auch Menüs und Menüitems rekursiv durchmustert.
Die mußt du zusätzlich zur normalen Controlcollection durchlaufen.

Thema: Parser für Bedingungen
Am im Forum: Rund um die Programmierung

Bist Du Dir sicher, daß Dein Programmdesign gut ist ?
Das hier läuft nämlich auf Scripting hinaus und lohnt sich nur, wenn die Bedingungen wirklich ganz wild von Tag zu Tag wechseln.
Wenn etliche, aber von ihrer Struktur immer gleiche Fälle zu unterscheiden sind würde ich in der INI
a) die vorkommenden Variablenwerte und
b) den konkreten Fall in Form einer Nummer hinterlegen.
Jede Nummer bedeutet eine konkrete Testformel,
Bsp: fall=0 => if A = B
fall= 1 0> if A = B and C = D
usw.
Auswertung erfolgt hardcodiert (und dem Nutzer verborgen) im Programm selbst.
Hätte auch den Vorteil, daß Du nicht Deine eigenen Syntaxfehler in der INI parsen mußt (und es werden welche passieren).

Kommt auch drauf an, wieviel Du von Deinem Gehirnschmalz (die Testformeln nämlich) für Dich behalten willt/mußt.

ism

Thema: Arbeitsweise beim beruflichen Programmieren: akademisch vs. simple aber tut was es soll
Am im Forum: Smalltalk

Was mir aufgefallen ist, gleich im Startbeitrag: Wieso schreibst Du "Führung" in Anführungsstrichen ?
Führt sie oder nicht ? Wenn sie führt hat sie auch die Pflicht und Kompetenz (hoffentlich) Euren "Kulturkampf" zu schlichten.
Und wir aus der Ferne können zu dem was Besser ist, gar nichts sagen.

Thema: Grundsatzfrage zur Übergabe von Feldern bzw. Objekten zwischen 2 Klassen
Am im Forum: Grundlagen von C#

Da muß ich doch mal dazwischenfragen:
Wieso "sind Arrays nie public" ?
Aus Tradition ? Gibts da gewichtige Gründe, eine derart wichtige Datenstruktur (für Naturwissenschaftler z. Bsp) private zu machen ?
Und wie sieht dann die Übergabe zwischen Klassen aus ?
Ich höre...

Thema: Korrektes Mashalling in Framework 4.0
Am im Forum: Rund um die Programmierung

Es handelt sich um Delphi 7, und es wird dabei bleiben.
ism

Thema: Korrektes Mashalling in Framework 4.0
Am im Forum: Rund um die Programmierung

Hallo,

danke für die Antworten.
Das ist hübsch, die falsche Reihenfolge hatte ich nämlich aus dem allwissenden Internätt.
Man lernt nie aus.
Also wäre

    [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall) ]        
    [return: MarshalAs(UnmanagedType.AnsiBStr)]     // Zeile X
    public static extern int  IO_read_E(  int device);


eine mögliche korrekte Form...
MfG,
ism.

Thema: Korrektes Mashalling in Framework 4.0
Am im Forum: Rund um die Programmierung

Hallo,

ich muß eine Delphi - Dll ansprechen, d.h. von C# (Visual Studio 2010) aus nutzen.
Die Dll ist erstellt, es handelt sich um eine kleine Sammlung von Funktionen, die nur denkbar einfachste Typen zurückgeben: PChar und integer.

Die Deklaration der externen Funktionen sieht so aus:

       [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall)]
        public static extern string  IO_anzahl_string();
        [return: MarshalAs(UnmanagedType.AnsiBStr)]     // Zeile X
        
        [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall) ]
        public static extern int  IO_read_E(  int device);

       [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall) ]
        public static extern int  IO_read_A( int device);


Bzgl. Mashalling bin ich noch ziemlich unbeleckt.
Folgendes Rätsel: Lasse ich die Zeile X drin werde ich beim Aufruf von
IO_Read_E(...) volgenölt, der Rückgabewert könne nicht gemarshallt werden, und ich müßte mittels [MarshalAs(UnmanagedType.U4)] oder ...I4 vermitteln.
Half selbstredend nichts. Komischerweise finktionierte die NÄCHSTE Funktion in der Aufzählung wieder klaglos (IO_read_A() )
Kommentiere ich Zeile X aus, funktionieren alle Funktionen.
Wie weit wirkt diese [return: ...] Klausel ?
Ist das Auskommentieren überhaupt der Grund fürs Funktionieren von IO_read_E() oder nur Zufall ?
Falls jemand eine Idee hat...

ism

Thema: Hash für Gesichtserkennung, aber ein Hash der die Ähnlichkeit repräsentiert
Am im Forum: Grafik und Sound

Falls es noch aktuell ist:
Dein Verfahren wird mehrstufig sein müssen um die Datenflut einigermaßen in den Griff zu kriegen.
1. Kanten suchen und die Farben des Bildes auf 2 reduzieren: schwarz und weiß
2. Irgendwie erreichen, daß das Gesicht im Bild immer die gleiche relative Größe hat
3. Prüfen, ob das Gesicht im Bild mit einem Referenzumriß übereinstimmt.
Dazu brauchst Du die 2dimensionale Kreuzkorrelation, die allerdings sogar sagt, wo das Gesicht ist.
Na ja, die nächsten fünf Jahre wirst Du keine Langeweile haben.
Aber bangemachen gilt nicht.
ism.

Thema: IMEI eines NFC - fähigen Gerätes auslesen
Am im Forum: Netzwerktechnologien

Das ist doch kein Widerspruch: Der Reader klabt an einem Windows PC und wird üver VS 2010 programmiert.

Thema: IMEI eines NFC - fähigen Gerätes auslesen
Am im Forum: Netzwerktechnologien

Hallo,

folgendes Problem: Ich möchte über einen NFC-fähigen Reader ein NFC - fähiges Smartphone "ansprechen" und es veranlassen, mir seine IMEI mitzuteilen.

Bedingung: Der Handybesitzer muß nur NFC einschalten, er braucht keine App zusätzlich.
Auslieferungsstand reicht sozusagen.
Zielplattform ist erstmal Android .
Ist das überhaupt möglich ?
Im Internet findet sich leider nichts Brauchbares.

Gruß ism

Thema: Einfacher TFTP - Client
Am im Forum: Netzwerktechnologien

Guten Tag,

ich arbeite zur eit an Programmen, die TFTP benutzen, nur clientseitig.
Das findet allerdings in Delphi statt.
Meinem Wissensdurst folgend habe ich versucht, ein Testprogramm in C# zu schreiben.
Zur Anwendung kommt VS 2010 mit NET 4.0.
Ein Hobbyist stellte auf CodeProject auch eine Klasse zur Verfügung, siehe hier:

A simple TFTP client using C#

Das Einbinden ist sehr leicht, nur bekomme ich immer den Fehler

Fehler
"Der angegebene Host ist unbekannt".
1. Der Hostname (IP) wurde richtig übergeben
2. Zum Einsatz kommt Win 7 32bit
3. In der Firewall wurde das Programm korrekt eingetragen, es darf also.
4. In der Konsole funktioniert es (TFTP <host> GET ... )
5. Ich kann den Host anpingen
6. Ein anderes, selbstgeschriebenes Delphiprogramm kann den Host auch erreichen.

Hat jemand Erfahrung mit dieser Klasse ? Mehr als "192.192.172.76" unter Host eintragen , der Port ist 69, kann man ja wohl nicht falsch machen ?
Die Klasse enthält auch keine Methode wie Connect() oder Open().
In der Klassenbibliothek von Microsoft scheint jetzt keine dedizierte TFTP - Klasse zu finden zu sein.

Fals jemand was weiß...

Thema: Was haltet ihr von Wearables?
Am im Forum: Smalltalk

Ic h glaube nicht, daß die (meine) ABlehnung von Smartewatches jegliche Weiterentwicklung verneint.
Ich lehne damit DIESE Entwicklung ab, andere finde ich sehr interessant.
Aber schon beim vernetzten Heim habe ich so ein ungutes Gefühl.
Das endet dann damit, daß die Krankenkasse die Inhaltsdaten des Kühlschranks - abgreifbar über die RFID's der vielen Joghurtbecher und Bierbüchsen - haben möchte, um meinen Tarif "maßzuschneidern" - nee danke.
Das mit der Bequemlichkeit stimmt allerdings. Lustigerweise trage ich ne Armbanduhr, WEIL ich bequem bin...

Thema: Was haltet ihr von Wearables?
Am im Forum: Smalltalk

Auch wenn Ihrs für defätistisch haltet: Dinge, die die Welt nicht braucht.
Ein elektronisches Dingsbums, weil der Griff zum Handy schon zu schwer ist ?
Unter der Dusche das Handy fernsteuern, warum auch immer ? Hat die Uhr wenigstens einen Rauschfilter ? Oh sorry...
Unter der Dusche bin ich NICHT ERREICHBAR.
Was wird denn die nächste Neuerung ? Ein Ohrclip, der einem sagt, daß die Smartwatch was zu melden hat, daß das Smartphone was aufgefangen hat...
Schöne neue Welt 8-)

Thema: WMI/SetPowerState/InvokeMethod -> Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig
Am im Forum: Rund um die Programmierung

Danke für die Antwort.
Die besagte Stelle hatte ich auch gefunden, aber großzügig ignoriert, da das Internet voll von (angeblich) funktionierenden Beispielen ist (was für ein Misthaufen).
Leider bin ich Neuling auf dem Gebiet.
Da werde ich mal meinen eigenen Provider providern (wenn ich weiß, was das ist).

Thema: IMoniker und Prozess ID
Am im Forum: Rund um die Programmierung

Gibt es in den Informationen über die geöffneten Dateien so etwas wie "Besitzer" ?
Das könntre dann der öffnende Prozess sein.

Thema: WMI/SetPowerState/InvokeMethod -> Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig
Am im Forum: Rund um die Programmierung

Hallo,

folgendes Problem:
- An EINEM Rechner stecken ZWEI USB - Tastaturen.
- aus betriebsspezifischen Gründen soll jeweils nur eine funktionieren, mit der Möglichkeit, zu wechseln
- ich versuche, diese Aufgabe mit WMI und der SetPowerState - Methode zu lösen

Die beiden Tastaturen kann ich identifizieren über eine WMI - Abfrage:

select PnPDeviceId from CIM_LogicalDevice where Caption like \"%Tasten%\"


List<ManagementObject> mcl = new List<ManagementObject>();
// ... usw

public void HoleUSB()
        {
         mcl.Clear();
         ManagementObjectSearcher mos = new ManagementObjectSearcher(Fr);
         foreach (ManagementObject mob in mos.Get())
             {
              mcl.Add(mob);
              }
          }

So weit, so gut. in mcl[0] und mcl[1] liegen dann tatsächlich die beiden Managementobjekte, die den Tastaturen entsprechen.
Dann aber gehts nicht weiter. Ich bereite den Aufruf von SetPowerState vor mit einem Objektarray:


Object[] args = new Object[2] {6, DateTime.Now} ;
die 6 entspricht dem PowerOff

Aber dann:


try
                {
                mcl[0].InvokeMethod("SetPowerState",args);
                }
            catch (Exception ex)
                {
                // ist nur eine Fehlerausgabe in einem Memo 
                P.Text+="ERROR"+CR+ex.Message+CR;
                }
Die Fehlermeldung, die IMMER kommt, lautet:
Fehler
Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig.
Sehr informativ.
Bestimmt nur ein Anfängerfehler, aber ich habe keine Ahnung, in welcher Richtung ich suchen soll.
Ach so: ich arbeite untr Win7 mit VS 2010.

Thema: Zentrierte Vorschau im CR-Viewer erzwingen
Am im Forum: Rund um die Programmierung

Hallo,

das mit CRViewer.zoom(int32) habe ich erfolglos getestet.
Ich habe jetzt folgende Prothese implementiert:
- Nach der Anzeige des Berichts wird ein Timer gestartet (200ms).
- Beim Timerereignis sperrt sich der Timer selbst und addiert einige Pixel zur Fensterbreite / -höhe - schwupps - der Bericht ist zentriert !
Ich weiß, erbärmlich, aber durch die geringe Verzögerung denkt der User, das gehöre zur Anzeige...
Also bis jemandem etwas Besseres einfällt lasse ich es so.
Gruß ism

Update: Wenn der Timer das Reportfenster maximiert siehts sogar noch schöner aus.