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 trib
Thema: Urheberrechtsschutz versus freie Meinungsäußerung: #NoUploadFilter
Am im Forum: Smalltalk

Hallo herbivore,

Dein Beispiel ist sicherlich die Parade für einen Upload-Filter.
Jeder kann nachvollziehen, dass dies für Betroffene hilfreich ist.

Das muss aber erstmal beantragt & nachgewiesen werden. Bis diese Mühlen mahlen, haben sich andere Kanäle gefunden, die eine Verbreitung ermöglichen. Messenger, die zum Teil mit Ende zu Ende Verschlüsselungen eine Filterung per se nicht ermöglichen.

Dann passiert, was immer passiert:
Firmen beanspruchen die Filterung für sich und Zweckentfremden den Nutzen.

Privatpersonen verwenden Alternativen um z.B. ein Video an eine Whatsapp/Telegramm/Threema/ect.-Gruppe zu verschicken.

Irgendwann meldet sich ein bayrischer Minister mit der Idee, diese Filterung doch auch für weitere Zwecke, wie z.B. die Suche nach Flüchtigen nutzen zu wollen. Verbotene Dinge (Drogen, Waffen, ect.) im Hintergrund auf Fotos zu analysieren.
(Aktuell vielleicht noch etwas weit hergeholt)

Das Resultat ist eine Instanz, die nicht mehr dem Zweck dient, sondern Unternehmen und Politikern. Die können im Gegensatz zu den schutzbedürftigen Privatpersonen nämlich Druck ausüben.
Leider ist das in meinen Augen die realistischste Entwicklung dieses UploadFilters und deshalb bin ich dagegen. Auch wenn es mir für die betroffenen von Hetz-Kampagnen, Cyber-Mobbing oder Rache sehr leid tut. Es wird keine Abhilfe schaffen!

Thema: Die wichtigsten Themen zur IHK Anwendungsentwicklung Prüfung
Am im Forum: Smalltalk

Wir haben damals uns die Arbeiten der Vorjahre runtergeladen, von vorigen Lehrjahren besorgt und teilweise sogar im Unterricht durchgearbeitet.

Dort konnte man ziemlich genau erkennen, wie sich die Prüfungen entwickelt haben. Zum einen wurde penibel darauf geachtet, Fragen aus den Vorjahren nicht zu übernehmen. Und wenn doch, dann waren die mindestens 5 Jahre alt und stark abgewandelt.
Hilft also nur um ein Gefühl für die Art und Weise der Fragenstellungen zu bekommen.

Eine weitere Tendenz war, dass die Fragen so gestellt wurden, dass man sie mit dem Informatiker-Buch nicht beantworten kann. Mir hat das zumindest kaum bis garnicht weiter geholfen. Denke die prüfen ob die Schlagworte im Inhaltsverzeichnis vorkommen...


Persönlich fand ich die Prüfung schlecht und Praxisfern. "Programmieren" mit Zettel und Stift. Das kann ich selbst heute, ohne IDE kaum...
Fragen zu schon damals veralteter Hardware, usw.
Das Spektrum der Informatik ist dermaßen groß, dass kein Azubi überall Grundkenntnisse erlangen kann. Abgesehen davon, dass die Ausbildungsinhalte der Firma sich dermaßen unterscheiden, dass es zum Teil keine Schnittmenge mit der Schule gibt.
Aber so ist das halt, da muss man durch

Thema: Facebook Bots erkennen.
Am im Forum: Smalltalk

Zitat von herbivore
Ergänzend zu dem Vorschlag von trib fällt mir dann doch noch ein, dass die Anzahl der Nachrichten (in der aktuellen Gruppe und außerhalb) ein Indiz sein könnte.
Dort ist leider häufig das Problem, dass einige Gruppen nicht öffentlich einsehbar sind. Sonst wäre es natürlich ein leichtes!
In der zu administrierenden Gruppe wird meist auch nur ein Eintrag erstellt, mit hilfreichen Produktinformationen und fantastischen Rabatten, namhafter Sonnenbrillenhersteller ;)

