From f78267445177a410d5b0bbf8671dc51c686212b5 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Wed, 2 Jul 2025 17:16:48 +0800 Subject: [PATCH] fix --- apps/modbus/src/modbus_service.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/modbus/src/modbus_service.erl b/apps/modbus/src/modbus_service.erl index dd3d5dd..adc5f65 100644 --- a/apps/modbus/src/modbus_service.erl +++ b/apps/modbus/src/modbus_service.erl @@ -147,11 +147,12 @@ handle_event(info, read_next, ?CONNECTED, State = #state{mode = Mode = #rtu_mode {empty, Q1} -> {keep_state, State#state{queue = Q1}} end; -handle_event(info, read_next, ?DISCONNECTED, State = #state{mode = #rtu_mode{}}) -> +%% 为连接状态下的逻辑处理 +handle_event(info, read_next, ?DISCONNECTED, State) -> {keep_state, State}; %% 从port读取数据, todo 获取到的数据表示为32位整数 -handle_event(info, {Port, {data, <>}}, ?CONNECTED, State = #state{mode = Mode = #rtu_mode{port = Port, delay_ms = DelayMs}, inflight = Inflight}) -> +handle_event(info, {Port, {data, <>}}, ?CONNECTED, State = #state{mode = #rtu_mode{port = Port, delay_ms = DelayMs}, inflight = Inflight}) -> lager:debug("[device_service] read port data packet_id: ~p, val: ~p", [PacketId, Val]), NInflight = case maps:take(PacketId, Inflight) of error -> @@ -163,12 +164,14 @@ handle_event(info, {Port, {data, <>}}, lager:debug("[modbus_service] port data is: ~p", [{PacketId, Val}]), %% 通讯的过程需要一个空闲时间 + lager:debug("[modbus_service] delay: ~p", [DelayMs]), erlang:start_timer(DelayMs, self(), delay_locking), {keep_state, State#state{inflight = NInflight}}; %% 锁定一个空闲时间, 把状态标记为空闲 handle_event(info, {timeout, _, delay_locking}, ?CONNECTED, State = #state{mode = Mode = #rtu_mode{}}) -> + lager:debug("[modbus_service] delay unlock trigger next"), {keep_state, State#state{mode = Mode#rtu_mode{is_busy = false}}, [{next_event, info, read_next}]}; %% 广播消息