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

Поиск:

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


Опытный
**


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

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



Прежде чем пиками тыкаться, читаем посты полностью smile

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


Это во первых.
Во вторых, я посмотрю, как ты будешь дергать эти сигналы с частотой в 
Цитата(svip @  27.3.2007,  21:30 Найти цитируемый пост)
1-1000Гц 
. Еще при это наверно и стабильность частоты будет хотеться???



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


Опытный
**


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

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



1
Цитата

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

это
Код

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

OUTSIGNAL(SETBREAK);

и есть прямое дерганье ножки дата
про остальные молчу

2
Цитата(Felan @  6.9.2007,  07:41 Найти цитируемый пост)
Это во первых.
Во вторых, я посмотрю, как ты будешь дергать эти сигналы с частотой в 

Цитата(svip @  27.3.2007,  21:30 )
1-1000Гц 

. Еще при это наверно и стабильность частоты будет хотеться???

так вот судя по первому посту как раз стабильность не требуется (интуитивно по опыту)
Цитата

на АЦП подается тактовый сигнал 7 контакт порта

есть тактовая - стабильность идет лесом //стандартный алгоритм типа шины I2C

в чем не прав?
PM MAIL ICQ   Вверх
Felan
Дата 7.9.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В теории мы про одно и тоже... только разными словами.

На практике ты не прав в том что:

1 - Гигагерц у тебя не получится. Попробуй. Если сделаешь, и будет у тебя действительно гигагерц, да еще и хотя бы иногда действительно осциллограф будет показывать эту частоту, буду век тебя помнить, если исходниками поделишься. Насколько я знаю, еще никому гигагерц не удалось с COM-порта получить, уж тем более под Windows.

2 - I2C - протокол межмикросхемного взаимодействия. Да, его, теоретически, возможно эмулировать COM-потом, на практике, как человек 2 года писавший программы для работы с контроллерами по COM-порту, я тебе говорю, не получится! А если и получится, то я бы не поручился за поделку. Потому как Windows не должна, и не обеспечивает нужные параметры. Они могут совпасть, а могут и нет. И будешь ты объяснять заказчикам что верблюд не ты, а Гейтс. Но им будет все равно, им главное, что твоя программа не работает (ну или если повезет, то переодически не работает).

3 - Можно шуруп забить молотком... Никто не мешает, но это неправильно. И то, что хочет сделать автор, сделать  можно (если забыть про верхний предел требуемой частоты), но это неправильно! Ибо все, что завязано на тайминг windows обеспечивать "НЕ ОБЯЗАНА", а следовательно надо делать управляющий контроллер, который будет посредником. Или же все это сделать на одном, что бы его просто конфигурировать, а дальше он уже сам.

ЗЫЖ Про Modbus слышал? Так вот там есть умные переходники, а есть не очень, и что бы не очень умный работал, ему надо правильно подавать сигнал о том, что надо изменить направление передачи... В теории все просто, как у тебя! А вот на практике 50/50. То работает, то нет. И чем больше устройств и выше частота, тем чаще не работает. Вобщем проблему решили, но это все было через не то место, и к тому времени я уже уволился... 

Короче, я хочу сказать, что надо делать как положено, если надо что бы работало как положено.


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


Опытный
**


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

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



уважаемый Felan "мы же взрослые люди, лучше возьмем линейку и сравним"  smile шутка цитата
по теме
вы допустили несколько важных неточностей!:

1 речь идет о 1-1000 ГЕРЦ!

2 - I2C - протокол межмикросхемного взаимодействия. реализуется на раз и без проблем. в нем главное не ПОСЛЕДОВАТЕЛЬНОСТЬ СИГНАЛОВ!. а скорость не важна

3 в одном вы правы тайминги виндовс не обязан выдерживать (ну не реалтайм система)

4
Цитата

ЗЫЖ Про Modbus слышал?
 еще как (как никак в отделе асутп уже более 6 лет, и специализация именно контроллеры и взаимодействие между ними)
вы наверное имели в виду не Modbus, а RS485  smile где приходится переключать прием и передачу отдельным сигналом. так вот да на больших скоростях бывают трудности но до 57600 включительно работает стабильно (но приходится извернутся с программированием, есть свои тонкости- но все решаемо)