Es gab ein interessantes Video vom CCC zu Bots auf Twitter. Dort kann man prinzipiell alles einsehen. Dennoch ist eine zweifelsfreie Identifizierung schwierig. Der dortige Ansatz war sich Follower zu kaufen und diese zu analysieren. Denn nur so konnte man sich sicher sein, dass es sich überhaupt um Bots handele. Daraus konnte man dann Schlüsse ziehen und auf andere Bot-Netzwerke schließen. Doch auch das nicht verlässlich.
Es waren einige Accounts zu finden, die >200 Nachrichten pro Tag, oder 2-3 pro Minute verbreitet haben, es sich aber tatsächlich (nachweislich) um Menschen gehandelt hat.

Ein grundsätzlich äußerst interessantes Thema, aber nicht einfach zu lösen/erkennen.

Thema: Facebook Bots erkennen.
Am im Forum: Smalltalk

Hallo Palin,

grundsätzlich wirst Du an dem Post nichts unmittelbar erkennen können.
Die sind ja schlau genug, die Inhalte auf dem Bild darzustellen und den Text laufend zu verändern.
Erkennbarer wird es aber meist an dem Benutzerprofil. Wann hat der sich bei FB registriert. Ist sein Job "arbeitet bei Facebook" was offenbar eine gewisse Glaubwürdigkeit suggerieren soll.
Hat er mehr Gruppen als Freunde.
Meist ändern die 3-4 mal ihr Profilbild, damit das Profil nicht so leer ist. Es ist dann aber immer das selbe Foto.

Das hat mir bisher "unmaschinell" geholfen, solche Bots gar nicht erst in die Gruppen zu lassen. Das aber automatisiert zu prüfen halte ich für schwierig.

Thema: Wie kann ich einen Termin in Exchange Online eintragen?
Am im Forum: Office-Technologien

Autodiscover funktioniert nur, wenn es auch von der IT aktiviert und "redirected" wird. Machbar, aber eben in der Hand der IT.

Man kann aber problemlos die URL manuell in das Property ExchangeServiceUrl übergeben!

Thema: EventLogRecord.FormatDescription -> Alternativen?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von inflames2k
  • Bei Lesen bereits ein FormatDescription aufrufen => Lesen wird extrem langsam
  • Nach Laden über Multithreaded Meschanismus FormatDescription für alle Einträge aufrufen => Extrem langsam, Einträge werden auch trotz Multithreaded Meschanismus seriell gelesen (FormatDescription blockiert intern, Instanzübergreifend)
Dann ist das Bottleneck doch wohl lokalisiert.
Das EventLog ist Multilanguage-fähig, was sicherlich einige Resourcen erfordert um den Text darzustellen.

Bisher habe ich mir immer nur per EventLogReader die gefilterten Einträge geholt und erst bei der Anzeige den Eintrag.ToXml() in was einigermaßen lesbares umgewandelt.
Das geht schnell, ist aber ausschließlich englisch und nicht so sonderlich schön. Popel mir dann per Regex die wichtigsten Stellen aus dem XML und fertig.

Für meinen Anwendungsfall reicht es zumindest aus und ist performant. Egal wie viele Einträge im Log liegen. (Filter aber i.d.R. nur auf mein Programm und die letzten 30 Tage)

Thema: AND-Operator Beinhaltet Zahl
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

vielen dank für Eure Antworten!

Habe einfach einen groben Denkfehler gehabt und die Stelle, mit der Wertigkeit der Zahl verwechselt. Bzw. schlicht und ergreifend nicht genau genug darüber nachgedacht.
Dann noch etwas Zeitdruck und das Chaos war komplett ;)

Es funktioniert nun wie es soll! Meine Methode prüft nun, ob ein bestimmter Eingang geschaltet ist oder nicht. Unabhängig, ob noch weitere Eingänge aktiv sind.
Bzw. kann man ein Event auf bestimmte Eingänge beschränken und nur auslösen, wenn ein Eingang einen bestimmten Wert hat:

