![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Прежде чем пиками тыкаться, читаем посты полностью
![]() Это во первых. Во вторых, я посмотрю, как ты будешь дергать эти сигналы с частотой в . Еще при это наверно и стабильность частоты будет хотеться??? -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
Virtuals |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
1
это
и есть прямое дерганье ножки дата про остальные молчу 2 так вот судя по первому посту как раз стабильность не требуется (интуитивно по опыту)
есть тактовая - стабильность идет лесом //стандартный алгоритм типа шины I2C в чем не прав? |
||||||
|
|||||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
В теории мы про одно и тоже... только разными словами.
На практике ты не прав в том что: 1 - Гигагерц у тебя не получится. Попробуй. Если сделаешь, и будет у тебя действительно гигагерц, да еще и хотя бы иногда действительно осциллограф будет показывать эту частоту, буду век тебя помнить, если исходниками поделишься. Насколько я знаю, еще никому гигагерц не удалось с COM-порта получить, уж тем более под Windows. 2 - I2C - протокол межмикросхемного взаимодействия. Да, его, теоретически, возможно эмулировать COM-потом, на практике, как человек 2 года писавший программы для работы с контроллерами по COM-порту, я тебе говорю, не получится! А если и получится, то я бы не поручился за поделку. Потому как Windows не должна, и не обеспечивает нужные параметры. Они могут совпасть, а могут и нет. И будешь ты объяснять заказчикам что верблюд не ты, а Гейтс. Но им будет все равно, им главное, что твоя программа не работает (ну или если повезет, то переодически не работает). 3 - Можно шуруп забить молотком... Никто не мешает, но это неправильно. И то, что хочет сделать автор, сделать можно (если забыть про верхний предел требуемой частоты), но это неправильно! Ибо все, что завязано на тайминг windows обеспечивать "НЕ ОБЯЗАНА", а следовательно надо делать управляющий контроллер, который будет посредником. Или же все это сделать на одном, что бы его просто конфигурировать, а дальше он уже сам. ЗЫЖ Про Modbus слышал? Так вот там есть умные переходники, а есть не очень, и что бы не очень умный работал, ему надо правильно подавать сигнал о том, что надо изменить направление передачи... В теории все просто, как у тебя! А вот на практике 50/50. То работает, то нет. И чем больше устройств и выше частота, тем чаще не работает. Вобщем проблему решили, но это все было через не то место, и к тому времени я уже уволился... Короче, я хочу сказать, что надо делать как положено, если надо что бы работало как положено. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
Virtuals |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
уважаемый Felan "мы же взрослые люди, лучше возьмем линейку и сравним"
![]() по теме вы допустили несколько важных неточностей!: 1 речь идет о 1-1000 ГЕРЦ! 2 - I2C - протокол межмикросхемного взаимодействия. реализуется на раз и без проблем. в нем главное не ПОСЛЕДОВАТЕЛЬНОСТЬ СИГНАЛОВ!. а скорость не важна 3 в одном вы правы тайминги виндовс не обязан выдерживать (ну не реалтайм система) 4
вы наверное имели в виду не Modbus, а RS485 ![]() и последнее проблема описанная автором решается стандартным апи системы. без каких либо извращений Это сообщение отредактировал(а) Virtuals - 7.9.2007, 11:22 |
|||
|
||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Точно... Блин, посыпаюсь пеплом! ![]() Хотя и сомневаюсь в реальности даже мегагерца...
Здесь не согласен! Т.к. то, о чем говоришь ты, это выполняется напрямую. А данные пересылаются драйвером Windows. Поэтому нет возможности точно определить, когда какая чать данных уже ушла на устройство (только когда они поступили во внутренний буфер драйвера). А так, что бы сам драйвер выставлял сигналы, можно сделать не всегда, т.к. это зависит от того, какие сигналы и как выставлять. Хотя, опять же в элементарном варианте может это и будет работать, но вот я бы не стал так делать... Да, именно. ![]() ![]() У нас все начиналось рушиться на 38400. Я и писал, что лучше использовать API. Тогда может получиться. Хотя решение не хорошее на мой взгляд (не в смысле использования API а вообще таким образом управлять контроллером через порт. Ну что ж... Вроде выяснили ситуацию ![]() Дабы не сваливаться в холивары, предлагаю мировую ![]() ![]() -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
Virtuals |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Ок мировая.
![]()
есть такая противная вещ как FIFO буфер , а в случае USB-RS232 и не один вот из-за него проблемы (но есть возможность его отключить и сделать мин обьема, ) информация на будущее //сам не одни сутки убил на решение данной задачки (кстати относится не только к виндам, а вообще к портам в общем)
есть очень надежный способ STS-CTS DTR-STR DI-DO ![]() ЗЫ сам так епромки программирую Это сообщение отредактировал(а) Virtuals - 7.9.2007, 14:58 |
||||
|
|||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Что-то не припоминаю в стандарте RS232 сигналов STS или STR... возможно имелось ввиду RTS-CTS и DTR-DSR? Ну да это не важно. Их можно и нужно использовать. Только в Delphi7 неправильно указаны константы для настройки дравера :( Совершенно случайно на это наткнулся... Очень много тр...ся... пока выяснил это... потом переобъявил как надо и было счастье ![]() ЗЫЖ А что такое DI-DO??? -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
Virtuals |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
RTS-CTS и DTR-DSR виноват зарапортовалси, они самые а di-do в rs232 это txd-rxd
а что за константы? (правда у меня D6) Это сообщение отредактировал(а) Virtuals - 10.9.2007, 10:22 |
|||
|
||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Битовые константы DCB структуры.
В дефийских обертках битовая часть представлена как Flags: Longint; И выставлять их надо через присвоение комбинации констант использую "or". А они объявлены не как битовые, а как числовые. Например: Объявлено DTR_CONTROL_HANDSHAKE = 2; Должно быть dcb_DtrControlHandshake = $00000020; Т.к. в делфи, в отличае от билдера нет полей для присвоения значения конкретному битовому полю... :( Это сообщение отредактировал(а) Felan - 10.9.2007, 11:00 -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
tyro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 8.10.2006 Репутация: нет Всего: нет |
![]() ![]() А вообще-то "подергать" можно сигналы RTS (Request To Send) и DTR (Data Terminal ready) соответственно контакты 7 и 4 на 9 контактном разъеме. ![]() |
|||
|
||||
Virtuals |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
сам такой ответ в последнем посту на первой странице!
![]()
|
|||
|
||||
RinOSpro |
|
|||
Unregistered |
svip дляработы с портами в xp, я использую библиотеку inpout32.dll если тее еще нужен модуль для работы с этой DLL то скину.
теперь по твоему вопросу
ты сам то знаешь где этот седьмой контакт находится или ты сам его обозвал седьмым контактом, и какой тактовый сигнал нужен логический ноль или еденица с Com портом не работал работал только с LPT но может тебе это поможет 8 ножек это есть байт на каждой ножке один бит значит нужно подать в порт 01000000 в 2 систе сч. подавать тактовый сигнал частотой 1-1000Гц на 7 контакт нужно подать в порт 00001000 в 2 систе сч. подать логическую единицу на 4 контакт если правильно понял твой вопрос и то что я тебе говорю тебе подходит тогда могу дать пример в Delphi |
|||
|
||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
COM != LPT. У ком порта двухпроводная шина данных и биты там передаются последовательно. Не путай человека. ![]() -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
RinOSpro |
|
|||
Unregistered |
Ну и что ты этим хочешь сказать??? svip http://www.pcports.ru/articles/pic9.php посмотри здесь |
|||
|
||||
RinOSpro |
|
|||
Unregistered |
Сорри с COM не так просто как с LPT, и его полноценное использование потребует значительно больших усилий. Главной загвоздкой является и его главное преимущество - передача данных в последовательном виде. Если в LPT байт данных передается по 8-ми линиям по биту на каждую, и состояние каждой линии можно было легко посмотреть, то в COM порту байт данных передается бит за битом по одной линии (относительно земли, конечно)
c сайта http://www.pcports.ru Добавлено через 3 минуты и 4 секунды хотя библиотеку inpout32.dll использовать реально |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |