Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 17:31   #1
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию Счетчик импульсов через ком-порт

Собственно проблема такова.

К ком-порту подключено нестандартное уст-во. Мотор. Там есть геркончик. Мотором управляю через линии dtr, rts.
На cts подвешен геркон.
Если не дергать окно программы все ок.
Начинаешь минимизировать-раскрывать пропускает импульсы с геркона.
Пытался делать на разных компонентах.
SerialNg - в отдельном потоке так и не запустил подсчет.
RomanComPort - даже если в отдельном потоке, тот же эффект.
z-wer вне форума Ответить с цитированием
Старый 18.05.2011, 20:32   #2
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

cts ты опрашиваешь программно, поэтому как только твою программу обделяют вниманием процессора она начинает пропускать, программно здесь ни чем не поможешь, можно конечно просвоить процессу приоритет realtime но тогда все будет жутко висеть, (пробовал как то). пробуй изменить аппаратную часть, что ,s счет ввелся вне компа, хотя тут думаю нужно будет контроллером каким нить обзовестись.
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 18.05.2011, 20:58   #3
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию

Я не особо матерый в программировании, но мне казалось что можно как то и на програмном уровне все решить.
А нельзя чего нить типа апликатион процессмессаге на кнопку "минимизировать" приклеить?
И еще вопрос чем можно заменить WaitCommEvent...

Собственно там то идет около 500 импульсов в минуту, не так уж и много.
Железо уже спаяно, не особо и охота переделывать.
В схеме стоит ftdi 232rl, дальше все на ключах и опторазвязка.
z-wer вне форума Ответить с цитированием
Старый 18.05.2011, 21:04   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Можно попробоат через прерывания обработку сделать.
Сам не пробовал, но как-то можно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 18.05.2011, 21:12   #5
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию

Swarog, по барабану приоритет потока. Систему сильно не грузит, хотя и выставил реал тайм. А как прозёвывало импульсы так и продолжает. Но мне полюбому чего-то надо думать про замену waitcommevent. Ужасающая функция...
z-wer вне форума Ответить с цитированием
Старый 18.05.2011, 22:46   #6
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

Про прерывания забудьте, если только не пишети под дос или нехотите создать свои драйвера.
z-wer можете выложить код потока где состояние считывается?
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 19.05.2011, 07:29   #7
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию

Swarog, я тож уже подумал про прерывания.
Что все это на уровне драйвера. Ну оно то можно че нить замутить, но стоит ли. Хотя я думаю что к ftdi они вроде как на офф сайте есть и наверное исходники фришные.
Код потока чуть позже выложу, проект некоммерческий, под себя делаю.
Могу и схему управления выложить, тож ничего секретного. Стандартная схема включения(по даташиту) через усби.
z-wer вне форума Ответить с цитированием
Старый 19.05.2011, 07:33   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от z-wer Посмотреть сообщение
Могу и схему управления выложить, тож ничего секретного. Стандартная схема включения(по даташиту) через усби.
Выложи, я гляну. Возможно проще будет туда пару счётчиков впихнуть и не париться с прогой.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.05.2011, 10:37   #9
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию

Пример кода потока.
Используется только для проверки на корректность счета импульсов в отдельном потоке. Прошу сильно не бить, особенно по лицу.
Маска события задана в свойствах компонента порта.
Цитата:
procedure TSensor.Execute;
var
dwMask: DWORD;
begin
repeat
WaitCommEvent(Form1.RomanComPort1.C omHandle, dwMask, nil);
inc(Count);
Synchronize(UpdateCount);
until Terminated;
end;

procedure TSensor.UpdateCount;
// индикатор положения
begin
Form1.LCDLine1.Text := IntToStr(Count);
end;
Схема во вложении.
Вложения
Тип файла: rar zPos.rar (136.0 Кб, 14 просмотров)
z-wer вне форума Ответить с цитированием
Старый 19.05.2011, 10:45   #10
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию

Если впихивать счетчик - пойдет под переделку всё железо.
Кроме релюх, оптопар и еще пары деталей все смд - раздраконить можно, но это уже второй вопрос.

Плюс к этому придется еще как минимум rx задействовать.
Написать код для какой нить атитини - это уже не для меня задача.

Последний раз редактировалось z-wer; 19.05.2011 в 10:48.
z-wer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик импульсов на LPT. Delphi clone_ Общие вопросы Delphi 7 29.04.2011 01:29
Виртуальный ком порт и нестандартная скорость Gumel Компьютерное железо 0 28.01.2011 15:25
Определенная последовательность импульсов на ком порт antinup C++ Builder 3 27.05.2010 09:29
Ком-порт! Gawwws Microsoft Office Excel 1 06.02.2010 20:40
Счетчик импульсов stanik123 Общие вопросы Delphi 11 09.10.2009 10:10