private Dictionary<int, bool> _eventListenerDict;
private void reader_TagReadEvent(string tagValue)
        {
            if (_eventListenerDict.Any(entry => Helper.CheckRelaisState(tagValue, entry.Key) != entry.Value))
                return;
            if (TagReadEvent != null)
                if (_myControl.InvokeRequired)
                    _myControl.Invoke(new TagReadEventDelegate(TagReadEvent), tagValue);
                else
                    TagReadEvent(tagValue);
        }

Ihr habt natürlich Recht, ich hätte da selbst darauf kommen (können) müssen!

Thema: AND-Operator Beinhaltet Zahl
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

ich bin gerade etwas verwundert, dass eine Programmierung von mir fehlschlägt.
Es geht darum, dass ein Relais mir meldet, welche Eingänge gerade belegt sind.
Dies wird Hexadezimal gemacht. Z.B. mit 00 02
Das entspricht binär 0000 0000 0000 0010
Von rechts begonnen zu zählen und mit 0 gestartet, ist der Eingang 1 geschaltet.

Also habe ich folgende Funktion erstellt, die mir prüfen soll, ob ein spezieller Eingang nun An- oder Ausgeschaltet ist:

            var data = " ;0002";
            int number = 1;

            //Remove NewLine & Whitespace
            data = Regex.Replace(data, @"\s+", string.Empty);
           
             //port 0 is 1, 1 = 2, ect.
             number += 1;
             var hex = data.Replace(";", string.Empty);
             var i = Int32.Parse(hex, System.Globalization.NumberStyles.HexNumber);

             return (i & number) == number;
Liefert auch erfolgreich true zurück.

Nun übergebe ich Hex 0005 und das entspricht 0000 0000 0000 0101
Also 1 und 3 sind angeschaltet. Meine Funktion gibt aber, bei 1, 4 & 5 true zurück.

Habe ich einen Denkfehler? Befürchte ich verzettel mich mit dem number += 1 aber das geht nicht anders, da ich binär ja nicht den Anschluss "0" darstellen kann, sondern bei 1 zu zählen beginnen muss.

Thema: WYSIWYG-Editor für Endkunden zum Designen von Programmerweiterungen
Am im Forum: Rund um die Programmierung

Was wäre denn mit System.ComponentModel.Design?

Damit kann man, zumindest unter Windows Forms die Controls verschieben und die Eigenschaften ändern.https://msdn.microsoft.com/de-de/library/system.componentmodel.design.idesignerhost(v=vs.110).aspx

Alternativ gibt es ein paar Lösungen auf CodeProject, die so ähnlich funktionieren aber mehr Individualisierung zulassen.

Bin für ein Tool dann aber doch bei einer simplen Liste (DataGrid) gelandet, wo ich Control-Typ, Farbe, Größe und X/Y Position manuell hinterlegen kann. Ist nicht sonderlich Anwenderfreundlich, steht aber im Verhältnis zur Nutzung.
Passiert nämlich i.d.R. exakt einmal und dann nie wieder ;)

Thema: Lokalisierung einer RDLC Datei
Am im Forum: Rund um die Programmierung

Hallo capk,

das ist leider nicht möglich und kann nur äußerst unschön über den DatenLayer gelöst werden. Also einem Datenset, welches die Übersetzungen der Captions passend zur Sprache beinhaltet.
Hat aber den Nachteil, dass während der Design-Time dort die Feldnamen, nicht aber die Werte stehen. Bei vernünftiger Benennung aber machbar.

Noch eine weniger elegante Möglichkeit, ist die Nutzung von Code im Report. Entweder auf Feldebene oder ein Custom VB Code, die mehr oder weniger nur ein switch-case beinhalten und die entsprechende Übersetzung zurückgeben.
Nun sieht man im Designer aber überhaupt nicht mehr welche Spalte was tut.

