Может быть. Только тема не об этом.
Вид для печати
Может быть. Только тема не об этом.
ну тогда может стоить исходить из того что конфигуратор разрабатывал не глупый человек и раз есть переменная LastError значит анализ ведется по приходу ответа и если есть более одного опрашиваемого устройства, то определить признак можно следя за изменениями этих переменных
Вам спасибо, в принципе, то, что Вы показали - то только утвердили мои сомнения в возможности оптимизации опроса с помощью конфигуратора. Остается еще попробовать операции со строками. Они у меня раньше неплохо получались для одного-трех устройств с двумя десятками регистров. А сейчас у меня девять устройств и по два-три различных регистров. Вот и кручусь.
Так и не увидел я Ваших ответов по существу своих вопросов, как по Modbus, так и по Hennessy. Ну, а по поводу работы библиотек Modbus.lib, то года три назад, я здорово обжигался на работе с ними. Где-то у них косяк в части активации сеанса связи и здесь на форуме по этому поводу было много высказано претензий. Я проверил последнее руководство по работе с этой библиотекой. Оно нисколько не исправлено. Мне что, по новой биться головой об эту стену?
Если опрашивать разные регистры одного устройства - то признака нет. Вариантов решения несколько:
1. Опрашивать разные устройства по очереди
2. Опрашивать существующие регистры и отсутствующие регистры по очереди - тогда переход от кода ошибки к 0 - признак завершения.
3. Выставить минимальный таймаут, превышающий время ответа и если через таймаут+1мс не появилась ошибка - значит все ок.
4. Ну и хакерский трюк - взять адрес last error и по указателю туда писать не 0 перед подачей команды на обмен.
Выбирайте :)