и последнее проблема описанная автором решается стандартным апи системы. без каких либо извращений


Это сообщение отредактировал(а) Virtuals - 7.9.2007, 11:22
PM MAIL ICQ   Вверх
Felan
Дата 7.9.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Virtuals @  7.9.2007,  13:20 Найти цитируемый пост)
1 речь идет о 1-1000 ГЕРЦ!

Точно... Блин, посыпаюсь пеплом! smile
Хотя и сомневаюсь в реальности даже мегагерца...

Цитата(Virtuals @  7.9.2007,  13:20 Найти цитируемый пост)
2 - I2C - протокол межмикросхемного взаимодействия. реализуется на раз и без проблем. в нем главное не ПОСЛЕДОВАТЕЛЬНОСТЬ СИГНАЛОВ!. а скорость не важна

Здесь не согласен!
Т.к. то, о чем говоришь ты, это выполняется напрямую. А данные пересылаются драйвером Windows.  Поэтому нет возможности точно определить, когда какая чать данных уже ушла на устройство (только когда они поступили во внутренний буфер драйвера). А так, что бы сам драйвер выставлял сигналы, можно сделать не всегда, т.к. это зависит от того, какие сигналы и как выставлять.
Хотя, опять же в элементарном варианте может это и будет работать, но вот я бы не стал так делать...

Цитата(Virtuals @  7.9.2007,  13:20 Найти цитируемый пост)
Modbus, а RS485 

Да, именно. smile Просто описАлся малость. Для меня это был по большей части ModBus, это для электронщика (напарника) это был RS485 smile
У нас все начиналось рушиться на 38400. 

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

Ну что ж... Вроде выяснили ситуацию smile
Дабы не сваливаться в холивары, предлагаю мировую smile Тем более автор пропал smile


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


Опытный
**


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

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



Ок мировая. smile 
Цитата

У нас все начиналось рушиться на 38400. 

есть такая противная вещ как FIFO буфер , а в случае USB-RS232 и не один вот из-за него проблемы (но есть возможность его отключить и сделать мин обьема, ) информация на будущее //сам не одни сутки убил на решение данной задачки (кстати относится не только к виндам, а вообще к портам в общем)

Цитата(Felan @  7.9.2007,  12:10 Найти цитируемый пост)
Поэтому нет возможности точно определить, когда какая чать данных уже ушла на устройство (только когда они поступили во внутренний буфер драйвера). 

есть очень надежный способ STS-CTS DTR-STR DI-DO  smile для полного контроля.

ЗЫ сам так епромки программирую

Это сообщение отредактировал(а) Virtuals - 7.9.2007, 14:58
PM MAIL ICQ   Вверх
Felan
Дата 10.9.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Virtuals @  7.9.2007,  16:53 Найти цитируемый пост)
есть очень надежный способ STS-CTS DTR-STR DI-DO  smile для полного контроля.


Что-то не припоминаю в стандарте RS232 сигналов STS или STR... возможно имелось ввиду RTS-CTS и DTR-DSR?