Daher tendiere ich zu ersterem. Oder man baut sich ein Tool, welches den RDLC dupliziert und übersetzt. Gibt es eine Änderung an dem "Master" Report, führt man das Tool erneut aus und ergänzt ggf. die fehlenden Übersetzungen.

Thema: Nach Drücken von Hardwarebutton eine Message über WhatsApp schicken
Am im Forum: Smalltalk

Zitat von Abt
Die WhatsApp API ist nicht öffentlich.
Nicht mehr!
Bevor WhatsApp die Nachrichten verschlüsselt hat, war die API noch public und man konnte/durfte sie ohne weiteres verwenden.
Deshalb geistern noch einige CodeSnippets durch das Internet und suggerieren den Leuten die Möglichkeit eine API nutzen zu können.

Btw. ist dank der Verschlüsselung auch keine andere Kommunikation als mit dem Handy möglich. WhatsApp-Web z.B. verbindet sich nur mit dem Smartphone und nicht mit den WA-Servern. Denn nur das Handy kennt die Schlüssel und kann die Nachrichten decrypten.

Da WhatsApp ja gerade dabei ist eine kostenpflichtige Unternehmensversion zu veröffentlichen, wird es da sicherlich wieder public API´s geben. Die Funktioniert dann sicherlich auch ohne Telefon.

Thema: Auf/Zuklappen von Regions als Shortcut in VisualStudio 2017 gesucht
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von schorge
Danke @p!ille!
Zumindest klappt VS mit STRG + M + L schon mal alles inkl. #region zusammen.
Leider aber auch alles bis zu dem Namespace inkl. aller Klassen.

Dafür gibt es STRG + M , O
Das tut genau was Du suchst. "L" habe ich mir vollständig abgewöhnt.


Sehe gerade, das hat Console32 ja bereits im Screenshot gezeigt. Ruhm und Anerkennung gebühren also ihm

Thema: Datenverlust in Datei durch Absturz beim Schliessen & schreiben der Config - Wie vermeiden?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

ein ähnliches Problem ist mir auch bekannt. Und zwar verwendet ein Kunde PC´s mit Akkubetrieb.
Wird der PC heruntergefahren, ist die letzte Aktion der Software, den "Schalter" umzulegen. Also den Strom zu trennen.
Das hat zu selbigem Verhalten geführt. Die Applikation bekommt vom OS die Aufforderung sich zu beenden, aber nicht mehr die Zeit die Konfig bis zum Ende zu schreiben.
Dort hatte ich regelmäßig das Problem.

Lösung war, dass ich meinen Serializer um ein "Modified"-Property ergänzt habe, welches sich bei jedem INotifyPropertyChanged.Notify() auf true und jedem Save() auf false gesetzt hat.
Somit wurden die Settings nur noch gespeichert, wenn sie mussten und nicht mehr bei jedem Programm-Ende.

Dabei noch eine zweite Datei parallel zu erstellen und im Falle eines Fehlers beim Deserialisieren zu laden, finde ich eigentlich auch recht charmant.

Thema: DLL oder eine abhängige Datei von Netzlaufwerk nicht gefunden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von jsp2011
Sobald ich aber den Ordner 1:1 auf ein Netzlaufwerk schiebe und dort versuche die Schnittstelle aufzurufen bekomme ich den Fehler dass die wrapper DLL oder ein abhängige Komponente nicht gefunden wird.

Hi,
genau da liegt der Hund begraben. Das Betriebssystem schiebt gerne DLL´s einen Riegel vor, die nicht direkt auf dem PC liegen.
Zu Recht, könnte ja sonst Jeder auf das Netzlaufwerk zugreifen und die DLL durch eine schadhafte austauschen.

Thema: WhatsAPP API Registrierung mit Telefonnummer gibt "old_version" oder "bad_param"
Am im Forum: Web-Technologien

