Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять serial порт... [D5, WinXP]


Страницы:   1 2

bg8 ©   (2005-12-09 20:47:00) 

Доброго времени суток, Мастера!

Извиняюсь сразу, вопрос собственно не то чтобы о Delphi, а философский...

Проблема в следующем. Есть некий девайс, который умеет общаться с компьютером при помощи интерфейса RS485. Есть WinXP, и переходник USBRS485. При подключении переходника в системе просто появляется еще один COM порт. Пусть будет COM3. Т.о. казалось бы, очень просто общаться с девайсом. НО. Девайс принимает команду в следующем формате:

1й байт - адрес устройства в сети RS485 (в данном случае пусть будет 1)

2й байт - кол-во байтов в пакете, исключая первый и второй

3й байт - код команды (команда - это один символ/байт)

У команды может быть некоторое кол-во параметров - от 2-х до 4-х байт

Последний байт - контрольная сумма.

Ну так вот, девайс реагирует только на команду, адресованную ему, если он знает этй команду и если контрольная сумма правильная. В противном случае он просто молчит. Если команда им распознана, то он отвечает на нее в таком же формате,  единственное что меняется - это значение и кол-во параметров.

Теперь к делу (извините за объемность текста, но все по делу помоему). под винду девайс реагирует только на две самых простых команды  - команды эти без параметров, и никаких параметров в ответ на эти команды девайсу возвращать не надо (это "ПУСК" и "СТОП"). Т.е. в ответ на эти команды он просто возвращает те же 4 байта, которые ему посылаешь, и включается (выключается). Ни на какие другие команды, которые требуют выхода за 4-х байтную границу, прибор не реагирует. (Я не утверждаю, что дело в числе 4, но сие есть экспериментальный факт.)

Есть тестовая программулька под ДОС, она требует чтоб был преобразователь COM в RS485 и висел он на COM2. Если загрузиться в ДОСе, то девайс на все команды отвечает адекватно, все работает зашибись. Думал, что дело в USB-конвертере, но нет, под винду повесил этот же конвертер COM в RS485, который работал в ДОСе, в винде все то же самое, что и с USB.

В описании этой программульки есть фраза, что "управление направлением передачи данных порта осуществляется с помощью сигнала RTS". Преобразователь интерфейса, что один, что другой, умеют аппаратно управлять направлением передачи данных. А в исходниках тестовой программульки есть такой кусочек: (программка на C, извините, на паскале нету:) )

(я по памяти пишу, поскольку все осталось на работе, попозже могу поточнее написать)

void outchar(int out){
outportb(COM+4,2);
outportb(COM,out);
while(!(inportb(COM+5)&64)) outportb(COM+4,0);
outportb(COM+4,2);
}


а переменная COM определена как 0х2F8 (ну в общем, адрес 2-го ком порта - тоже точно не помню).

В общем, я отчаялся добиться работы девайса под винду,

ай нид хелп!!

Заранее спасибо!


GanibalLector   (2005-12-10 12:39:00) [21]

Поставь PortMon и смотри за передачей/приемом.

З.Ы. И еще...я работал примерно по такому протоколу,но с другим устройством.Так вот,после посылки команды "старт" у меня требовалось переинициализировать порт(на другую четность).Описание протокола хоть есть???


tesseract   (2005-12-10 12:09:00) [22]


> Ну так блин, разобрал конечно, ничего (!) там нету такого,
>  чего бы я не сделал... скорость 9600, четности нету, стопбит
> 1, биты данных 8 бит... вот тот кусоче кода, кот. я привел,
>  мне покоя не дает... т.е. это как раз установка RTS, но
> че происходит с сигналами управления портом, когда на нем
> висят умные переходники, которые "реализуют аппаратное управление
> направлением передачи"?!


Зависит от умных переходников. RS485 всё таки от rs232 отличается. CTS/RTS там , если память не изменяет нет.


bg8   (2005-12-09 22:23:00) [23]

Ну так блин, разобрал конечно, ничего (!) там нету такого, чего бы я не сделал... скорость 9600, четности нету, стопбит 1, биты данных 8 бит... вот тот кусоче кода, кот. я привел, мне покоя не дает... т.е. это как раз установка RTS, но че происходит с сигналами управления портом, когда на нем висят умные переходники, которые "реализуют аппаратное управление направлением передачи"?!


Джо   (2005-12-09 22:19:00) [24]

Я в этом деле не специалист, но что мешает основательно разобрать ту самую работающую "досовскую программу", особенно на предмет установки параметров работы порта?


bg8   (2005-12-09 22:05:00) [25]

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


bg8   (2005-12-09 22:00:00) [26]

Вряд ли озвучивание "девайса" поможет Мастерам ответить на вопрос... Но если желаете... Пжалуйста... "Девайс" - импульсный источник высокого напряжения ИПЭИ-60, выдает в импульсе от 20 до 60 кВ, макс. частота следования импульсов 10 Гц, длительность импульса - 15 мс, создан в Институте Прикладной Физики РАН, где я собственно и учусь/работаю. Ну что, легче стало? ))

RS485 позволяет считывать и устанавливать значения внутреннего ЦАП/АЦП, т.е. измерять напряжение на выходе неконтактным( прямым) способом, что позволяет избавиться от всяких высоковольтных шунтов, делителей и пр. А исчо есть такие полезные команды у него как пуск и стоп...


bg8   (2005-12-09 21:54:00) [27]

Ну ткнули носом, ну согласен,  ну извините))


Джо   (2005-12-09 21:49:00) [28]


>  [1] bg8 ©   (09.12.05 21:45)
> Не понимаю, чего в моем вопросе от конференции "начинающим"...

Цитирую текст вверху страницы форумов:
Если Вам не хватает знаний и Вы затрудняетесь четко сформулировать вопрос, просьба размещать его в специальной конференции "для начинающих".
Ваш вопрос, насколько я понял, сводится к словам: "В общем, я отчаялся добиться работы девайса под винду". Ну, и что здесь можно конкретного сказать, если даже "девайс" не озвучен?


bg8   (2005-12-09 21:45:00) [29]

Не понимаю, чего в моем вопросе от конференции "начинающим"... Все бы были такими начинающими, как я...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо