Страница 7 из 21 ПерваяПервая ... 5678917 ... ПоследняяПоследняя
Показано с 61 по 70 из 203

Тема: ПЛК63 + SysLibCom, потеря байтов

  1. #61
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от monteg Посмотреть сообщение
    ошибся

    Size := DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf), 1, 0));
    if ( size > 0 ) then
    size := size + DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf[ 1 ]), SIZEOF(rBuf) - 1, 0));
    end_if
    Вы хорошо подумали когда это написали ?
    PS
    Все. Утро вечера - сами знаете ..

  2. #62

    По умолчанию

    Допустим в буфере появился "мусор" ( каким образом, даже думать не хочу ). Читаем 100 байт, первые 10 "мусор", а дальше идет верный ответ от устройства. Т.е. надо дочитать ответ. Читаем недостающие байты. И тут облом. Теряются байты.
    Вот зачем

  3. #63

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Вы хорошо подумали когда это написали ?
    PS
    Все. Утро вечера - сами знаете ..
    Можно подробно.

    Спокойной ночи

  4. #64
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,575

    По умолчанию

    в место единицы видимо Size должны были написать

  5. #65
    Пользователь
    Регистрация
    04.11.2009
    Адрес
    Подольск
    Сообщений
    258

    По умолчанию

    Блин, уже жалею, что ПЛК63 на объекте, и раньше, чем через пару недель туда не доберусь. Очень интересно было бы проверить теорию "шестого байта"...

    А нет ограничений на то, что в одном цикле должна быть только одна команда SysComRead? Или это требование относилось к тому, что в одном цикле или SysComRead, или SysComWrite... Или я что-то путаю, и такого совсем нет...

    Жалко, нет функции, которая сказала бы количество байт, доступных для чтения... Хотя всё равно не спасло бы - где гарантия, что между ней и чтением не изменится кол-во данных...

  6. #66
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,575

    По умолчанию

    Жалко, нет функции, которая сказала бы количество байт, доступных для чтения... Хотя всё равно не спасло бы - где гарантия, что между ней и чтением не изменится кол-во данных...
    Разве SysComRead не возвращает количество доступных байт

  7. #67

    По умолчанию

    Цитата Сообщение от Elka Посмотреть сообщение
    Блин, уже жалею, что ПЛК63 на объекте, и раньше, чем через пару недель туда не доберусь. Очень интересно было бы проверить теорию "шестого байта"...

    А нет ограничений на то, что в одном цикле должна быть только одна команда SysComRead? Или это требование относилось к тому, что в одном цикле или SysComRead, или SysComWrite... Или я что-то путаю, и такого совсем нет...

    Жалко, нет функции, которая сказала бы количество байт, доступных для чтения... Хотя всё равно не спасло бы - где гарантия, что между ней и чтением не изменится кол-во данных...
    В одном цикле SysComWrite и SysComRead теоретически можно. Но если посылается запрос устройству, который требует ответа, то ведь устройство должно принять запрос, обработать, послать ответ. Слишком длинный рабочий цикл получиться.
    Я читать ответ частями и в одном цикле, и разносить по циклам. Результат тотже

  8. #68

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в место единицы видимо Size должны были написать
    В каком месте???

  9. #69

    По умолчанию

    Может кто-нибудь посмотрел примеры?
    Обсуждение свелось к предложениям - "нафига ... ", " зачем ..."
    Еще раз. Эти примеры не имеют ничего общего с моими проектами. Я их специально написал, чтобы показать проблему.
    А нужно это затем, что если есть такой глюк, то его надо учитывать в алгоритме программ, чтобы потом "блох" не вылавливать.

  10. #70
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,575

    По умолчанию

    size := size + DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf[ 1 ]), SIZEOF(rBuf) - 1, 0));
    смысл от этой строки, если до этого каждый цикл, переменной size будет присваиваться 0 либо 1. Друго дело если Вы накапливаете size, то и вычитать тогда нужно не 1 а size-прочитанных байт.

    Хотели услышать ответ, честно говорю не смотрел Ваш проект, вернусь домой попытаюсь открыть

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

Похожие темы

  1. плк63-пм01 потеря байт
    от Elka в разделе ПЛК63/73
    Ответов: 35
    Последнее сообщение: 06.11.2012, 14:26
  2. потеря байтов в ответной посылке с периодом 4-5 с.
    от Смирнов Роман в разделе ПЛК1хх
    Ответов: 44
    Последнее сообщение: 23.04.2009, 07:16
  3. SysLibCom
    от demon в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 20.03.2009, 13:08
  4. ПЛК 150 и SysLibCom.lib.
    от Анатолий в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 13.12.2008, 13:48
  5. SysLibCom 16#FF
    от powerind в разделе ПЛК1хх
    Ответов: 28
    Последнее сообщение: 28.10.2008, 13:41

Ваши права

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