Die API hat nur bis zu dem Zeitpunkt funktioniert, bis die Verschlüsselung eingeführt wurde.
Da diese Ende zu Ende funktioniert, ist es auch gar nicht mehr möglich.
Web-Whatsapp oder die Windows-Anwendung kommunizieren direkt mit der App auf dem Handy. Nicht mit dem Server!

Thema: Update DirectoryEntry: Wert ändert sich nicht
Am im Forum: Rund um die Programmierung

Es gibt eine spezielle Berechtigung um proxyAdresses zu ändern.
Erstellen und Löschen ist kein Problem, nur die Modifikation erfordert ein bestimmtes Recht:

MSDN: How to Use ADSI Edit to Apply Permissions

Thema: Update DirectoryEntry: Wert ändert sich nicht
Am im Forum: Rund um die Programmierung

Guten Morgen zusammen,

ich habe eine Synchronisation gebaut, die Kontakte im AD ablegt, so dass diese in Outlook bereitstehen.
Ist der Kontakt bereits synchronisiert, müssen Änderungen natürlich nachgepflegt werden. Das funktioniert auch soweit, es sei denn: Die Mail-Adresse ändert sich.
Diese bleibt einfach wie sie ist...
Ist das eine AD-Spezifische Geschichte ala unveränderbarer UniqueID?
Muss ich den Eintrag löschen und neu anlegen?

Der Code ist recht simpel:

DirectoryEntry.Properties["mail"].Value = CleanupSpaces(eMail);
var proxyAdresses = "SMTP:" + CleanupSpaces(eMail) + ";smtp:" + custNo + "@xxx.de";
var seperator = ';';
DirectoryEntry.Properties["proxyAddresses"].Value = proxyAdresses.Split(seperator);
DirectoryEntry.Properties["telephoneNumber"].Value = phoneNo;
DirectoryEntry.CommitChanges();
Die Telefonnummer ändert sich, die Mail bleibt wie sie ist.
In einen Try-Catch läuft der Code nicht rein. Kann das aber auch leider schlecht debuggen, da der Code in einer Datenbank-Anwendung ausgeführt wird.

Hat jemand damit bereits Erfahrungen gemacht?

Thema: Office.Interop.Outlook nach Umstellgun auf 64bit bringt Int64-Überlauf
Am im Forum: Office-Technologien

Hi MarsStein,

Du hast natürlich vollkommen Recht! Dachte das wäre nur der Aufruf von der Interop-Funktion. Aber entgegen meiner Annahme, habe ich wirklich noch einen Wrapper in der DLL gefunden. Manchmal ist man eben blind...

Aus

IntPtr fileDescriptorPointer = (IntPtr)((int)fileGroupDescriptorAPointer + Marshal.SizeOf(fileGroupDescriptorAPointer));
mach

IntPtr fileDescriptorPointer = (IntPtr)((Int64)fileGroupDescriptorAPointer + Marshal.SizeOf(fileGroupDescriptorAPointer));
und schon geht´s.

Danke für den Schubs in die richtige Richtung!

Thema: Office.Interop.Outlook nach Umstellgun auf 64bit bringt Int64-Überlauf
Am im Forum: Office-Technologien

Hallo zusammen,

ich verwende seit einigen Jahren in einem Projekt die Microsoft.Office.Interop.Outlook.dll.
Nun wurde die Hauptanwendung auf 64bit umgestellt.

Seit dem erhalte ich eine Fehlermeldung, sobald ich auf die Attachments einer Mail zugreifen möchte:

Fehler
Die arithmetische Operation hat einen Überlauf verursacht.
Das ganze passiert in der 2. Zeile:

var dataObject = new OutlookDataObject(iDataObj);
filenames = (string[])dataObject.GetData("FileGroupDescriptorW");
filestreams = (MemoryStream[])dataObject.GetData("FileContents");
fileCount = filenames.Length;

StackTrace:
Fehler
bei System.IntPtr.op_Explicit(IntPtr value)
bei MyDll.OutlookHelper.OutlookDataObject.GetData(String format, Boolean autoConvert)

