Jump to content
Форум по продукции MOXA

Если 485 порт закрыт Как узнать что данные не отправлены в сеть МОДБАС??


Recommended Posts

Если 485 порт закрыт то в буфере МОХА остаются данные которые я вычитываю , - как узнать что они не отправлены ?

как обнулить буфер?

Если можно тех поддержка ответте.

Link to comment

Добрый день,

А можно поподробнее:

Если 485 порт закрыт то в буфере МОХА остаются данные которые я вычитываю , - как узнать что они не отправлены ?

Опишите, пожалуйста, последовательность действий, которую Вы делаете. Сложно понять, что именно имеется ввиду.

И что Вы имеете ввиду под словом MOXA (видимо, какое-то конкретное устройство)?

Link to comment

Добрый день,

А можно поподробнее:

 

Опишите, пожалуйста, последовательность действий, которую Вы делаете. Сложно понять, что именно имеется ввиду.

И что Вы имеете ввиду под словом MOXA (видимо, какое-то конкретное устройство)?

N port 5232 IP serial lib

если порт 485 "закрыт" ! то в буфере передачи остаются данные .

Нужно, если в течении 60 мс () нет "отправки" как-то это выявлять и чистить буфер.

таймауты , что-ли поставить??

 

nsio_DataStatus - ничего не кажет.

Link to comment

Вот кусок кода :

// ситуатция : по каким-то причинам связи порт (приёмного устройства) закрыт и не принимает данные //

nsio_write(PortsPIDarray[TCPDevPortConfig.RecNo-1], Pchar(Tbuf), i ); // send!

sleep (65);

IO:= nsio_data_status(PortsPIDarray[TCPDevPortConfig.RecNo-1]); // проверяем статус данных

ret:=nsio_read(PortsPIDarray[TCPDevPortConfig.RecNo-1], Pchar(Rbuf), 555);

//Тут вычитываем смещённые на 1 байт вправо(влево)! данные "мусор"

//и не понимаем это ответил контроллер с ошибкой или порт закрыт

// как выявить то что в течении 55 - 60 мс данные не "ушли" ?

В общем вопрос сформировался такой :

 

как выявить то что в течении 55 - 60 мс (не важно 100 -200 мс) данные не "ушли", почистить буфер, и снова что-то послать ?

Link to comment

Разобрался..

 

Когда Идёт "Обрыв связи" 485 го , нет открытия порта ... , ну и так далее - Данные действительно остаются в буфере и их можно вычитать ,

но не смотря на это возвращаемая функцией NSIO_READ переменная будет 0! - я же смотрел не по ней а по принятому буферу! естественно -

СRC - даёт ошибку и как следствие я получаю диагностичекскую информацию - ошибка ответа устройства - вместо обрыв линии ! - А Это Вещи РАЗНЫЕ.

Собственно всё что мне нужно, я нашёл . Всем спасибо за участие.

PS

Если не сложно support у поясните как раработют таймауты чтения - записи ? что происходит кода их ставишь ? (50) допустим

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...