This commit is contained in:
anlicheng 2025-07-02 17:16:48 +08:00
parent c7cfc8eff5
commit f782674451

View File

@ -147,11 +147,12 @@ handle_event(info, read_next, ?CONNECTED, State = #state{mode = Mode = #rtu_mode
{empty, Q1} -> {empty, Q1} ->
{keep_state, State#state{queue = Q1}} {keep_state, State#state{queue = Q1}}
end; end;
handle_event(info, read_next, ?DISCONNECTED, State = #state{mode = #rtu_mode{}}) -> %%
handle_event(info, read_next, ?DISCONNECTED, State) ->
{keep_state, State}; {keep_state, State};
%% port读取数据, todo 32 %% port读取数据, todo 32
handle_event(info, {Port, {data, <<?MODBUS_READ:8, PacketId:32, Val/binary>>}}, ?CONNECTED, State = #state{mode = Mode = #rtu_mode{port = Port, delay_ms = DelayMs}, inflight = Inflight}) -> handle_event(info, {Port, {data, <<?MODBUS_READ:8, PacketId:32, Val/binary>>}}, ?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]), lager:debug("[device_service] read port data packet_id: ~p, val: ~p", [PacketId, Val]),
NInflight = case maps:take(PacketId, Inflight) of NInflight = case maps:take(PacketId, Inflight) of
error -> error ->
@ -163,12 +164,14 @@ handle_event(info, {Port, {data, <<?MODBUS_READ:8, PacketId:32, Val/binary>>}},
lager:debug("[modbus_service] port data is: ~p", [{PacketId, Val}]), lager:debug("[modbus_service] port data is: ~p", [{PacketId, Val}]),
%% %%
lager:debug("[modbus_service] delay: ~p", [DelayMs]),
erlang:start_timer(DelayMs, self(), delay_locking), erlang:start_timer(DelayMs, self(), delay_locking),
{keep_state, State#state{inflight = NInflight}}; {keep_state, State#state{inflight = NInflight}};
%% , %% ,
handle_event(info, {timeout, _, delay_locking}, ?CONNECTED, State = #state{mode = Mode = #rtu_mode{}}) -> 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}]}; {keep_state, State#state{mode = Mode#rtu_mode{is_busy = false}}, [{next_event, info, read_next}]};
%% 广 %% 广