public static void printStatus(Smc device) { SmcVariables vars = device.getSmcVariables(); Console.WriteLine("Model: " + Smc.productIdToLongModelString(device.productId)); Console.WriteLine("Serial Number: " + device.getSerialNumber()); Console.WriteLine("Firmware Version: " + device.getFirmwareVersionString()); Console.WriteLine("Last Reset: " + device.getResetCause()); Console.WriteLine(); printErrors(vars.errorStatus, "Errors currently stopping motor"); printErrors(vars.errorOccurred, "Errors that occurred since last check"); printSerialErrors(vars.serialErrorOccurred, "Serial errors that occurred since last check"); printLimitStatus(vars.limitStatus, "Active limits"); Console.WriteLine(channelStatusFormat, "Channel", "Unlimited", "Raw", "Scaled"); printChannelStatus(vars.rc1, "RC 1"); printChannelStatus(vars.rc2, "RC 2"); printChannelStatus(vars.analog1, "Analog 1"); printChannelStatus(vars.analog2, "Analog 2"); Console.WriteLine(); Console.WriteLine("Current Speed: " + vars.speed); Console.WriteLine("Target Speed: " + vars.targetSpeed); Console.WriteLine("Brake Amount: " + (vars.brakeAmount == 0xFF ? "N/A" : vars.brakeAmount.ToString())); Console.WriteLine("VIN: " + vars.vinMv.ToString() + " mV"); Console.WriteLine("Temperature: " + Smc.temperatureToString(vars.temperature)); Console.WriteLine("RC Period: " + Smc.rcPeriodToString(vars.rcPeriod)); Console.WriteLine("Baud rate: " + (vars.baudRateRegister == 0 ? "N/A" : (Smc.convertBaudRegisterToBps(vars.baudRateRegister).ToString() + " bps"))); uint seconds = vars.timeMs / 1000; uint minutes = seconds / 60; uint hours = minutes / 60; Console.WriteLine("Up time: {0}:{1:D2}:{2:D2}.{3:D3}", hours, minutes % 60, seconds % 60, vars.timeMs % 1000); Console.WriteLine(); const string motorLimitFormat = "{0, -18} {1,9} {2,8}"; Console.WriteLine(motorLimitFormat, "Limit", "Forward", "Reverse"); Console.WriteLine(motorLimitFormat, "Max. speed", vars.forwardLimits.maxSpeed, vars.reverseLimits.maxSpeed); Console.WriteLine(motorLimitFormat, "Starting speed", vars.forwardLimits.startingSpeed, vars.reverseLimits.startingSpeed); Console.WriteLine(motorLimitFormat, "Max. acceleration", Smc.accelDecelToString(vars.forwardLimits.maxAcceleration), Smc.accelDecelToString(vars.reverseLimits.maxAcceleration)); Console.WriteLine(motorLimitFormat, "Max. deceleration", Smc.accelDecelToString(vars.forwardLimits.maxDeceleration), Smc.accelDecelToString(vars.reverseLimits.maxDeceleration)); Console.WriteLine(motorLimitFormat, "Brake duration", vars.forwardLimits.brakeDuration, vars.reverseLimits.brakeDuration); }