Ну да это не важно.
Их можно и нужно использовать. Только в Delphi7 неправильно указаны константы для настройки дравера :(
Совершенно случайно на это наткнулся... Очень много тр...ся... пока выяснил это... потом переобъявил как надо и было счастье smile

ЗЫЖ А что такое DI-DO???


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


Опытный
**


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

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



RTS-CTS и DTR-DSR виноват зарапортовалси, они самые а di-do в rs232 это txd-rxd

а что за константы? (правда у меня D6)

Это сообщение отредактировал(а) Virtuals - 10.9.2007, 10:22
PM MAIL ICQ   Вверх
Felan
Дата 10.9.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Битовые константы DCB структуры.
Код

The DCB structure defines the control setting for a serial communications device.

typedef struct _DCB {
DWORD DCBlength;  
DWORD BaudRate;  
DWORD fBinary  :1;  
DWORD fParity  :1;  
DWORD fOutxCtsFlow  :1;  
DWORD fOutxDsrFlow  :1;  
DWORD fDtrControl  :2;  
DWORD fDsrSensitivity  :1;  
DWORD fTXContinueOnXoff  :1;  
DWORD fOutX  :1;  
DWORD fInX  :1;  
DWORD fErrorChar  :1;  
DWORD fNull  :1;  
DWORD fRtsControl  :2;  
DWORD fAbortOnError  :1;  
DWORD fDummy2  :17;  
WORD wReserved;  
WORD XonLim;  
WORD XoffLim;  
BYTE ByteSize;  
BYTE Parity;  
BYTE StopBits;  
char XonChar;  
char XoffChar;  
char ErrorChar;  
char EofChar;  
char EvtChar;  
WORD wReserved1;
} DCB;



В дефийских обертках битовая часть представлена как Flags: Longint; И выставлять их надо через присвоение комбинации констант использую "or". А они объявлены не как битовые, а как числовые.

Например:
Объявлено   DTR_CONTROL_HANDSHAKE = 2;
Должно быть dcb_DtrControlHandshake = $00000020;

Т.к. в делфи, в отличае от билдера нет полей для присвоения значения конкретному битовому полю... :(

Это сообщение отредактировал(а) Felan - 10.9.2007, 11:00


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


Новичок



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

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



 smile  За хорошим обсуждением забывается изначальный вопрос. smile 
А вообще-то "подергать" можно сигналы RTS (Request To Send) и DTR (Data Terminal ready) соответственно контакты 7 и 4 на 9 контактном разъеме. smile 
PM MAIL   Вверх
Virtuals
Дата 12.9.2007, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



сам такой ответ в последнем посту на первой странице! smile 
Код


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

 OUTSIGNAL(SETBREAK);  OUTSIGNAL(CLRBREAK );  \\дергаем TXD
 OUTSIGNAL(SETRTS );  OUTSIGNAL(CLRRTS );  \\дергаем RTS
 OUTSIGNAL(SETDTR );  OUTSIGNAL(CLRDTR );  \\дергаем DTR

PM MAIL ICQ   Вверх
RinOSpro
Дата 12.9.2007, 09:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











svip  дляработы с портами в xp, я использую библиотеку inpout32.dll если тее еще нужен модуль для работы с этой DLL то скину. 

теперь по твоему вопросу 

Код

то есть нужно подавать тактовый сигнал частотой 1-1000Гц на 7 контакт
подать логическую единицу на 4 контакт
и считать информацию с 8 контакта


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

с Com портом не работал работал только с LPT но может тебе это поможет 8 ножек это есть байт на каждой ножке один бит

значит нужно подать в порт 01000000 в 2 систе сч.  подавать тактовый сигнал частотой 1-1000Гц на 7 контакт 

нужно подать в порт 00001000 в 2 систе сч.  подать логическую единицу на 4 контакт 

если правильно понял твой вопрос и то что я тебе говорю тебе подходит тогда могу дать пример в Delphi
  Вверх
Felan
Дата 12.9.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(RinOSpro @  12.9.2007,  11:55 Найти цитируемый пост)
значит нужно подать в порт 01000000 в 2 систе сч.  подавать тактовый сигнал частотой 1-1000Гц на 7 контакт 

нужно подать в порт 00001000 в 2 систе сч.  подать логическую единицу на 4 контакт 

COM != LPT. У ком порта двухпроводная шина данных и биты там передаются последовательно. Не путай человека. smile 


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


Unregistered











Цитата(Felan @ 12.9.2007,  10:00)
COM != LPT. У ком порта двухпроводная шина данных и биты там передаются последовательно.

Ну и что ты этим хочешь сказать???

svip http://www.pcports.ru/articles/pic9.php посмотри здесь
  Вверх
RinOSpro
Дата 12.9.2007, 10:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сорри с COM не так просто как с LPT, и его полноценное использование потребует значительно больших усилий. Главной загвоздкой является и его главное преимущество - передача данных в последовательном виде. Если в LPT байт данных передается по 8-ми линиям по биту на каждую, и состояние каждой линии можно было легко посмотреть, то в COM порту байт данных передается бит за битом по одной линии (относительно земли, конечно)

c сайта http://www.pcports.ru 

Добавлено через 3 минуты и 4 секунды
хотя библиотеку inpout32.dll  использовать реально
  Вверх
Страницы: (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.0946 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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