Laden...

Portierung von .NET Framework nach .NET Core mit SerialPort - Fehlermeldung beim Schutzgrad

Erstellt von Thommy vor 6 Jahren Letzter Beitrag vor 6 Jahren 6.070 Views
Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren
Portierung von .NET Framework nach .NET Core mit SerialPort - Fehlermeldung beim Schutzgrad

Moinmoin,

ich habe gerade versuch ein Projekt von Visual Studio 2015 .Net Framework zu Visual Studio 2017 .NetCore zu Portieren.

Leider gibt es die Klasse "using System.IO.Ports;" (ist das Richtig Klasse oder heißt es anders?) nicht und ich bin auf der Seite SerialPortStreamCore fündig geworden.
Ich habe mir das Paket mit der Paket-Manager-Konsole "Install-Package SerialPortStreamCore" geladen. Und Visual Studio neu gestartet.

Nun ist die Zeile "using System.IO.Ports;" immer noch dezent grau, wird aber nicht mehr als Fehler angezeigt. Dafür bekomme ich nun folgenden Fehler in der Zeile> Fehlermeldung:

"public SerialPort port = new SerialPort();" CS0122"Der Zugriff auf"SerialPort" ist aufgrund des Schutzgrads nicht möglich"

Weiß jemand was das genau bedeutet und wie ich den Fehler beheben kann?

Danke und viele Grüße Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

16.835 Beiträge seit 2008
vor 6 Jahren

Nun ist die Zeile "using System.IO.Ports;" immer noch dezent grau,

Das bedeutet, dass das using nicht verwendet wird.

Dafür bekomme ich nun folgenden Fehler in der Zeile"public SerialPort port = new SerialPort();" CS0122"

Was darauf schließen lässt, dass hier SerialPort nicht die Klasse System.IO.Ports.SerialPort ist, sondern eine andere Klasse, deren Konstruktor nicht public ist.
Daher auch hier der Hinweis auf die ausgegraute Zeile.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Hallo Abt,

danke für die schnelle Antwort.

Das bedeutet, dass das using nicht verwendet wird. Ich hatte mir schon gedacht das es nicht verwendet wird, es wurde nur vorher als Fehler ausgegeben und daher habe ich es erwähnt.

Hast du denn noch ein Tipp was ich machen kann damit der zweite Fehler behoben wird?

Oder wie ich einen SerialPort under .Net Core verwenden kann?

Danke und bis bald,

cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

P
441 Beiträge seit 2014
vor 6 Jahren

Hallo Thommy,

mit der SerialPortStream-Bibliothek hast du doch etwas gefunden, was unter .NET Standard funktionieren sollte.
Du brauchst lt. Github Seite allerdings eine 2.x Version, die wohl noch nicht in nuget verfügbar ist.
Auch heißt die Klasse dann nicht mehr SerialPort sondern SerialPortStream und das handling ist anders.

16.835 Beiträge seit 2008
vor 6 Jahren

Dass Du das unter .NET Core verwenden willst, hättest ruhig sagen können. Wir können noch nicht hellsehen.

.NET Core 1.x unterstützt kein SerialPort; ergo bringt der Namespace dazu auch nichts.
Und natürlich kannst Du mit .NET Core 1.x nicht ohne weiteres einfach NET Framework Referenzen nutzen.
Serial Ports sind so ohne weiteres auch nicht Crossplattform fähig; daher wirst Du hier pro Plattform eine eigene Implementierung benötigen, wie bei anderen, unmanaged Elementen auch.

Welche Alternative Du hast; da müsste ich auch Google und GitHub um Rat fragen...evtl. hast Du da ja schon das richtige Paket - aber nutzt es halt falsch.
Das, was Du da jedenfalls als SerialPort nutzt - woher die Klasse auch immer kommt - hat eben keinen public Constructor.
Schau in dessen Doku, wie dort der SerialPort funktioniert und die Klasse verwendet werden kann.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Super Danke für eure Hilfe.
Leider kann ich es erst morgen Testen und ich weiß auch nicht welche Version installiert wurde. Wie kann ich denn manuell die Version 2.x installieren?
Gibt es denn eine Möglichkeit meinen bestehenden Code der auf .Net Framework basiert auf .Net Core ohne großen aufwand umzuschreiben.

