Harconen Posted February 8, 2011 Share Posted February 8, 2011 Если 485 порт закрыт то в буфере МОХА остаются данные которые я вычитываю , - как узнать что они не отправлены ? как обнулить буфер? Если можно тех поддержка ответте. Link to comment
Komantsev Posted February 8, 2011 Share Posted February 8, 2011 Добрый день, А можно поподробнее: Если 485 порт закрыт то в буфере МОХА остаются данные которые я вычитываю , - как узнать что они не отправлены ? Опишите, пожалуйста, последовательность действий, которую Вы делаете. Сложно понять, что именно имеется ввиду. И что Вы имеете ввиду под словом MOXA (видимо, какое-то конкретное устройство)? Link to comment
Harconen Posted February 8, 2011 Author Share Posted February 8, 2011 Добрый день, А можно поподробнее: Опишите, пожалуйста, последовательность действий, которую Вы делаете. Сложно понять, что именно имеется ввиду. И что Вы имеете ввиду под словом MOXA (видимо, какое-то конкретное устройство)? N port 5232 IP serial lib если порт 485 "закрыт" ! то в буфере передачи остаются данные . Нужно, если в течении 60 мс () нет "отправки" как-то это выявлять и чистить буфер. таймауты , что-ли поставить?? nsio_DataStatus - ничего не кажет. Link to comment
Komantsev Posted February 9, 2011 Share Posted February 9, 2011 Добрый день, Скиньте, пожалуйста, кусок кода, которым Вы делаете описанные действия. Link to comment
Harconen Posted February 9, 2011 Author Share Posted February 9, 2011 Вот кусок кода : // ситуатция : по каким-то причинам связи порт (приёмного устройства) закрыт и не принимает данные // 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
Harconen Posted February 10, 2011 Author Share Posted February 10, 2011 Разобрался.. Когда Идёт "Обрыв связи" 485 го , нет открытия порта ... , ну и так далее - Данные действительно остаются в буфере и их можно вычитать , но не смотря на это возвращаемая функцией NSIO_READ переменная будет 0! - я же смотрел не по ней а по принятому буферу! естественно - СRC - даёт ошибку и как следствие я получаю диагностичекскую информацию - ошибка ответа устройства - вместо обрыв линии ! - А Это Вещи РАЗНЫЕ. Собственно всё что мне нужно, я нашёл . Всем спасибо за участие. PS Если не сложно support у поясните как раработют таймауты чтения - записи ? что происходит кода их ставишь ? (50) допустим Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now