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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с COM портом, как успеть среагировать? 
:(
    Опции темы
DonPager
  Дата 10.10.2007, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


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

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



Ситуация такова:
некоторое время назад мои коллеги разработали замечательное устройство, которое кроме всего прочего умеет общатся с другими ус-вами через RS232... теперь надо подружить его с компом... вродебы всё сделал, НО... есть один ньюанс: По одному проводу гонятся и данные и команды, а разделяются они посредством состояния DCD (RLSD) в текущий момент....это прекрасно работает на "голых" контроллерах и как показал опыт с реалтайм приоритетом под некоторыми линухами, а вот как заставить это работать под виндой ума не приложу....
пока что все говорят мне только забей и сделай аппаратный переходник, но может можно как нибудь программно?

вот в кратце правила обмена:
-Скорость Команд 38400
-Скорость данных 1200-16000
-данные передаются порциями по 24 байта
-команды посылаются или при отсутствии данных или в "корыте" образовашемся из-за разницы скоростей
-при передаче данных DC=1, при командах DC=0

КАК отделить мух от котлет ? Винда не успевает smile 


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
Felan
Дата 10.10.2007, 07:41 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И не успеет.
Надо или делать специальный шнурок и настраивать сам виндовый драйвер, что бы это все работало аппаратно. Но то, что будет работать не факт, т.к. не совсем понял алгоритм обмена. Зачем там вообще было использовать определение несущей (DCD)? Тут можно попробовать извратиться если сделать работу с портом по событиям. Т.е. как только возникает событие (на которое будет железно заведена ваша DCD) считается, что в буфер читается команда, иначе данные. Но опять же, вопрос разделения команд и данных на программном уровне не ясен.

Как-то подругому выделять команды и данные. А если есть возможность, то вообще переосмыслить ситуацию и изменить протокол. Если не свой придумать то хотя бы ModBus.


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


Колдырь
**


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

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



Цитата(Felan @  9.10.2007,  23:41 Найти цитируемый пост)
А если есть возможность, то вообще переосмыслить ситуацию и изменить протокол. Если не свой придумать то хотя бы ModBus. 
такой возможности нет :(
Цитата(Felan @  9.10.2007,  23:41 Найти цитируемый пост)
Зачем там вообще было использовать определение несущей (DCD)?

так уж ребята придумали "...а что это у нас 109й провод без дела болтается ??? заюзаем его"
Цитата(Felan @  9.10.2007,  23:41 Найти цитируемый пост)
делать специальный шнурок и настраивать сам виндовый драйвер, что бы это все работало аппаратно. 
 и ты отвечаешь также - 
Цитата(DonPager @  9.10.2007,  17:03 Найти цитируемый пост)
забей и сделай аппаратный переходник,




--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
Felan
Дата 10.10.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DonPager @  10.10.2007,  11:15 Найти цитируемый пост)
 и ты отвечаешь также - 

Несовсем. В этом мега шнурке можно попробовать обойтись без электроники, просто DCD не на свое место поставить а, например, на DTR или что-то в этом роде (я сейчас уже не помню точно как там с сигналами что происходит).

А драйвер порта можно настроить так, что бы он по определенному событию (например падению этого самого DTR или чего-нибудь другого) возбуждал событие. Все это естественно делается на голом WinAPI и совершенно не гарантирует результат, т.к. много вопросов с синхронизацией все равно будет... Это так, размышления на тему.

ЗЫЖ Ну не предназначен COM для протоколов которые завязаны на время... smile Ну не играет она smile


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

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



DonPager, ты можешь выложить описание протокола его временную диаграмму да и вобще всё что есть.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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