Danke und bis bald,

cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

16.835 Beiträge seit 2008
vor 6 Jahren

Gibt es denn eine Möglichkeit meinen bestehenden Code der auf .Net Framework basiert auf .Net Core ohne großen aufwand umzuschreiben.

Wenn Du Elemente basierend auf dem .NET Standard in der jeweiligen Version verwendest, ja.
Aber wir kennen Dein Code nicht, was sollen wir sagen? 🤔 .NET Core zu verwenden macht nicht in allen Szenarien sinn.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Ich werde es morgen gleich mal testen und es hier Berichten 😉
Danke erstmal und ich hoffe es klappt morgen alles 😉

cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Via NuGet wurde SerialPortStream (2.1.1) und SerialPortStreamCore(2.2.0) installiert und in dem Abhängigkeiten eingefügt.
Leider weiß ich nicht genau wie ich nun eine Port erstelle und nutzen kann, einbinden der SerialPortStream, SerialPortStreamCore Kalsse bzw. erstellen einer Serial Port Insanste.
Es wäre toll wenn mir jemand einen kleinen Roten Faden zeigen könnte 😉

Danke und VG Thommy

(Sorry C# und .Net Core etc sind noch etwas neu für mich 😐 )

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Weiß jemand wie ich das Projekt "SerialPortStream-2.x" in meinen Code einbinden kann und so einen port via " SerialPortStream src = new SerialPortStream();" einbinden kann?

LG Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

16.835 Beiträge seit 2008
vor 6 Jahren

[FAQ] CS0234 / CS0246 - Der Typ- oder Namespacename "Foo" konnte nicht gefunden werden

Bitte auch ein wenig selbst die Fehlermeldungen googlen.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Hallo Abt,

sorry wenn ich es noch nicht verstehe (Ich habe auch schon recht viel gegoogelt), für mich ist das alles noch recht viel neuland.
#ich hatte ein Programm welches unter .Net Framework gut funktioniert und nutzte in meinem Quellcode "using System.IO.Ports;" und den Befehl "SerialPort port = new SerialPort();"

Mit dem umstieg auf .Net Core fiel nun "System.IO.Ports;" weg und ich konnte den Befehl "SerialPort port = new SerialPort();" nicht mehr nutzen.

Diese Funktion soll aber im Paket "SerialPortStreamCore" vorhanden sein, ich habe die Pakete "SerialPortStreamCore 2.1.0" und "SerialPortStream 2.1.1" nach Anleitung mit der Paket-Manager-Konsole geladen und diese Tauchen auch in den Abhängigkeiten unter NuGet in meinen Projekt auf.
Leider weiß ich nun nicht genau wie ich auf den Port zugreifen kann 😭
und ich weiß nicht ob ich falsch Google aber leider finde ich auch keine Anleitung wie ich das Paket SerialPortStreamCore nun genau verwende.
Sorry wenn weine Fragen etwas plump rüberkommen, aber ich bekomme es einfach nicht hin 😭

Danke für eure Hilfe, cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

4.939 Beiträge seit 2008
vor 6 Jahren

Hallo,

da hast du wohl etwas falsch verstanden. SerialPortStream ist zwar ein Ersatz für SerialPort, aber es benutzt eben einen anderen Klassennamen und auch einen eigenen Namensbereich (namespace), s. SerialPortStream.cs

Du müßtest also folgendes schreiben:


using RJCP.IO.Ports;

SerialPortStream serialPort = new SerialPortStream("COM1");

Sieh dir auch mal die Unit-Tests dazu an: SerialPortStreamTest

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Super, genau das habe ich gesucht 😁
Vielen Dank für eure Hilfe 👍

thx and cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.