fiatik fiatik (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как отключить Buzz?, Обсуждение: Как отключить Buzz?
 
Случайно нажал кнопку Buzz в DS Manager. Теперь не могу остановить мигание диодов на платах. Попробовал даже переустановку всего ПО TIBBO. Увы, не помогло. Что делать?
Как программно проверить доступность EM100 перед началом работы?, Обсуждение: Как программно проверить доступность EM100 перед началом работы?
 
Распределённая система сбора данных состоит из единственного ПК (сервер, постоянно рядом с ним никто не находится) и пяти удалённых устройств, подключенных с помощью виртуальных COM-портов (драйвер TIBBO) и стандартных плат с модулем EM100. Питание плат осуществляется от блоков питания контролируемых устройств. Программа ПК помимо сбора данных раз в десять секунд отправляет каждому устройству короткую посылку с целью проверки связи.
Когда все устройства включены – никаких проблем не возникает.
Если хотя бы одно обесточено в момент запуска программы на ПК, то соответствующий ему виртуальный порт открывается нормально, но при первой передаче в этот порт хотя бы одного байта, программа «зависает» секунд на 12-15. Это весьма раздражает пользователей и периодически приводит к потерям информации от остальных устройств.
Приложение для ПК написано в Delphi. С целью исключения подозрений на ошибку программиста или протокола обмена с контролируемыми устройствами и т.д., поставлен эксперимент: короткая программа отправляет в единственный порт единственный байт по нажатию кнопки.
Увы, эффект сохранился. Останавливается таймер, не отжимается кнопка и т.д. Причём, увы, даже не возникает аварийной ситуации, которую можно было бы отследить программно в блоке try … except…
После первой неудачной попытки передачи эффект исчезает и задержек больше не происходит до следующего закрытия и открытия этого порта. Если после этого включить питание обесточенного устройства, то через несколько секунд всё опять начинает работать без проблем.
Процедура передачи в порт (вызывается нажатием кнопки на форме):
procedure TFormMain.Trans2MyCommand;
var btb:byte; ActualSent:dword;
begin
try

if MyOnWorking then
begin
btb:=$31;
WriteFile(RMyComm.MyPortH,btb,1,ActualSent,NIL);
end;

except
ShowMessage('Ошибка передачи!!!')
end;
end;

Процедура приёма вызывается в системном таймере.
Ещё раз подчёркиваю: когда плата с модулем EM100 включена, то никаких проблем не возникает с любым количеством контролируемых устройств.

Мы были бы очень благодарны, если бы нам подсказали пути борьбы с обнаруженным эффектом.
Быть может можно соответственным образом изменить настройки виртуального порта? (Если честно, я сегодня, как мне кажется, уже перебрал все возможные варианты настройки…)
Быть может драйвер позволяет контролировать состояние платы, соответствующей виртуальному порту каким-либо запросом?
Быть может есть возможность производить диагностику плат до открытия виртуального COM-порта?
Страницы: 1