Skip to content

Commit f1e04f5

Browse files
authored
Migrating to System.IO.Ports (#28)
1 parent abec8f3 commit f1e04f5

File tree

8 files changed

+56
-47
lines changed

8 files changed

+56
-47
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ Note that you can adjust the baud speed and all other elements.
109109
Or directly using a SerialLogger:
110110

111111
```csharp
112-
SerialDevice _serial;
113-
_serial = SerialDevice.FromId("COM6", 115200);
112+
SerialPort _serial;
113+
_serial = new SerialPort("COM6", 115200);
114114
SerialLogger _logger = new SerialLogger(ref _serial);
115115
_logger.MinLogLevel = LogLevel.Trace;
116116
_logger.LogTrace("This is a trace");

Tests/UnitTestDebugLogging/SerialTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using nanoFramework.Logging.Serial;
88
using nanoFramework.TestFramework;
99
using System;
10-
using Windows.Devices.SerialCommunication;
10+
using System.IO.Ports;
1111
#if BUIID_FOR_ESP32
1212
using nanoFramework.Hardware.Esp32;
1313
#endif

Tests/UnitTestDebugLogging/UnitTestDebugLogging.nfproj

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,29 +51,33 @@
5151
<HintPath>..\..\packages\nanoFramework.Runtime.Events.1.9.0-preview.26\lib\nanoFramework.Runtime.Events.dll</HintPath>
5252
<Private>True</Private>
5353
</Reference>
54+
<Reference Include="nanoFramework.System.Collections, Version=1.2.0.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
55+
<HintPath>..\..\packages\nanoFramework.System.Collections.1.2.0-preview.55\lib\nanoFramework.System.Collections.dll</HintPath>
56+
<Private>True</Private>
57+
<SpecificVersion>True</SpecificVersion>
58+
</Reference>
5459
<Reference Include="nanoFramework.System.Text, Version=1.1.1.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
5560
<HintPath>..\..\packages\nanoFramework.System.Text.1.1.1-preview.51\lib\nanoFramework.System.Text.dll</HintPath>
5661
<Private>True</Private>
5762
</Reference>
58-
<Reference Include="nanoFramework.TestFramework, Version=1.0.121.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
59-
<HintPath>..\..\packages\nanoFramework.TestFramework.1.0.121\lib\nanoFramework.TestFramework.dll</HintPath>
63+
<Reference Include="nanoFramework.TestFramework, Version=1.0.122.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
64+
<HintPath>..\..\packages\nanoFramework.TestFramework.1.0.122\lib\nanoFramework.TestFramework.dll</HintPath>
6065
<Private>True</Private>
66+
<SpecificVersion>True</SpecificVersion>
6167
</Reference>
6268
<Reference Include="nanoFramework.UnitTestLauncher, Version=0.0.0.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
63-
<HintPath>..\..\packages\nanoFramework.TestFramework.1.0.121\lib\nanoFramework.UnitTestLauncher.exe</HintPath>
69+
<HintPath>..\..\packages\nanoFramework.TestFramework.1.0.122\lib\nanoFramework.UnitTestLauncher.exe</HintPath>
6470
<Private>True</Private>
71+
<SpecificVersion>True</SpecificVersion>
6572
</Reference>
6673
<Reference Include="System.IO.FileSystem, Version=1.0.1.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
6774
<HintPath>..\..\packages\nanoFramework.System.IO.FileSystem.1.0.1-preview.16\lib\System.IO.FileSystem.dll</HintPath>
6875
<Private>True</Private>
6976
</Reference>
70-
<Reference Include="Windows.Devices.SerialCommunication, Version=1.3.4.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
71-
<HintPath>..\..\packages\nanoFramework.Windows.Devices.SerialCommunication.1.3.4-preview.94\lib\Windows.Devices.SerialCommunication.dll</HintPath>
72-
<Private>True</Private>
73-
</Reference>
74-
<Reference Include="Windows.Storage.Streams, Version=1.12.2.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
75-
<HintPath>..\..\packages\nanoFramework.Windows.Storage.Streams.1.12.2-preview.5\lib\Windows.Storage.Streams.dll</HintPath>
77+
<Reference Include="System.IO.Ports, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
78+
<HintPath>..\..\packages\nanoFramework.System.IO.Ports.1.0.0-preview.17\lib\System.IO.Ports.dll</HintPath>
7679
<Private>True</Private>
80+
<SpecificVersion>True</SpecificVersion>
7781
</Reference>
7882
</ItemGroup>
7983
<ItemGroup>
@@ -92,11 +96,11 @@
9296
<ProjectConfigurationsDeclaredAsItems />
9397
</ProjectCapabilities>
9498
</ProjectExtensions>
95-
<Import Project="..\..\packages\nanoFramework.TestFramework.1.0.121\build\nanoFramework.TestFramework.targets" Condition="Exists('..\..\packages\nanoFramework.TestFramework.1.0.121\build\nanoFramework.TestFramework.targets')" />
99+
<Import Project="..\..\packages\nanoFramework.TestFramework.1.0.122\build\nanoFramework.TestFramework.targets" Condition="Exists('..\..\packages\nanoFramework.TestFramework.1.0.122\build\nanoFramework.TestFramework.targets')" />
96100
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
97101
<PropertyGroup>
98102
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.</ErrorText>
99103
</PropertyGroup>
100-
<Error Condition="!Exists('..\..\packages\nanoFramework.TestFramework.1.0.121\build\nanoFramework.TestFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\nanoFramework.TestFramework.1.0.121\build\nanoFramework.TestFramework.targets'))" />
104+
<Error Condition="!Exists('..\..\packages\nanoFramework.TestFramework.1.0.122\build\nanoFramework.TestFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\nanoFramework.TestFramework.1.0.122\build\nanoFramework.TestFramework.targets'))" />
101105
</Target>
102-
</Project>
106+
</Project>

Tests/UnitTestDebugLogging/packages.config

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
<package id="nanoFramework.CoreLibrary" version="1.10.4-preview.11" targetFramework="netnanoframework10" />
44
<package id="nanoFramework.Hardware.Esp32" version="1.3.3-preview.14" targetFramework="netnanoframework10" />
55
<package id="nanoFramework.Runtime.Events" version="1.9.0-preview.26" targetFramework="netnanoframework10" />
6+
<package id="nanoFramework.System.Collections" version="1.2.0-preview.55" targetFramework="netnanoframework10" />
67
<package id="nanoFramework.System.IO.FileSystem" version="1.0.1-preview.16" targetFramework="netnanoframework10" />
8+
<package id="nanoFramework.System.IO.Ports" version="1.0.0-preview.17" targetFramework="netnanoframework10" />
79
<package id="nanoFramework.System.Text" version="1.1.1-preview.51" targetFramework="netnanoframework10" />
8-
<package id="nanoFramework.TestFramework" version="1.0.121" targetFramework="netnanoframework10" developmentDependency="true" />
9-
<package id="nanoFramework.Windows.Devices.SerialCommunication" version="1.3.4-preview.94" targetFramework="netnanoframework10" />
10-
<package id="nanoFramework.Windows.Storage.Streams" version="1.12.2-preview.5" targetFramework="netnanoframework10" />
10+
<package id="nanoFramework.TestFramework" version="1.0.122" targetFramework="netnanoframework10" developmentDependency="true" />
1111
</packages>

nanoFramework.Logging.Serial/SerialLogger.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
using Microsoft.Extensions.Logging;
77
using System;
8+
using System.IO;
9+
using System.IO.Ports;
810
using System.Reflection;
9-
using Windows.Devices.SerialCommunication;
10-
using Windows.Storage.Streams;
1111

1212
namespace nanoFramework.Logging.Serial
1313
{
@@ -16,18 +16,22 @@ namespace nanoFramework.Logging.Serial
1616
/// </summary>
1717
public class SerialLogger : ILogger
1818
{
19-
private readonly DataWriter _outputDataWriter;
19+
private readonly SerialPort _serialPort;
2020

2121
/// <summary>
2222
/// Creates a new instance of the <see cref="SerialLogger"/>
2323
/// </summary>
2424
/// <param name="serialDevice">The serial port to use</param>
2525
/// <param name="loggerName">The logger name</param>
26-
public SerialLogger(ref SerialDevice serialDevice, string loggerName)
26+
public SerialLogger(ref SerialPort serialDevice, string loggerName)
2727
{
28-
SerialDevice = serialDevice;
28+
_serialPort = serialDevice;
29+
if (!_serialPort.IsOpen)
30+
{
31+
_serialPort.Open();
32+
}
33+
2934
LoggerName = loggerName;
30-
_outputDataWriter = new DataWriter(serialDevice.OutputStream);
3135
MinLogLevel = LogLevel.Debug;
3236
}
3337

@@ -39,7 +43,7 @@ public SerialLogger(ref SerialDevice serialDevice, string loggerName)
3943
/// <summary>
4044
/// Name of the serial device
4145
/// </summary>
42-
public SerialDevice SerialDevice { get; }
46+
public SerialPort SerialPort => _serialPort;
4347

4448
/// <summary>
4549
/// Sets the minimum log level
@@ -64,8 +68,7 @@ public void Log(LogLevel logLevel, EventId eventId, string state, Exception exce
6468
msgSerial = $"{(string)format.Invoke(null, new object[] { LoggerName, logLevel, eventId, state, exception })}\r\n";
6569
}
6670

67-
_outputDataWriter.WriteString(msgSerial);
68-
_outputDataWriter.Store();
71+
_serialPort.Write(msgSerial);
6972
}
7073
}
7174
}

nanoFramework.Logging.Serial/SerialLoggerFactory.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55

66
using Microsoft.Extensions.Logging;
7-
using Windows.Devices.SerialCommunication;
7+
using System.IO.Ports;
88

99
namespace nanoFramework.Logging.Serial
1010
{
@@ -13,13 +13,13 @@ namespace nanoFramework.Logging.Serial
1313
/// </summary>
1414
public class SerialLoggerFactory : ILoggerFactory
1515
{
16-
private SerialDevice _serial;
16+
private SerialPort _serial;
1717
private readonly string _comPort;
18-
private readonly uint _baudRate;
18+
private readonly int _baudRate;
1919
private readonly ushort _dataBits;
20-
private readonly SerialParity _parity;
21-
private readonly SerialStopBitCount _stopBits;
22-
private readonly SerialHandshake _handshake;
20+
private readonly Parity _parity;
21+
private readonly StopBits _stopBits;
22+
private readonly Handshake _handshake;
2323

2424
/// <summary>
2525
/// Create a new instance of <see cref="SerialLoggerFactory"/> from a <see cref="SerialDevice"/>.
@@ -32,11 +32,11 @@ public class SerialLoggerFactory : ILoggerFactory
3232
/// <param name="handshake"></param>
3333
public SerialLoggerFactory(
3434
string comPort,
35-
uint baudRate = 9600,
35+
int baudRate = 9600,
3636
ushort dataBits = 8,
37-
SerialParity parity = SerialParity.None,
38-
SerialStopBitCount stopBits = SerialStopBitCount.One,
39-
SerialHandshake handshake = SerialHandshake.None)
37+
Parity parity = Parity.None,
38+
StopBits stopBits = StopBits.One,
39+
Handshake handshake = Handshake.None)
4040
{
4141
_comPort = comPort;
4242
_baudRate = baudRate;
@@ -49,7 +49,7 @@ public SerialLoggerFactory(
4949
/// <inheritdoc/>
5050
public ILogger CreateLogger(string categoryName)
5151
{
52-
_serial = SerialDevice.FromId(_comPort);
52+
_serial = new SerialPort(_comPort);
5353
_serial.BaudRate = _baudRate;
5454
_serial.Parity = _parity;
5555
_serial.StopBits = _stopBits;

nanoFramework.Logging.Serial/nanoFramework.Logging.Serial.nfproj

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,19 @@
3232
<HintPath>..\packages\nanoFramework.Runtime.Events.1.9.0-preview.26\lib\nanoFramework.Runtime.Events.dll</HintPath>
3333
<Private>True</Private>
3434
</Reference>
35-
<Reference Include="nanoFramework.System.Text, Version=1.1.1.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
36-
<HintPath>..\packages\nanoFramework.System.Text.1.1.1-preview.51\lib\nanoFramework.System.Text.dll</HintPath>
35+
<Reference Include="nanoFramework.System.Collections, Version=1.2.0.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
36+
<HintPath>..\packages\nanoFramework.System.Collections.1.2.0-preview.55\lib\nanoFramework.System.Collections.dll</HintPath>
3737
<Private>True</Private>
38+
<SpecificVersion>True</SpecificVersion>
3839
</Reference>
39-
<Reference Include="Windows.Devices.SerialCommunication, Version=1.3.4.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
40-
<HintPath>..\packages\nanoFramework.Windows.Devices.SerialCommunication.1.3.4-preview.94\lib\Windows.Devices.SerialCommunication.dll</HintPath>
40+
<Reference Include="nanoFramework.System.Text, Version=1.1.1.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
41+
<HintPath>..\packages\nanoFramework.System.Text.1.1.1-preview.51\lib\nanoFramework.System.Text.dll</HintPath>
4142
<Private>True</Private>
4243
</Reference>
43-
<Reference Include="Windows.Storage.Streams, Version=1.12.2.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
44-
<HintPath>..\packages\nanoFramework.Windows.Storage.Streams.1.12.2-preview.5\lib\Windows.Storage.Streams.dll</HintPath>
44+
<Reference Include="System.IO.Ports, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c07d481e9758c731">
45+
<HintPath>..\packages\nanoFramework.System.IO.Ports.1.0.0-preview.17\lib\System.IO.Ports.dll</HintPath>
4546
<Private>True</Private>
47+
<SpecificVersion>True</SpecificVersion>
4648
</Reference>
4749
</ItemGroup>
4850
<ItemGroup>
@@ -64,4 +66,4 @@
6466
</PropertyGroup>
6567
<Error Condition="!Exists('..\packages\Nerdbank.GitVersioning.3.4.194\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Nerdbank.GitVersioning.3.4.194\build\Nerdbank.GitVersioning.targets'))" />
6668
</Target>
67-
</Project>
69+
</Project>

nanoFramework.Logging.Serial/packages.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<packages>
33
<package id="nanoFramework.CoreLibrary" version="1.10.4-preview.11" targetFramework="netnanoframework10" />
44
<package id="nanoFramework.Runtime.Events" version="1.9.0-preview.26" targetFramework="netnanoframework10" />
5+
<package id="nanoFramework.System.Collections" version="1.2.0-preview.55" targetFramework="netnanoframework10" />
6+
<package id="nanoFramework.System.IO.Ports" version="1.0.0-preview.17" targetFramework="netnanoframework10" />
57
<package id="nanoFramework.System.Text" version="1.1.1-preview.51" targetFramework="netnanoframework10" />
6-
<package id="nanoFramework.Windows.Devices.SerialCommunication" version="1.3.4-preview.94" targetFramework="netnanoframework10" />
7-
<package id="nanoFramework.Windows.Storage.Streams" version="1.12.2-preview.5" targetFramework="netnanoframework10" />
88
<package id="Nerdbank.GitVersioning" version="3.4.194" developmentDependency="true" targetFramework="netnanoframework10" />
99
</packages>

0 commit comments

Comments
 (0)