Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> com порт и АЦП 
:(
    Опции темы
svip
Дата 27.3.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.3.2007

Репутация: нет
Всего: нет



возникла такая проблема. есть АЦП нужно связать его с программой через com порт. и в программе вывести значения амплитуды.

на АЦП подается тактовый сигнал 7 контакт порта и сигнал для начала преобразования сигнала в АЦП 4 контакт порта. Данные снимаются с 8 контакта порта
то есть нужно подавать тактовый сигнал частотой 1-1000Гц на 7 контакт
подать логическую единицу на 4 контакт
и считать информацию с 8 контакта.

ПОМОГИТЕ ПОЖАЛУЙСТА.
PM MAIL WWW ICQ   Вверх
svip
  Дата 27.3.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.3.2007

Репутация: нет
Всего: нет



помогите конкретным примером на delphi если кто знает как это реализовать.
Буду очень благодарен smile  
PM MAIL WWW ICQ   Вверх
cardinal
Дата 27.3.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Возможно Вам скорее надо в "Программирование контроллеров"...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
svip
Дата 27.3.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.3.2007

Репутация: нет
Всего: нет



дело не в контроллерах. Нужно в делфи работать к конкретным выводом в COM порте
PM MAIL WWW ICQ   Вверх
svip
Дата 27.3.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.3.2007

Репутация: нет
Всего: нет



наверное никто не знает как это реализовать. Обидно ведь у меня есть exeшник в котором это реализовано :(
PM MAIL WWW ICQ   Вверх
Злоумышленник
Дата 28.3.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: нет
Всего: -3



Советую почитать "Последовательные интерфейсы ПК" П. Агуров
PM   Вверх
svip
Дата 28.3.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.3.2007

Репутация: нет
Всего: нет



перечитал уже все что возможно найти. но нигде не написано как работать с конкретной ножкой ком порта как например в паскале port[$2F8+6]:=2 например
PM MAIL WWW ICQ   Вверх
svip
Дата 30.3.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.3.2007

Репутация: нет
Всего: нет



может все таки ктонибудь знает как это раелизовать
PM MAIL WWW ICQ   Вверх
malor
Дата 2.9.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Агуров П."Последовательные интерфейсы ПК", стр.104-106. Запустил прогу ports.exe:
Код
H:\GLAVA07\2>ports
Базовый адрес COM1 равен 03F8
Базовый адрес COM2 равен 02F8
Базовый адрес COM3 равен 03E8
Базовый адрес COM4 равен 02E8
Но когда я захожу в Свойства компа->Устройства, то там лишь:
Последовательный порт(COM3)
Последовательный порт(COM4)
Порт принтера(LPT1)
Profilic USB-to-Serial Comm Port(COM6)

Почему тогда програма не написала, что "COM1 не обнаружен"(а также и COM2)?
Почему программой не упомянут COM6 ?

WinXP_sp2, Delphi 7
PM MAIL   Вверх
Злоумышленник
  Дата 2.9.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: нет
Всего: -3



По-поводу ножек (пинов). Есть возможность проверять "состояние модемных линий", с помощью WinAPI. В компоненте Агурова это реализовано, если память не изменяет. И это описывается в любой статье в инете по программированию СОМ-портов. Просто нужно потрудиться, почитать, поизучать коли уж этим занимаетесь. Тем более что обычно СОМ-порты - это коммерческая тема, денежная ;).


malor, не путайте адеса в области данных последовательных портов виртуальной машины DOS и конфигурацию оборудования, а также Delphi7 и Turbo Pascal. Неужели вы скомпили в Делфе тот PORTS.EXE smile) ?

Это сообщение отредактировал(а) Злоумышленник - 2.9.2007, 23:53
PM   Вверх
Felan
Дата 3.9.2007, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



svip, непосредственно ножкой дергать в прямом смысле не получится, т.к. последовательный на то и последовательный, что у него нет как таковой шины данных.

Но можно т.с. сэмулировать дерганье, если управлять служебными сигналами а частоту реализовать подачей определенных последовательностей в порт. Но это сильно зависит от железной реализации, какие сигналы для чего у тебя используются, и надо эксперементировать с конкретной железкой.

Мой опыт говорит о том, что использовать в таких случаях какие либо компоненты себе дороже и лучше сделать а  API то, что тебе нужно.

