Correction d'un probleme de depassement de capacité sur les commandes Move et Turn, coté robot et coté superviseur

This commit is contained in:
dimercur 2024-01-25 16:22:46 +01:00
parent c4256fd3a4
commit 61c791bf24
5 changed files with 26 additions and 14 deletions

View file

@ -284,22 +284,22 @@ string ComRobot::MessageToString(Message *msg) {
case MESSAGE_ROBOT_GO_FORWARD: case MESSAGE_ROBOT_GO_FORWARD:
s += LABEL_ROBOT_MOVE; s += LABEL_ROBOT_MOVE;
s += LABEL_ROBOT_SEPARATOR_CHAR; s += LABEL_ROBOT_SEPARATOR_CHAR;
s.append(to_string(500000)); s.append(to_string(32767));
break; break;
case MESSAGE_ROBOT_GO_BACKWARD: case MESSAGE_ROBOT_GO_BACKWARD:
s += LABEL_ROBOT_MOVE; s += LABEL_ROBOT_MOVE;
s += LABEL_ROBOT_SEPARATOR_CHAR; s += LABEL_ROBOT_SEPARATOR_CHAR;
s.append(to_string(-500000)); s.append(to_string(-32768));
break; break;
case MESSAGE_ROBOT_GO_LEFT: case MESSAGE_ROBOT_GO_LEFT:
s += LABEL_ROBOT_TURN; s += LABEL_ROBOT_TURN;
s += LABEL_ROBOT_SEPARATOR_CHAR; s += LABEL_ROBOT_SEPARATOR_CHAR;
s.append(to_string(-500000)); s.append(to_string(32767));
break; break;
case MESSAGE_ROBOT_GO_RIGHT: case MESSAGE_ROBOT_GO_RIGHT:
s += LABEL_ROBOT_TURN; s += LABEL_ROBOT_TURN;
s += LABEL_ROBOT_SEPARATOR_CHAR; s += LABEL_ROBOT_SEPARATOR_CHAR;
s.append(to_string(500000)); s.append(to_string(-32768));
break; break;
case MESSAGE_ROBOT_STOP: case MESSAGE_ROBOT_STOP:
s += LABEL_ROBOT_MOVE; s += LABEL_ROBOT_MOVE;

View file

@ -98,7 +98,7 @@
</extensions> </extensions>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> <storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.405192035" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release" postbuildStep="&quot;cd ..; doxygen Doxyfile&quot;"> <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.405192035" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release" postbuildStep="">
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.405192035." name="/" resourcePath=""> <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.405192035." name="/" resourcePath="">
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.813857126" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release"> <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.813857126" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1816216295" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32L071CBTx" valueType="string"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1816216295" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32L071CBTx" valueType="string"/>

View file

@ -198,12 +198,12 @@ CMD_Generic* cmdDecode(char* cmd, uint8_t length) {
case MoveCMD: case MoveCMD:
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Move)); decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Move));
decodedCmd->type = CMD_MOVE; decodedCmd->type = CMD_MOVE;
//((CMD_Move*)decodedCmd)->distance = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
/* verify that command start with "M=" */ /* verify that command start with "M=" */
if ((cmd[0]=='M')&&(cmd[1]=='=')) { if ((cmd[0]=='M')&&(cmd[1]=='=')) {
cmd = cmd+2; //cmd+2 for removing "M=" at start of the string cmd = cmd+2; //cmd+2 for removing "M=" at start of the string
((CMD_Move*)decodedCmd)->distance=strtoul(cmd , &p, 10); //((CMD_Move*)decodedCmd)->distance=strtoul(cmd , &p, 10);
((CMD_Move*)decodedCmd)->distance=(int16_t)strtol(cmd , &p, 10);
if (p==cmd) if (p==cmd)
decodedCmd->type = CMD_NONE; /* missing number value xxxxx in "M=xxxxx" */ decodedCmd->type = CMD_NONE; /* missing number value xxxxx in "M=xxxxx" */
} else } else
@ -213,15 +213,12 @@ CMD_Generic* cmdDecode(char* cmd, uint8_t length) {
case TurnCMD: case TurnCMD:
decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Turn)); decodedCmd = (CMD_Generic*)malloc(sizeof(CMD_Turn));
decodedCmd->type = CMD_TURN; decodedCmd->type = CMD_TURN;
//((CMD_Turn*)decodedCmd)->turns = ((int16_t)cmd[1]<<8) + (int16_t)cmd[2];
//if (!sscanf(cmd,"T=%hd",&((CMD_Turn*)decodedCmd)->turns ))
// decodedCmd->type = CMD_NONE;
/* verify that command start with "T=" */ /* verify that command start with "T=" */
if ((cmd[0]=='T')&&(cmd[1]=='=')) { if ((cmd[0]=='T')&&(cmd[1]=='=')) {
cmd = cmd+2; //cmd+2 for removing "T=" at start of the string cmd = cmd+2; //cmd+2 for removing "T=" at start of the string
((CMD_Turn*)decodedCmd)->turns=strtoul(cmd , &p, 10); //((CMD_Turn*)decodedCmd)->turns=strtoul(cmd , &p, 10);
((CMD_Turn*)decodedCmd)->turns=(int16_t)strtol(cmd , &p, 10);
if (p==cmd) if (p==cmd)
decodedCmd->type = CMD_NONE; /* missing number value xxxxx in "T=xxxxx" */ decodedCmd->type = CMD_NONE; /* missing number value xxxxx in "T=xxxxx" */
} else } else

View file

@ -44,8 +44,8 @@
* Version in plain text and as a numeric value * Version in plain text and as a numeric value
*/ */
///@{ ///@{
#define SYSTEM_VERSION_STR "3.1" #define SYSTEM_VERSION_STR "3.2"
#define SYSTEM_VERSION 0x0301 // Upper byte: major version, lower byte: minor version #define SYSTEM_VERSION 0x0302 // Upper byte: major version, lower byte: minor version
///@} ///@}
#define STACK_SIZE 96 #define STACK_SIZE 96

View file

@ -65,5 +65,20 @@
<packet name="Invalid Checksum"> <packet name="Invalid Checksum">
<payload>543D2D39303D0D</payload> <payload>543D2D39303D0D</payload>
</packet> </packet>
<packet name="Move backward - limite pos">
<payload>4D3D3332373637470D</payload>
</packet>
<packet name="Move backward - Limite Neg">
<payload>4D3D2D3332373638650D</payload>
</packet>
<packet name="Move backward - Over neg">
<payload>4D3D2D3332373639640D</payload>
</packet>
<packet name="Move backward - Over pos">
<payload>4D3D3332373638480D</payload>
</packet>
<packet name="Move backward - Overkill">
<payload>4D3D31323334353637400D</payload>
</packet>
</packets_list> </packets_list>
</data> </data>