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

Harconen

Пользователи
  • Posts

    15
  • Joined

  • Last visited

Posts posted by Harconen

  1. Не изменяется скорость передачи 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

  2. nsio_ioct не работает, в nport admin не видно изменений настроек порта:

    после инициализации порта пытаюсь задать скорость

    Код:

     

    IO :=nsio_ioctl(pid,B115200,(BIT_8+STOP_1+P_IP_SERIAL_NONE));

     

    но, то, что настойки порта изменились,- не вижу в Nport Admin -- И они действительно не изменились!

     

    Что я не так делаю ? ...

  3. Таже Ситуатция с той же ревизией и оборудованием, только не весь пакет пересылается в TCP или пересылается с искажениями

    Прошу Выслать последнюю ревизию на Harconen@mail.ru так как не могу скачать с сайта прошивку - Беларусские "Товарищи" не пущают ;(

    А проекть срочно нужно сдать сегодня

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

     

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

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

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

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

    PS

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

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

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

    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 мс) данные не "ушли", почистить буфер, и снова что-то послать ?

  6. Добрый день,

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

     

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

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

    N port 5232 IP serial lib

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

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

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

     

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

  7. Но вопрос остался открытым, Как Узнать что в буфере через 65 мс есть неотправленные данные и НЕ читать их?

    моха 5232, IPserial Lib

    после NSIO_Write , если порт не открыт , то то вычитываю неотправленные данные в виде "мусора", как с этим бороться ?

    а конкретно узнать что неотправлено И сбросить порт .

  8. Как Узнать что Порт не отправил данные?

    я потом их чере 65 мс выгребвю из порта как прочитанное - ошибка конечно ...

    но как правильно организовать? я в отчаянии. ..

  9. Разобрался - дело в том, что когда в процедуре обьявляется Х:PChar А потом ему присваивается нечто Чаровское обьявленное ТАМ ЖЕ, то может произойти такая картина: чар порежет всё до Нуля так как он там инициализируется, в прараметр записи попадёт его (Чара ) "порезанная длина до 0, и собственно, всё плохо... Заморачиваться с ключами компиляции не стал... просто создаю ACH: Array of Char; Сначала SetLength (ACH, 255); ACH [2]:= chr(0); и т.д. (потом уменьшаю до приемлемой длинны) в результате в параметр размерности попадает правильная цифра и строка NSIO_WRITE (...@ACH, length(ACH)); выполняется корректно;

     

    Спасбо за ответ.

  10. В команде nsio_write(port_id: Longint; buf: PChar; - Режет всё что в строке за байтом = "0"(ноль) всместе нулём

    (оно и понятно). наверное есть какие-то методы передавать всю строку "Нулями"

    Пишу программу на DELPHI.

    (Библиотека IP Serial LIB)

     

    Спасибо зареннее Всем ответившим!.

    C Уважением Игорь.

×
×
  • Create New...