Browse Source

update

master
zhaohe 2 years ago
parent
commit
1027be7bae
  1. 4
      .cproject
  2. 2
      sdk
  3. 25
      usrc/main.cpp
  4. 5
      usrc/main.hpp
  5. 56
      usrc/one_dimensional_code_laser_scanner.cpp
  6. 5
      usrc/one_dimensional_code_laser_scanner.hpp
  7. 2
      zapp.launch

4
.cproject

@ -35,7 +35,7 @@
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.623917875" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
</tool>
<tool commandLinePattern="${COMMAND} ${INPUTS} ${FLAGS} -Wno-format -Wno-unused-variable ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1173140116" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.624128119" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.624128119" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1762493860" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.201136540" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="DEBUG"/>
@ -55,7 +55,7 @@
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.478991685" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
</tool>
<tool commandLinePattern="${COMMAND} ${INPUTS} ${FLAGS} -Wno-format -Wno-unused-variable ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1634628250" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1189558725" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1189558725" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.302501104" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.1393251149" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Core/Inc"/>

2
sdk

@ -1 +1 @@
Subproject commit 914b4c75556afc4137ed32bb341bf4377f2765b1
Subproject commit 74516c3308422c3a73853b6aa925d0d38a526eef

25
usrc/main.cpp

@ -34,13 +34,6 @@ ZGPIO io_fybh_read4;
ZGPIO io_fybh_read5;
ZGPIO io_fybh_read6;
// input_sensor_get_bwm_gpio() { return &FYBJL_SENSOR0; }
// input_sensor_get_py_home_gpio() { return &FYBJL_SENSOR1; }
// input_sensor_get_py_limit_gpio() { return &FYBJL_SENSOR2; }
// input_sensor_get_tj_home_gpio() { return &FYBJL_SENSOR4; }
// input_sensor_get_tj_limit_gpio() { return &FYBJL_SENSOR5; }
// input_sensor_get_card_block_detect_gpio() { return &FYBJL_SENSOR7; }
ZGPIO io_fybjl_sensor8;
ZGPIO io_fybjl_sensor7;
ZGPIO io_fybjl_sensor6;
@ -51,9 +44,9 @@ ZGPIO io_fybjl_sensor2;
ZGPIO io_fybjl_sensor1;
ZGPIO io_fybjl_sensor0;
SingleAxisMotorControlerV2 m_pyMotorControlService; // 平移电机
SingleAxisMotorControlerV2 m_tjMotorControlService; // 推进电机
DeviceBaseControlService m_deviceBaseControlService;
SingleAxisMotorControlerV2 m_pyMotorControlService; // 平移电机
SingleAxisMotorControlerV2 m_tjMotorControlService; // 推进电机
OneDimensionalCodeLaserScanner m_oneDimensionalCodeLaserScanner;
void input_sensors_init() {
@ -164,7 +157,7 @@ void Main::run() {
/*******************************************************************************
* *
*******************************************************************************/
{
{ //
auto *cfg = IflytopCanProtocolStackProcesser::createDefaultConfig(DEVICE_ID, 128);
m_protocolStack.initialize(cfg);
m_protocolStack.setDumpPacketFlag(false);
@ -172,6 +165,14 @@ void Main::run() {
m_protocolStack.activeReg(REG_GPIO_INPUT0, icps::kwr, 0);
}
{ //
m_deviceBaseControlService.initialize(&m_protocolStack, DEVICE_ID);
m_deviceBaseControlService.setListener([](int32_t engineer_mode) {
m_pyMotorControlService.setEngineerMode(engineer_mode);
m_tjMotorControlService.setEngineerMode(engineer_mode);
});
}
/*******************************************************************************
* *
*******************************************************************************/
@ -223,9 +224,9 @@ void Main::run() {
m_tjMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
// bwm_gpio
m_oneDimensionalCodeLaserScanner.initialize(&m_protocolStack, REG_LARSER_SCANNER_CTRL_ADD_BASE, FYBJL_SENSOR0, [this]() { return m_tj_motor.getXACTUAL(); });
ZLOGI(TAG, "init done");
while (1) {
ZHALCORE::getInstance()->loop();
}

5
usrc/main.hpp

@ -4,14 +4,17 @@
#include <functional>
#include "sdk\components\iflytop_can_slave_modules\device_base_control_service.hpp"
#include "sdk\components\iflytop_can_slave_v1\iflytop_can_slave.hpp"
namespace iflytop {
using namespace std;
class Main : public IflytopCanProtocolStackProcesserListener {
class Main : public IflytopCanProtocolStackProcesserListener{
private:
/* data */
public:
virtual bool isThisRegOwnToMe(IflytopCanProtocolStackProcesser *processer, icps::Reg_t *reg) { return false; }
virtual icps::error_t onHostRegisterWriteEvent(IflytopCanProtocolStackProcesser *processer, icps::WriteEvent *event);
virtual icps::error_t onHostRegisterReadEvent(IflytopCanProtocolStackProcesser *processer, icps::ReadEvent *event);
virtual void onHostRegisterReportEvent(IflytopCanProtocolStackProcesser *processer, icps::ReportEvent *event);

56
usrc/one_dimensional_code_laser_scanner.cpp

@ -15,7 +15,45 @@ bool m_idleLevel = true;
void OneDimensionalCodeLaserScanner::initialize(IflytopCanProtocolStackProcesser* protocolProcesser, int32_t regStartOff, Pin_t triggerPin,
PosReadder_t readder) {
m_protocolProcesser = protocolProcesser;
m_protocolProcesser->activeReg(REG_CODE_SCANER_ACT_CTRL, icps::kw, 0);
m_protocolProcesser->activeReg(REG_CODE_SCANER_ACT_CLEAR_EXCEPTION, icps::kw, 0);
m_protocolProcesser->activeReg(REG_CODE_SCANER_STAT_STATUS, icps::kr, 0);
m_protocolProcesser->activeReg(REG_CODE_SCANER_STAT_EXCEPTION, icps::kr, 0);
m_protocolProcesser->activeReg(REG_CODE_SCANER_CODE, icps::kr, 0);
m_triggerGpio.initAsInput(triggerPin, ZGPIO::kMode_nopull, ZGPIO::kIRQ_risingAndFallingIrq, false /*mirror*/);
m_protocolProcesser->registerListener(this);
}
bool OneDimensionalCodeLaserScanner::isThisRegOwnToMe(IflytopCanProtocolStackProcesser* processer, icps::Reg_t* reg) { //
switch (reg->add) {
case REG_CODE_SCANER_ACT_CTRL:
case REG_CODE_SCANER_ACT_CLEAR_EXCEPTION:
return true;
default:
break;
}
return false;
}
icps::error_t OneDimensionalCodeLaserScanner::onHostRegisterWriteEvent(IflytopCanProtocolStackProcesser* processer, IflytopCanProtocolStackWriteEvent* writeEvent) {
switch (writeEvent->reg->add) {
case REG_CODE_SCANER_ACT_CTRL:
if (writeEvent->newvalue == 1) {
startScan();
} else if (writeEvent->newvalue == 0) {
stopScan();
parseResult();
} else {
return icps::kIllegalValue;
}
return icps::kSuccess;
case REG_CODE_SCANER_ACT_CLEAR_EXCEPTION:
return icps::kSuccess;
default:
break;
}
return icps::kRegNotFound;
}
void OneDimensionalCodeLaserScanner::startScan() {
@ -41,7 +79,7 @@ bool OneDimensionalCodeLaserScanner::getPosLevel(int pos) {
return m_idleLevel;
}
for (size_t i = 0; i < m_off; i++) {
for (int i = 0; i < m_off; i++) {
nowlevel = !nowlevel;
if (i + 1 < m_off) {
if (pos >= m_posChache[i] && pos < m_posChache[i + 1]) {
@ -59,18 +97,26 @@ bool OneDimensionalCodeLaserScanner::getPosLevel(int pos) {
void OneDimensionalCodeLaserScanner::parseResult() { //
static uint8_t code[500] = {0};
printf("scan raw result:\n");
printf("(%d)", m_idleLevel);
printf("%d ", startpos);
for (int i = 0; i < m_off; i++) {
printf("%d ", m_posChache[i]);
}
printf("%d ", endpos);
printf("\r\n");
//
int32_t sp = m_posChache[0];
int32_t ep = endpos;
int32_t len = ep - sp;
// 把 len分成500份
for (size_t i = 0; i < 500; i++) {
for (int i = 0; i < 500; i++) {
code[i] = getPosLevel((int32_t)(sp + len / 500.0 * i));
}
printf("scanresult:");
for (size_t i = 0; i < 500; i++) {
printf("scanresult:\n");
for (int i = 0; i < 500; i++) {
printf("%d", code[i]);
}
printf("\r\n");

5
usrc/one_dimensional_code_laser_scanner.hpp

@ -17,7 +17,7 @@ using namespace std;
#define POS_CACHE_SIZE 28
class OneDimensionalCodeLaserScanner {
class OneDimensionalCodeLaserScanner : public IflytopCanProtocolStackProcesserListener {
public:
typedef enum {
kidle,
@ -39,6 +39,9 @@ class OneDimensionalCodeLaserScanner {
void initialize(IflytopCanProtocolStackProcesser* protocolProcesser, int32_t regStartOff, Pin_t triggerPin, PosReadder_t readder);
virtual bool isThisRegOwnToMe(IflytopCanProtocolStackProcesser* processer, icps::Reg_t* reg);
virtual icps::error_t onHostRegisterWriteEvent(IflytopCanProtocolStackProcesser* processer, IflytopCanProtocolStackWriteEvent* writeEvent);
void startScan();
void stopScan();
void parseResult();

2
zapp.launch

@ -83,7 +83,7 @@
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/zapp.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="zapp"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1316415929"/>
<booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/zapp"/>

Loading…
Cancel
Save