Страница 2 из 7 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 61

Тема: Свободное чтение RS-485

  1. #11
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    3 раза подряд по 255 - вижу. Даете зуб что в данных их гарантированно нет ?
    Сигнатура не обязательно должна быть уникальной.
    FF может встречаться в пакете. Но вы должны по первому FF начать формирование пакета, по получению FFFF (или по превышению длинны, таймауту) прекратить. Это именно сигнатура пакета.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  2. #12
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Я приложил код, так и сделано - ищет FF 03 CC и через 20 байт FF FF.

    Что на счет переполнения буфера? и из конца или начала я их беру когда использую команду "Read"
    Делаете буфер, в 100 байт, например.
    1. Читаете порт, пока не встретите FF
    2. По его получению, начинаете заполнять буфер.
    3. По получению FFFF (FFFE) - прекращаете заполнять буфер, переходите к №5
    4. Если за 100 байт FFFF не встречен, переходите на №1
    5. Рассчитываете CRC.
    6. если совпадает с указанным в пакете, переходите №7, иначе №1
    7. Разбираете остальные данные пакета.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  3. #13
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Это измерение веса. Вес измерять чаще чем раз в 20 сек смысла нет.
    Я хочу просто быть уверенным в:
    1. Не наступит переполнения буфера
    2. Я получаю последние данные, а не те что дольше всех в буфере

    И так как я не понимаю как устроен буфер - не знаю.
    1. Проверяете, что вы считали с порта байт, столько же, либо меньше, чем длинна буфера (в моем примере буфер = 100байт).
    2. Буфер порта обычно 1500-1600 байт. Можете раз в 200 мс выполнить приведенный мной алгоритм, но раз вам не важны все данные, а только самые свежие, надо будет добавить пункт 0 - Сброс буфера COM порта (Flush). 200ms при потребности данных в 1s выбран для того, что бы иметь запас по времени (пропуск пакета, пакеты передаются с ошибкой).
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  4. #14

    По умолчанию

    Цитата Сообщение от keysansa Посмотреть сообщение
    но раз вам не важны все данные, а только самые свежие, надо будет добавить пункт 0 - Сброс буфера COM порта (Flush)
    А что за флуш? в сисКомЛиб нема такого

    Ваш пример точно такой же как мой в глобальном смысле.

    Я так и не пойму:
    1. ждет меня переполнение или нет?
    2. я данные командой Read беру самые новые из буфера или самые старые?
    Последний раз редактировалось Raikkonen; 28.05.2022 в 21:57.

  5. #15
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    А что за флуш? в сисКомЛиб нема такого
    Clear bufer. Возможно в данной библиотеке он по другому называется.
    Как "лайфхак" - закрыть и открыть порт заново. При этом обчно буфер очищается.
    Или в вашем случае, открывать порт каждый раз перед опросом. Да, возможно в начале будет "хвост" какой-то посылки, но следующую вы точно отловите.

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Ваш пример точно такой же как мой в глобальном смысле.
    Не совсем. Вы стараетесь считывать каждое сообщение от весов, я же предлагаю, "выдёргивать" пакет из потока, именно тогда, когда вам необходимо.

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Я так и не пойму:
    1. ждет меня переполнение или нет?
    2. я данные командой Read беру самые новые из буфера или самые старые?
    1. При подходе, который я вам предложил, не будет.
    2. Даже если очистка буфера не предусмотрена в команде Com.Open (в чем я сомневаюсь, общепринята практика очистки буфера при открытии порта), вы получите данные не старше, чем глубина буфера.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  6. #16
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Я прошу прощения, забыл спросить, у вас дозирование или взвешивание?
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  7. #17

    По умолчанию

    Какой интервал между посылками?
    50 мс цикл может быть маловат!
    Я бы сдела кольцевой буфер, указатель чтения и записи.
    И ходил бы по ниму искал пакеты

  8. #18
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Samel Посмотреть сообщение
    Какой интервал между посылками?
    50 мс цикл может быть маловат!
    Я бы сдела кольцевой буфер, указатель чтения и записи.
    И ходил бы по ниму искал пакеты
    ТС боится, что из за скорости передачи 115200 он не сможет обработать все посылки.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  9. #19

    По умолчанию

    Цитата Сообщение от keysansa Посмотреть сообщение
    ТС боится, что из за скорости передачи 115200 он не сможет обработать все посылки.
    Эту проблему решит уменьшение времени цикла и кольцевой буфер. 115200 это гдето 520 байт в 50 мс

  10. #20
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Samel Посмотреть сообщение
    Эту проблему решит уменьшение времени цикла и кольцевой буфер. 115200 это гдето 520 байт в 50 мс
    А зачем вообще кольцевой буфер? Почему не хватит обычного?
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

Страница 2 из 7 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Свободное ПО для опроса устройств (Modbus)
    от o_nik в разделе Трёп (Курилка)
    Ответов: 26
    Последнее сообщение: 09.11.2020, 14:15
  2. Ответов: 6
    Последнее сообщение: 05.03.2018, 10:46
  3. ПЛК110 М02 и свободное место на USB Flash?
    от Антон_Б в разделе ПЛК1хх [М02]
    Ответов: 0
    Последнее сообщение: 01.07.2017, 12:21
  4. чтение из плк
    от Wanted в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 03.12.2010, 13:18
  5. Свободное место на Flash диске
    от Логвиненко Андрей в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.11.2009, 15:04

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •