2017-03-10 46 views
5

Próbuję utworzyć aplikację konsoli za pomocą kodu Visual studio z .NET Core i uzyskać wszystkie dostępne porty. Jak używać System.IO.Ports.SerialPortclass w kodzie Visual Studio? Próbuję zadeklarować to za pomocą instrukcji using, ale dostępna jest tylko Compression i MemoryMappedFiles w przestrzeni nazw System.IO..NET Core - użyj System.IO.Ports.SerialPort w kodzie Visual Studio kod

Używam .NET rdzenia 1.1.1 SDK

+0

Jest to typowy problem z .NETCore, to jeszcze nie koniec. Code skeleton został sprawdzony miesiąc temu (https://github.com/dotnet/corefx/tree/master/src/System.IO.Ports/src/System/IO/Ports), jest przeznaczony dla [Wydanie 2.0] (https://github.com/dotnet/corefx/pull/15671). Minie trochę czasu, ale nie ma jeszcze żadnych prób przeniesienia tego na Unixa. –

+0

Dzięki, widzę. będzie czekać na oficjalne wydanie, aby z niego skorzystać. – janmvtrinidad

Odpowiedz

-3

System.IO.Ports zaprezentuje w System.dll więc domyślnie zostanie on dodany do projektu podczas jego tworzenia.

następnie trzeba dodać

Using System.IO.Ports Namespace to your class 

Jest to próbka, która da nam dostępnych portów.

private void getAllAvailablePorts() 
{ 
    // Get a list of serial port names. 
    string[] ports = SerialPort.GetPortNames(); 

    Console.WriteLine("The following serial ports were found:"); 

    // Display each port name to the console. 
    foreach (string port in ports) 
    { 
     Console.WriteLine(port); 
     } 
} 
+0

Nie mogę zaimportować System.IO.Ports w .Net Core za pomocą kodu Visual studio – janmvtrinidad

+0

Myślę, że ten link może ci pomóc .. http://stackoverflow.com/questions/40689840/rs232-library-for-net -core –

+0

wydaje się, że nie jest gotowy, jak @Hans Passant powiedział w komentarzu powyżej. – janmvtrinidad

2

Jeśli używasz systemu operacyjnego Linux, możesz użyć biblioteki SerialPortStream. Wymaga plików binarnych libserial i mogłem go skompilować tylko dla systemu Linux (nie dla MacOS lub Windows).

Innym sposobem jest użycie pakietu Mono i Mono.Posix.NETStandard. W ten sposób działa tylko dla projektów NETStandard 2.0.

Skopiowałem źródła klas System.IO.Ports z Mono do mojego projektu NETStandard 2.0, dodałem odniesienia Mono.Posix.NETStandard, Microsoft.Win32.Registry i zawarłem sekcję <AllowUnsafeBlocks>true</AllowUnsafeBlocks> do mojego pliku .csproj. I działa na MacO i Windows.