Durch die Umstellung auf 64bit sind offenbar die Pointer nun vom Typ Int64.
Die Lösungen auf dem Netz "Stell doch auf 32 bit um" oder geht auf EWS, o.ä. sind beide nicht praktikabel.
Zum einen habe ich keinen Einfluss auf die Hauptanwendung und zum anderen brauche ich die Attachments einer aktuell in Outlook ausgewählten Mail.

Habe extra ein System mit 64bit Outlook aufgesetzt und mir die DLL gezogen (15.0.0.0), ohne Erfolg. Ansonsten konnte ich keine extra 64bit Version der Interop-Dll finden.

Wäre für Ideen oder Alternativen dankbar :)

Thema: Unterschied: Methodenaufruf im Parameter/ Variable im Parameter
Am im Forum: Grundlagen von C#

Und keinen Breakpoint im Debugger auf den Rückgabewert der Methode setzen kannst.

Thema: Suche C++ Programm für Gesichtserkennung in C#
Am im Forum: Rund um die Programmierung

Eine weitere Alternative könnte der Azure-Dienst sein:
Cognitive-Services/Face-API

Habe damit bisher nur etwas rumgespielt. Klappt aber schon ganz gut!

Thema: Servo Motor mit Ethernet
Am im Forum: Smalltalk

Hallo Chris,

ich kann Gü nur beipflichten! Das Projekt ist super.
Bisher habe ich aber auch alle Motoren-/Sensoren-Projekte mit Arduinos umgesetzt. Daher fehlt mir persönlich aktuell der Anwendungszweck aus .Net.
Für bestimmte Projekte aber sicherlich eine tolle Erleichterung. Und Anfänger geeignet.

Dir ebenfalls eine schöne Adventszeit!

Thema: Probleme mit Synchronisation von Kontakten bei Android mit Office 365
Am im Forum: Smalltalk

Wird der Kontakt wirklich entfernt?
Das würde mich doch stark wundern oO

Hast Du vielleicht im Telefonbuch dein O365 Privatkonto ausgeblendet?
Man kann dort Häkchen setzen, welche Quellen in den Kontakten angezeigt, bzw. herausgefiltert werden. Das hat schon das ein oder andere Mal für Verwirrung gesorgt.
Deshalb zeige ich immer nur Kontakte an, die auf dem Telefon liegen und verknüpfe diese dann ggf. mit den entsprechenden Diensten.

Thema: Beste Wahl für geräteunabhängige Softwareentwicklung für diverse mobile Geräte (CE/WM/WEH etc.)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Da kann ich Abt nur beipflichten!
Wir unterstützen Dich gerne bei konkreten Fragen, aber die komplette Arbeit werden wir Dir nicht abnehmen.

Die o.g. Betriebssysteme kannst Du definitiv nicht mit einer einzigen Softwarelösung unterstützen. Meine Liste hört absichtlich vor Windows Phone auf.
IoT ist auch wieder eine ganz andere Geschichte.

Wenn Dir die Verwendung der Symbol.dll für den Barcode-Scanner zu aufwändig ist, empfehle ich Dir ein anderes Projekt zu suchen. Bzw. bestätigt sich mir Abt´s Eindruck, dass Du Dich nicht ausreichend mit den Themen auseinandersetzt/einliest.

Der "Dienst" hat auf dem Gerät nichts verloren. Schau Dir mal ASP.Net an. Damit kannst Du die gewünschte Webseite(n) bauen. Im Codebehind entwickelst Du mit .Net und kannst Dich z.B. mit einer Datenbank verbinden, o.ä.

Thema: Beste Wahl für geräteunabhängige Softwareentwicklung für diverse mobile Geräte (CE/WM/WEH etc.)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

CE spielt praktisch keine Rolle, wichtig ist das Framework!

