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} ->
|
{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}]};
|
||||||
|
|
||||||
%% 广播消息
|
%% 广播消息
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user