Сайт официального представителя Tibbo в РФ
    Правила форума | Поиск
    Имя пользователя (login): Пароль: | Забыли пароль? | Регистрация

    Модуль RJ203+EM1206 не работает COM порт

    Искать в теме
    Автор Сообщение
    Модуль RJ203+EM1206 не работает COM порт
    Всем доброго времени суток. Имеется в наличии модуль RJ203+EM1206. Возникла задача принимать сообщения из com порта и передавать в Ethernet и обратно пакеты данных размером до 2кБайт. Пользоваться продукцией TIBBO начал сравнительно недавно.


    include "global.tbh"

    '====================================================================
    sub on_sys_init()

    net.ip = "192.168.0.2"
    sock.num = 0
    sock.protocol = PL_SOCK_PROTOCOL_TCP
    sock.targetip = "192.168.0.1"
    sock.targetport = 6789
    sock.txbuffrq(50)
    sock.rxbuffrq(50)
    'sys.buffalloc
    sock.connect


    'setup the serial port
    ser.num = 0
    ser.rxbuffrq(3)
    ser.txbuffrq(3)
    sys.buffalloc

    ser.parity = PL_SER_PR_NONE
    ser.bits = PL_SER_BB_8
    ser.flowcontrol = DISABLED
    ser.baudrate = ser.div9600
    ser.interface = PL_SER_SI_FULLDUPLEX
    ser.esctype = PL_SER_ET_DISABLED
    ser.interchardelay = 0
    ser.enabled = YES
    'sys.onsystimerperiod = 50


    end sub

    '--------------------------------------------------------------------
    sub on_ser_data_arrival()

    dim x as string


    x = ser.getdata(ser.rxbuffsize)


    sock.num = 0
    sock.setdata("11111")
    sock.send

    ser.num = 0
    ser.setdata(x)
    ser.send

    end sub

    '--------------------------------------------------------------------
    sub on_sock_data_arrival()

    dim x as string


    x = sock.getdata(sock.rxbuffsize)

    ser.num = 0
    ser.setdata(x)
    ser.send

    sock.num = 0
    sock.setdata(x+"!")
    sock.send
    end sub

    Ни передача в порт не работает, ни получение. Железо все рабочее, т. к. через com порт обновлял firmware.
    Заранее благодарен!
    Отредактировано: Дмитрий Александрович 12.07.2015 11:03
    Re: Модуль RJ203+EM1206 не работает COM порт
    Добрый день.

    Для начала необходимо снять комментарий с sys.buffalloc. (Далее Вы вызываете эту функцию еще раз, но желательно использовать ее непосредственно после sock.txbuffrq() и sock.rxbuffrq()).

    Скорее всего, основная проблема в том, что выделяется очень большой объем памяти для буферов сокета.
    sock.txbuffrq(50)
    sock.rxbuffrq(50)
    и вся доступная память выделяется на первый tx буфер.

    Для сообщений в 2кБайта достаточно выделить 8 листов памяти на буфер. (1 лист = 256 байт).
    sock.txbuffrq(8 )
    sock.rxbuffrq(8 )
    sys.buffalloc

    Во время написания программы могут быть полезными функции:
    Sys.Totalbuffpages
    Sys.Freebuffpages
    они возвращают общий и свободный объем памяти, который доступен для использования под буферы.
    Отредактировано: Дмитрий Филатов 13.07.2015 17:41
    Re: Модуль RJ203+EM1206 не работает COM порт
    Большое спасибо, заработало.