Habe eine Applikation, welche auf dem Compact Framework 2.0 basiert.
Sie läuft auf:

  • CE 5.0
  • CE 6.0
  • CE 6.5.X - Klassisch und Mobile
  • Windows 7 Embedded Compact
  • Windows 7 & 8 Embedded*
  • Win XP*
  • Win 7*
  • Win 8*
  • Win 8.1*
  • Win 10*
*Sofern man wie bereits angesprochen, manuell die fehlenden Framework-Komponenten mit ins Programmverzeichnis kopiert.

Die Unterschiede zwischen den Versionen sind marginal. Bei den Mobile-Versionen muss man ggf. manuell die Windowsleiste ausblenden und anders mit der Onscreen-Tastatur umgehen (Die es wiederum bei den Nicht-Compact-Versionen nicht gibt). Und ab CE 6.0 muss man bei der Verwendung von Webservices aufpassen, da dort ein paar Sicherheitsfeatures eingeführt wurden, die die Verbindung verlangsamen können.

CE 5.0 wurde 2004 eingeführt, das macht schonmal eine Unterstützung von 12 Jahren.
Auch wenn ich von der Verwendung aus Sicherheitsgründen massiv abrate!

Thema: Beste Wahl für geräteunabhängige Softwareentwicklung für diverse mobile Geräte (CE/WM/WEH etc.)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du kannst Windows CE, Windows Mobile, Windows Embedded, Windows Embedded Compact und ein vollständiges Windows mit einer Lösung verwenden.

Man programmiert auf Windows CE und liefert die System-DLL´s für die Betriebssysteme mit aus, in denen sie nicht enthalten sind.
System.dll
System.Drawing.dll
usw.
Dann kannst Du ohne weiteres die Applikation auch auf Windows XP bis Win10 ausführen.
Sie befinden sich unter:
C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\

Eine der wenigen Ausnahmen sind die Dateizugriffe. Die Pfade sind etwas anders und sollten in der Programmierung unterschieden werden (Stichwort "file:\\").

In dem Fall sind jedoch Windows Phone und andere Betriebssysteme nicht enthalten.
Da bietet sich natürlich eine Browserbasierte Lösung besser an. Allerdings hat man dann keinen nativen Zugriff auf z.B. das Dateisystem, Barcodescanner, Standby-Verhalten, Wlan, Verbindungsabbrüche, usw.
Deshalb wird vermutlich eine Kombination der "Ideal"-Weg sein.
Also ein Programm für jedes Betriebssystem, welches einen Webbrowser verwendet und ein paar native Zugriffe erlaubt. Dann hat man zwar auch mehrere Applikationen, die sind aber nur einfach gehalten und sehr ähnlich.

Verschiedene Auflösungen kannst Du dann mit Responsive-Design unterstützen.

Thema: Zum Speichern von Einstellungn lieber Ini oder Xml?
Am im Forum: GUI: Windows-Forms

Dann mische ich mich doch auch mal mit ein :)

Für alle meine Projekte verwende ich ein und die selbe Serializer-Klasse.
Diese stellt mir eine Funktion zum Laden und eine zum Speichern zur Verfügung. Per optionalen Parametern, kann ich den Pfad und die Art mitgeben.
Art umfasst aktuell: Xml, Json & Binary.

Wenn ich nun einen Dienst ohne GUI verwende, setze ich i.d.R. auf XML, da auch ein nicht-Entwickler-Kollege oder Kunde damit klar kommt.

Biete ich eine Einrichtung in der GUI oder es handelt sich um Daten, die nur von meiner Anwendung verwendet und angezeigt werden, setze ich auf Json.

Möchte ich nicht, dass jemand "mal eben" an der Konfig rumfummelt, verwende ich Binary. Hat aber den Nachteil, dass ich selbst auch nicht "mal eben" etwas ändern kann.

Verändert sich eine der o.g. Anforderungen, kann ich mit einem Parameter auf das nächstbeste Format wechseln.
Wenn aber möglich, verwende ich Json, da ich immer den Anspruch habe, eine kompakte Lösung bereitzustellen.

