diff --git a/Intelligent_winding_robot_main_board_dap.launch b/Intelligent_winding_robot_main_board_dap.launch
index 3bef02f..3eb14a1 100644
--- a/Intelligent_winding_robot_main_board_dap.launch
+++ b/Intelligent_winding_robot_main_board_dap.launch
@@ -6,7 +6,7 @@
-
+
diff --git a/sdk b/sdk
index abfd999..0d5a3a5 160000
--- a/sdk
+++ b/sdk
@@ -1 +1 @@
-Subproject commit abfd99957b7572b1ca8df0d60ad015ac4fabac1d
+Subproject commit 0d5a3a53c8d3b3d22f5c3963dc94abadab11da7e
diff --git a/usrc/cmdline_support.cpp b/usrc/cmdline_support.cpp
index 2bd7d0f..eb9c11f 100644
--- a/usrc/cmdline_support.cpp
+++ b/usrc/cmdline_support.cpp
@@ -15,6 +15,13 @@ void CmdlineSupport::init(Device* device) {
m_device->line_locking_solenoid_valve(val);
return 0;
});
+ cmdlineparser->registerCmd("line_locking_solenoid_valve_set_auto_close_delay_s", "(delays)", 1, //
+ [this](int32_t paramN, const char** paraV, ICmdParserACK* ack) {
+ int val = atoi(paraV[0]);
+ m_device->line_locking_solenoid_valve_set_auto_close_delay_s(val);
+ return 0;
+ });
+
cmdlineparser->registerCmd("blower_set_val", "(bool on)", 1, //
[this](int32_t paramN, const char** paraV, ICmdParserACK* ack) {
int val = atoi(paraV[0]);
diff --git a/usrc/device.cpp b/usrc/device.cpp
index fdd520f..a36a705 100644
--- a/usrc/device.cpp
+++ b/usrc/device.cpp
@@ -120,7 +120,7 @@ void Device::sub_module_init() {
* @brief 初始化主轴电机
*/
static Eq20ServoMotor::servo_config_t default_servo_cfg = //
- {.default_acc_time_ms = 1000, .default_velocity = 800, .find_zero_velocity = 100};
+ {.default_acc_time_ms = 1000, .default_velocity = 500, .find_zero_velocity = 100};
static Eq20ServoMotor eq20_motor;
eq20_motor.init(1, &m_modbus, 1, default_servo_cfg);
m_device_manager.registerModule(&eq20_motor);
@@ -167,26 +167,53 @@ void Device::sub_module_init() {
m_device_manager.module_active_cfg(42);
}
-static ZGPIO line_locking_solenoid_valve_gpio;
-void Device::line_locking_solenoid_valve_init() { //
- line_locking_solenoid_valve_gpio.initAsOutput(PC3, ZGPIO::kMode_nopull, false, false);
+/*******************************************************************************
+ * line_locking_solenoid_valve *
+ *******************************************************************************/
+ZGPIO m_line_locking_solenoid_valve_gpio;
+int32_t m_line_locking_solenoid_valve_auto_close_delayms = 5000;
+uint32_t m_line_locking_solenoid_valve_open_ticket = 0;
+
+void Device::line_locking_solenoid_valve_init() { //
+ m_line_locking_solenoid_valve_gpio.initAsOutput(PC1, ZGPIO::kMode_nopull, true, false);
+ // 自动关闭
+ OSDefaultSchduler::getInstance()->regPeriodJob(
+ [this](OSDefaultSchduler::Context& cx) {
+ if (m_line_locking_solenoid_valve_gpio.getState()) {
+ if (zos_haspassedms(m_line_locking_solenoid_valve_open_ticket) > m_line_locking_solenoid_valve_auto_close_delayms) {
+ line_locking_solenoid_valve(false);
+ }
+ }
+ },
+ 100);
}
-void Device::line_locking_solenoid_valve(bool on) { line_locking_solenoid_valve_gpio.setState(on); }
+void Device::line_locking_solenoid_valve(bool on) {
+ m_line_locking_solenoid_valve_open_ticket = HAL_GetTick();
+ m_line_locking_solenoid_valve_gpio.setState(on);
+}
+void Device::line_locking_solenoid_valve_set_auto_close_delay_s(int32_t delays) { m_line_locking_solenoid_valve_auto_close_delayms = delays * 1000; }
+
+/*******************************************************************************
+ * blower *
+ *******************************************************************************/
static ZGPIO blower_gpio;
void Device::blower_init() { blower_gpio.initAsOutput(PC2, ZGPIO::kMode_nopull, true, false); }
void Device::blower_set_val(bool on) { blower_gpio.setState(on); }
int32_t Device::app_motor_move_from_a_to_b_block(int motor_id, int32_t a, int32_t b, int32_t times) {
- int32_t ret = 0;
+ int32_t ret = 0;
+ ThisThread thisThread;
for (size_t i = 0; i < times; i++) {
ZLOGI(TAG, "move motor %d to %d", a);
ret = m_device_manager.motor_easy_move_to(motor_id, a);
+ thisThread.sleep(10);
if (ret != 0) break;
ret = wait_for_module(motor_id);
if (ret != 0) break;
ZLOGI(TAG, "move motor %d to %d", b);
ret = m_device_manager.motor_easy_move_to(motor_id, b);
+ thisThread.sleep(10);
if (ret != 0) break;
ret = wait_for_module(motor_id);
if (ret != 0) break;
diff --git a/usrc/device.hpp b/usrc/device.hpp
index 0f99bf8..58febbd 100644
--- a/usrc/device.hpp
+++ b/usrc/device.hpp
@@ -77,6 +77,8 @@ class Device {
/*******************************************************************************
* SUB CAN MODULE *
*******************************************************************************/
+
+
public:
void init();
@@ -85,6 +87,8 @@ class Device {
*/
void line_locking_solenoid_valve_init();
void line_locking_solenoid_valve(bool on);
+ void line_locking_solenoid_valve_set_auto_close_delay_s(int32_t delays);
+
void blower_init();
void blower_set_val(bool on);
diff --git a/usrc/project_configs.h b/usrc/project_configs.h
index 3adb2a2..3e80527 100644
--- a/usrc/project_configs.h
+++ b/usrc/project_configs.h
@@ -7,7 +7,7 @@
#define PC_DEBUG_UART huart1
#define PC_DEBUG_UART_DMA_HANDLER hdma_usart1_rx
-#define PC_DEBUG_UART_RX_BUF_SIZE 1024
+#define PC_DEBUG_UART_RX_BUF_SIZE (1024*4)
#define PC_DEBUG_LIGHT_GPIO PG0
#define PC_SYS_DELAY_US_TIMER htim6 // US延时定时器