Harconen
Пользователи-
Posts
15 -
Joined
-
Last visited
Harconen's Achievements
Участник (2/5)
0
Reputation
-
Не изменяется скорость передачи nsio_ioctl для moxa Nport 5232 После открытия порта, не могу вторично поменять скорость Делаю так : nsio_open(); nsio_ioctl (); после пытаюсь сменить скорость nsio_ioctl (); и как была 115200 так и осталась , что я не так делаю? Nport 5232 , FW 2.5, TCP Server. IPSeria.dll ver 1.5.0.0 harconen@mail.ru
-
nsio_ioct не работает, в nport admin не видно изменений настроек порта: после инициализации порта пытаюсь задать скорость Код: IO :=nsio_ioctl(pid,B115200,(BIT_8+STOP_1+P_IP_SERIAL_NONE)); но, то, что настойки порта изменились,- не вижу в Nport Admin -- И они действительно не изменились! Что я не так делаю ? ...
-
Разобрался.. Когда Идёт "Обрыв связи" 485 го , нет открытия порта ... , ну и так далее - Данные действительно остаются в буфере и их можно вычитать , но не смотря на это возвращаемая функцией NSIO_READ переменная будет 0! - я же смотрел не по ней а по принятому буферу! естественно - СRC - даёт ошибку и как следствие я получаю диагностичекскую информацию - ошибка ответа устройства - вместо обрыв линии ! - А Это Вещи РАЗНЫЕ. Собственно всё что мне нужно, я нашёл . Всем спасибо за участие. PS Если не сложно support у поясните как раработют таймауты чтения - записи ? что происходит кода их ставишь ? (50) допустим
-
Вот кусок кода : // ситуатция : по каким-то причинам связи порт (приёмного устройства) закрыт и не принимает данные // 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 мс) данные не "ушли", почистить буфер, и снова что-то послать ?
-
Но вопрос остался открытым, Как Узнать что в буфере через 65 мс есть неотправленные данные и НЕ читать их? моха 5232, IPserial Lib после NSIO_Write , если порт не открыт , то то вычитываю неотправленные данные в виде "мусора", как с этим бороться ? а конкретно узнать что неотправлено И сбросить порт .
-
Разобрался - дело в том, что когда в процедуре обьявляется Х:PChar А потом ему присваивается нечто Чаровское обьявленное ТАМ ЖЕ, то может произойти такая картина: чар порежет всё до Нуля так как он там инициализируется, в прараметр записи попадёт его (Чара ) "порезанная длина до 0, и собственно, всё плохо... Заморачиваться с ключами компиляции не стал... просто создаю ACH: Array of Char; Сначала SetLength (ACH, 255); ACH [2]:= chr(0); и т.д. (потом уменьшаю до приемлемой длинны) в результате в параметр размерности попадает правильная цифра и строка NSIO_WRITE (...@ACH, length(ACH)); выполняется корректно; Спасбо за ответ.