Ini verwende/unterstütze ich nicht, da es keinen sauberen, standardisierten Serializer gibt.

Thema: Wie übergebe ich ein Enum an eine Funktion?
Am im Forum: Grundlagen von C#

Hi LaTino,

das ist mir auch gerade aufgefallen!

Lag schlicht und ergreifend daran, dass ich das aus einem Compact Framework-Projekt kopiert habe.
Da gibt es weder GetValues, noch GetNames.

Schönes Wochenende :)

Thema: Wie übergebe ich ein Enum an eine Funktion?
Am im Forum: Grundlagen von C#

Gehe ich Recht in der Annahme dass Du das hier erreichen möchtest?

        public static List<string> EnumToList(Enum enumeration)
        {
            //get the enumeration type
            var et = enumeration.GetType();

            //get the public static fields (members of the enum)
            var fi = et.GetFields(BindingFlags.Static | BindingFlags.Public);

            //create a new enum array
            var values = new List<string>();

            //populate with the values
            for (var iEnum = 0; iEnum < fi.Length; iEnum++)
            {
                values.Add(fi[iEnum].GetValue(enumeration).ToString());
            }

            return values;
        }

Der Aufruf geht dann genau so wie Du es möchtest mit EnumToList(new DISP()).

Um das Ergebnis z.B. einer DataSource einer Combobox zu hinterlegen, kann man das wie folgt machen:

        public static Enum[] EnumToArray(Enum enumeration)
        {
            //get the enumeration type
            var et = enumeration.GetType();

            //get the public static fields (members of the enum)
            var fi = et.GetFields(BindingFlags.Static | BindingFlags.Public);

            //create a new enum array
            var values = new Enum[fi.Length];

            //populate with the values
            for (var iEnum = 0; iEnum < fi.Length; iEnum++)
            {
                values[iEnum] = (Enum)fi[iEnum].GetValue(enumeration);
            }
            
            return values;
        }
Und so aufrufen:

cbMsgLogType.DataSource = Converter.EnumToArray(_setup.MessageLogType);
Hat den Vorteil, dass man den Wert direkt zurück casten kann.

Thema: SerialPort Kommunikation mit Controllino (Arduino): Senden bis Antwort okay ist
Am im Forum: Rund um die Programmierung

Hallo Elchi,

da besteht ein grundsätzliches Verständnisproblem. Auch ohne dass ich in den Code geschaut habe.

Zitat von Elchi
Da der Controllino nur in seiner "Freizeit" den SerialPort liest, muss ich den Befehl durchaus 3-4 mal schicken.
Das ist das erste Design-Problem. Der Arduino verfügt über eine hardwareseitige Serielle-Schnittstelle. Das bedeutet, die Daten werden gebuffert und gehen nicht verloren.
Es sei denn: Du rufst im Code flush() auf oder die Zeichen überschreiten die Größe von 64byte.

Wenn der Arduino sauber entwickelt wäre, müsstest Du auch keine Befehle mehrfach versenden.
Zitat von Elchi
Ich hatte Anfangs mit dem "DataRecieved"-Event experimentiert, aber das hat nicht geklappt. Ich bekam immer Fehlermeldungen mit dem Sinn "Textbox wird aus anderem Thread gefüllt -> nicht zulässig". Das habe ich nicht in den Griff bekommen und mir so meine eigene Abfrage gebastelt. Da wird es dann allerdings mit dem Not-Aus schwer,
Auch hier gibt es ein Verständnis-Problem.
Das DataReceived-Event wird aufgerufen, sobald Daten bereitstehen. Das kann zu jeder Zeit passieren und läuft daher nicht im Thread Deiner Form, sondern separat.
Um nun den Wert aus dem Event in dem Thread der Form anzeigen zu können, solltest Du Dich mit Invoke beschäftigen.

Habe gerade leider nicht mehr Zeit, sonst würde ich mir den Code mal anschauen.