# HG changeset patch # User Jacob Alexander # Date 1391502453 28800 # Node ID 71430b08fe81881a9055dc3c2bdfbee49f37cd7f # Parent b90e5316ffe7131f4cc6e4332c07effc2494a680 Force curve gauge is feature complete!! - Fixed no argument default (would skip the null in some cli commands) - Added free running force/distance measure - Most of the help information - Zeroing force and distance - Start/End marker setting diff -r b90e5316ffe7 -r 71430b08fe81 Debug/cli/cli.c --- a/Debug/cli/cli.c Mon Feb 03 00:41:57 2014 -0800 +++ b/Debug/cli/cli.c Tue Feb 04 00:27:33 2014 -0800 @@ -137,7 +137,11 @@ switch ( CLILineBuffer[prev_buf_pos] ) { case 0x0D: // Enter - CLILineBufferCurrent--; // Remove the Enter + CLILineBuffer[CLILineBufferCurrent - 1] = ' '; // Replace Enter with a space (resolves a bug in args) + + // Remove the space if there is no command + if ( CLILineBufferCurrent == 1 ) + CLILineBufferCurrent--; // Process the current line buffer commandLookup_cli(); diff -r b90e5316ffe7 -r 71430b08fe81 main.c --- a/main.c Mon Feb 03 00:41:57 2014 -0800 +++ b/main.c Tue Feb 04 00:27:33 2014 -0800 @@ -56,9 +56,16 @@ void cliFunc_gaugeHelp ( char* args ); void cliFunc_single ( char* args ); void cliFunc_start ( char* args ); +void cliFunc_stop ( char* args ); void cliFunc_zeroForce ( char* args ); void cliFunc_zeroPosition( char* args ); +char receiveUART0Char(); + +void transmitUART0String( char* str ); + +uint32_t readDistanceGauge(); + // ----- Variables ----- @@ -290,7 +297,7 @@ info_msg("Distance: "); // Data - uint32_t distInput = readDistanceGauge(); + uint32_t distInput = readDistanceGauge() - distanceOffset; // Output result printInt32( distInput ); @@ -340,30 +347,120 @@ void cliFunc_free( char* args ) { + // Set the forceDistanceRead to 1, which will read until start has passed twice + forceDistanceRead = 1; } void cliFunc_gaugeHelp( char* args ) { + print( NL +"\033[1;32mForce Curve Gauge Help\033[0m" NL +" \033[1;33mUsage Overview\033[0m" NL +" TODO" NL +" \033[1;33mAdditional Command Details\033[0m" NL +" \033[1;35mdistRead\033[0m" NL +" Reads the current value from the distance gauge." NL +" If specified it will N repeated reads with a delay after each read. Useful for testing the distance gauge." NL +" e.g. \033[35mdistRead 250\033[0m" NL +" \033[1;35mfree\033[0m" NL +" Start free scanning force/distance reads." NL +" Will continue until the [start] distance point has been past twice." NL +" \033[1;35mimadaComm\033[0m" NL +" Sends a command to the Imada force gauge." NL +" e.g. \033[35mimadaComm D\033[0m" NL +" The commands supported by the gauge depends on the model. Listed below is for the DS2." NL +" K Select g units (default)" NL +" N Select N units" NL +" O Select oz units" NL +" P Select peak mode" NL +" T Select real time mode (default)" NL +" Z Zero out display/reading" NL +" Q Turn off power" NL +" E Read high/low set points" NL +" D Read data from force gauge" NL +" E\033[35mHHHHLLLL\033[0m" NL +" Set the high/low setpoints, ignore decimals" NL +" \033[35mHHHH\033[0m is 4 digit high, \033[35mLLLL\033[0m is 4 digit low" NL +" Responses from the above commands." NL +" R Command successful" NL +" E Error/Invalid Command" NL +" E\033[35mHHHHLLLL\033[0m" NL +" Current high/low setpoints" NL +" \033[35mHHHH\033[0m is 4 digit high, \033[35mLLLL\033[0m is 4 digit low" NL +" \033[35m[value][units][mode]\033[0m" NL +" Data read response" NL +" \033[35m[value]\033[0m is force currently showing on the display (peak or realtime)" NL +" \033[35m[units]\033[0m is the configured force units" NL +" \033[35m[mode]\033[0m is the current mode (peak or realtime)" NL +" \033[1;35mread\033[0m" NL +" Read the current force/distance value." NL +" If specified it will N repeated reads with a delay after each read." NL +" e.g. \033[35mread 125\033[0m" NL +" \033[1;35mstart\033[0m" NL +" Distance marker \033[35m[start]\033[0m for the start/end of a force curve measurement." NL +" While in free running mode, a special message is displayed when reaching the \033[35m[start]\033[0m point." NL +" \033[35m[start]\033[0m is defined by positioning the distance sensor at the position to start and running this command." NL + ); } -void cliFunc_single( char* args ) +void cliFunc_read( char* args ) { + // Parse number from argument + // NOTE: Only first argument is used + char* arg1Ptr; + char* arg2Ptr; + argumentIsolation_cli( args, &arg1Ptr, &arg2Ptr ); + + // Convert the argument into an int + int read_count = decToInt( arg1Ptr ) + 1; + + // If no argument specified, default to 1 read + if ( *arg1Ptr == '\0' ) + { + read_count = 2; + } + + // Set the overall read count to read_count + forceDistanceReadCount = read_count; } void cliFunc_start( char* args ) { + // Read the current distance and set the new start/end position + distanceStart = readDistanceGauge(); + + print( NL ); + info_msg("New start/end position: "); + printInt32( distanceStart - distanceOffset ); +} + + +void cliFunc_stop( char* args ) +{ + // Reset the forceDistanceRead and forceDistanceReadCount + forceDistanceRead = 0; + forceDistanceReadCount = 0; } void cliFunc_zeroForce( char* args ) { + // Just use the imadaComm command sending the needed argument + char* commandArg = "Z"; + imadaVerboseRead( commandArg ); } void cliFunc_zeroPosition( char* args ) { + // Read the current distance and set the new offset + distanceOffset = readDistanceGauge(); + + print( NL ); + info_msg("New distance offset: "); + printInt32( distanceOffset ); }