@@ -187,12 +187,20 @@ private async Task<List<TestResult>> RunTestOnHardwareAsync(List<TestCase> tests
187
187
List < TestResult > results = PrepareListResult ( tests ) ;
188
188
List < byte [ ] > assemblies = new List < byte [ ] > ( ) ;
189
189
int retryCount = 0 ;
190
- string port = _settings . RealHardwarePort == string . Empty ? "COM4" : _settings . RealHardwarePort ;
191
- //var serialDebugClient = PortBase.CreateInstanceForSerial("", null, true, new List<string>() { port });
192
- var serialDebugClient = PortBase . CreateInstanceForSerial ( true , null ) ;
190
+
191
+ var serialDebugClient = PortBase . CreateInstanceForSerial ( true , 2000 ) ;
193
192
194
193
retryConnection :
195
- _logger . LogMessage ( $ "Checking device on port { port } .", Settings . LoggingLevel . Verbose ) ;
194
+
195
+ if ( string . IsNullOrEmpty ( _settings . RealHardwarePort ) )
196
+ {
197
+ _logger . LogMessage ( $ "Waiting for device enumeration to complete.", Settings . LoggingLevel . Verbose ) ;
198
+ }
199
+ else
200
+ {
201
+ _logger . LogMessage ( $ "Checking device on port { _settings . RealHardwarePort } .", Settings . LoggingLevel . Verbose ) ;
202
+ }
203
+
196
204
while ( ! serialDebugClient . IsDevicesEnumerationComplete )
197
205
{
198
206
Thread . Sleep ( 1 ) ;
@@ -218,17 +226,29 @@ private async Task<List<TestResult>> RunTestOnHardwareAsync(List<TestCase> tests
218
226
219
227
retryCount = 0 ;
220
228
NanoDeviceBase device ;
221
- if ( serialDebugClient . NanoFrameworkDevices . Count > 1 )
229
+
230
+ if ( serialDebugClient . NanoFrameworkDevices . Count > 1
231
+ && ! string . IsNullOrEmpty ( _settings . RealHardwarePort ) )
222
232
{
223
- device = serialDebugClient . NanoFrameworkDevices . Where ( m => m . SerialNumber == port ) . First ( ) ;
233
+ // get the device at the requested COM port (if there is one)
234
+ device = serialDebugClient . NanoFrameworkDevices . FirstOrDefault ( m => m . SerialNumber == _settings . RealHardwarePort ) ;
235
+
236
+ // sanity check
237
+ if ( device is null )
238
+ {
239
+ // no device, done here
240
+ _logger . LogMessage ( $ "No device available at { _settings . RealHardwarePort } .", Settings . LoggingLevel . Verbose ) ;
241
+ return results ;
242
+ }
224
243
}
225
244
else
226
245
{
246
+ // no COM port requested, just grab the 1st one
227
247
device = serialDebugClient . NanoFrameworkDevices [ 0 ] ;
228
248
}
229
249
230
250
_logger . LogMessage (
231
- $ "Getting things with { device . Description } ",
251
+ $ "Getting things ready with { device . Description } ",
232
252
Settings . LoggingLevel . Detailed ) ;
233
253
234
254
// check if debugger engine exists
@@ -251,6 +271,7 @@ private async Task<List<TestResult>> RunTestOnHardwareAsync(List<TestCase> tests
251
271
// Give it a bit of time
252
272
await Task . Delay ( 100 ) ;
253
273
retryCount ++ ;
274
+
254
275
goto retryDebug ;
255
276
}
256
277
else
0 commit comments