Короче, тут думаю тебе самому придется ковыряться. Почитай книжку которую тебе тут рекомендовали и про работу с портами в MSDN, вобщем-то там все понятно... Если есть конкретные вопросы, то попробую ответить.
Цитата(malor @  2.9.2007,  17:35 Найти цитируемый пост)
Но когда я захожу в Свойства компа->Устройства, то там лишь:
Последовательный порт(COM3)
Последовательный порт(COM4)
Порт принтера(LPT1)
Profilic USB-to-Serial Comm Port(COM6)
Почему тогда програма не написала, что "COM1 не обнаружен"(а также и COM2)?
Почему программой не упомянут COM6 ?


Ну если мне телепатия не изменяет то:
Потому что 3 и 4 это виртуальные порты (либо у тебя по какой-то причине изменилась нумерация), а реальных может и не быть вообще. Потому что твоя программа видимо ищет не все порты, а только до определенного номера.
Не обнаружены они потому, что их нет в системе.


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Злоумышленник
Дата 3.9.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: нет
Всего: -3



Цитата(Felan @  3.9.2007,  07:41 Найти цитируемый пост)
Потому что твоя программа видимо ищет не все порты, а только до определенного номера.Не обнаружены они потому, что их нет в системе.



Felan, ты видимо невнимательно прочитал мой предыдущий пост. Прога эта на Турбо Паскале сделана, и не порты она ищет, а адреса стандартных портов от 1 до 4 в служебной области БИОС из под ДОС (СОМ1-4 подставляется прогой "в лоб"). А что такое адреса портов в данном случае - почитай какой-нить учебник по Ассемблеру.

Насчёт использовать компоненты или "API". Во-первых, компоненты делаются "на API". Во-вторых, из тех, что я видел, всё уже есть. В-третьих, используя компоненты, получаешь программу без ошибок, быстро сделанную и при грамотном компоненте компактную.

Это сообщение отредактировал(а) Злоумышленник - 3.9.2007, 09:30
PM   Вверх
Felan
Дата 3.9.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: 2
Всего: 7



Рас уж ты все это хочешь под Windows, то рекомендую тебе соответствующую книжку почитать, а не козырять решениями из DOS'а...

Ну да ладно. Дело твое.


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
malor
Дата 4.9.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Что понимается под фразой "Коммуникационные порты занимают в пространстве ввода/вывода по восемь смежных 8-битовых регистров и могут располагаться по стандартным базовым адресам" ?

Еще вот эта фраза убивает- "Базовый адрес - это 2-байтовый адрес порта, который является младшим из группы адресов портов, дающих доступ к UART". Что за "группа адресов портов"?
(Агуров, стр. 104)

Это сообщение отредактировал(а) malor - 4.9.2007, 13:17
PM MAIL   Вверх
Virtuals
Дата 5.9.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



как говорится комментарии излишни

Код

\\ unit Windows;

function EscapeCommFunction; external kernel32 name 'EscapeCommFunction';

  { Escape functions }

  SETXOFF = 1;    { Simulate XOFF received }
  {$EXTERNALSYM SETXOFF}
  SETXON = 2;     { Simulate XON received }
  {$EXTERNALSYM SETXON}
  SETRTS = 3;     { Set RTS high }
  {$EXTERNALSYM SETRTS}
  CLRRTS = 4;     { Set RTS low }
  {$EXTERNALSYM CLRRTS}
  SETDTR = 5;     { Set DTR high }
  {$EXTERNALSYM SETDTR}
  CLRDTR = 6;     { Set DTR low }
  {$EXTERNALSYM CLRDTR}
  RESETDEV = 7;   { Reset device if possible }
  {$EXTERNALSYM RESETDEV}
  SETBREAK = 8;   { Set the device break line. }
  {$EXTERNALSYM SETBREAK}
  CLRBREAK = 9;   { Clear the device break line. }
  {$EXTERNALSYM CLRBREAK}

procedure OUTSIGNAL(St:DWORD);
begin
 EscapeCommFunction(hCommFile,st);
end;

OUTSIGNAL(SETBREAK);



Цитата(Felan @  3.9.2007,  07:41 Найти цитируемый пост)
svip, непосредственно ножкой дергать в прямом смысле не получится, т.к. последовательный на то и последовательный, что у него нет как таковой шины данных.


OUTSIGNAL(SETBREAK); это вам в пику


Это сообщение отредактировал(а) Virtuals - 5.9.2007, 16:23
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.