реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> DTR,RTS,ComPort из-под Windows, Как задать направление MAX1480?
repairDV
сообщение Dec 29 2007, 03:52
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



В стендовой программке связь между компьютером и девайсом вначале шла по COM-порту, с передачей в обе стороны, потом переделал на стык RS-485 через MAX1480, но только в одном направлении, некогда было разбираться. Сейчас хочу сделать двунаправленный обмен, но не могу врубиться, как. Программка из-под Delphi, использую компоненты для COM-порта "ComPort Library version 3.10 by Dejan Crnila" для Delphi 7. На работе на рабочем оборудовании для задания направления для этой микросхемы используются сигналы ком-порта RTS и DTR, но там компьютеры под DOS. Я ещё сам как-то черкнул программку в Турбоассемблере для проверки плат связи, там получается, эти 2 сигнала имеют ту длительность, какую ты им задаёшь, а здесь, в Delphi, стал проверять, эти 2 сигнала какие-то нестабильные, установка идёт нормально, а снятие - никакой стабильности по времени, я вначале делал снятие по событию OnTxEmpty - нестабильно, потом давай с компонентом "таймер" пытаться длительность задавать - опять нестабильно. Скорее всего, причина в незнании протокола по COM для Винды. Как тут выйти из ситуации, чем можно управлять этой микросхемой?


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 29 2007, 19:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(repairDV @ Dec 29 2007, 05:52) *
Скорее всего, причина в....

Для начала причина в использовании всевозможных писанных неведомо кем и как "компонентов". Я понимаю, что это типичный дельфийский подход, но....
Будете писать хотя-бы на API можно будет хоть как-то беседовать о виндозных проблемах в этой области.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
tyro
сообщение Dec 30 2007, 05:17
Сообщение #3


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(repairDV @ Dec 29 2007, 06:52) *
. Как тут выйти из ситуации, чем можно управлять этой микросхемой?

Что бы не заморачиваться с Windows мы использовали платы, которые автоматически определяют направление передачи, а max1480 использовали вне PC совместно с микроконтроллерами. Но однажды в нужный момент платы под рукой не оказалось и пришлось делать самопал. Если память не изменяет (дело было давно и единичное решение), то решение было такое: отправляли байт в линию и одновременно считывали байт с линии (max1480 независимо от направления передачи выдает сигнал с линии на 13 ноге? - если это не так, то была другая мс и я все забыл и дальнейшее можно не читать) и сравнивали с переданным. (попутно выяснялось нет ли коллизии на линии). Если совпадали - передавали дальше, и так до последнего байта. После индетификации последнего байта переводили max на прием, вроде бы сигналом RTS. (Использовали другую библиотеку, но это по моему не играет роли).


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
repairDV
сообщение Dec 30 2007, 05:44
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



Цитата(tyro @ Dec 30 2007, 15:17) *
переводили max на прием, вроде бы сигналом RTS. (Использовали другую библиотеку, но это по моему не играет роли).

Похоже, просто придётся пока усложнять саму плату связи, на которой стоит MAX1480. Добавлять таймер, который бы запускался RTS или DTR, и включал и сбрасывал микросхему на передачу. До изучения Windows API пока руки не доходят.


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
tyro
сообщение Dec 30 2007, 12:09
Сообщение #5


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(repairDV @ Dec 30 2007, 08:44) *
Похоже, просто придётся пока усложнять саму плату связи, на которой стоит MAX1480. Добавлять таймер, который бы запускался RTS или DTR, и включал и сбрасывал микросхему на передачу. До изучения Windows API пока руки не доходят.

Если я прав насчет 13ноги - (могу посмотреть,если проект остался на службе после праздников),- то ничего добавлять (в смысле таймера) не надо - тикало как часы - PC -ведущее устройство и не менее 12 ведомых. Преобразователь уровня (типа max232) полагаю уже стоит.(таймер штука ненадежная - если ведомое устройство отвечает быстро. Под NT - минимальное время, кажется 10мс).


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
repairDV
сообщение Dec 30 2007, 14:14
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



Цитата(tyro @ Dec 30 2007, 22:09) *
Если я прав насчет 13ноги

13 ногу никак не обойдёшь, она единственная входная. На ней действительно всё отражается, и что входит, и что выходит. Для идентификации, может быть, удобно, но, по-моему, это лишнее. Спасибо, не нужно ничего смотреть. Я уже вроде бы как этот вопрос решил. Дальше будем с приёмной стороной разбираться.

Спасибо за советы.


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 14:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016