fix
This commit is contained in:
parent
c7cfc8eff5
commit
f782674451
@ -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, <<?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]),
|
||||
NInflight = case maps:take(PacketId, Inflight) of
|
||||
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] 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}]};
|
||||
|
||||
%% 广播消息
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user