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

 
 
 
Reply to this topicStart new topic
> Программирование СОМ порта для работы по RS485, microsoft visual studio C#
smk
сообщение Jun 4 2013, 09:18
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Задача передавать/принимать RS232 из/в RS485. Есть переходник, который по сигналу DTR переключается на прием/передачу. По задумке сначала DTR выставляется в 1 и включает 485 на передачу. Затем производится передача и по завершении DTR ставится в 0 переводя 485 на прием. Суть проблемы в том, что DTR ставится в 0 раньше, чем завершится передача. Как можно сделать так чтобы DTR устанавливался в 0 по завершении передачи? Нужно сразу по завершении принимать ответ... Спасибо.
Код
            serialPort1.Open();
            serialPort1.DtrEnable = true;
            serialPort1.Write(TX_buf, 0, 8);
            serialPort1.DtrEnable = false;
            serialPort1.Close();


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
neiver
сообщение Jun 4 2013, 10:00
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



К сожалению в этом классе нет возможности узнать об окончании передачи. Можно после serialPort1.Write(TX_buf, 0, 8); вставить задержку на какое-то разумное время Thread.Sleep(1). Но это достаточно кривое решение.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 4 2013, 10:11
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



А напрямую с WinAPI обшарпанный не дружит?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
smk
сообщение Jun 4 2013, 10:35
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



А может не морочить себе голову да поставить в переходник MAX13487 ? Пробовал кто на скорости 4800 ?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
neiver
сообщение Jun 4 2013, 13:27
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Цитата(MrYuran @ Jun 4 2013, 14:11) *
А напрямую с WinAPI обшарпанный не дружит?

Дружит. PInvoke называется. Если очень хочестся то можно экспортировать из WinAPI FlushFileBuffers, выдернуть через Reflection из объекта порта хендл и передать в FlushFileBuffers. Это даже будет работать.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2013, 05:20
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(smk @ Jun 4 2013, 14:35) *
А может не морочить себе голову да поставить в переходник MAX13487 ? Пробовал кто на скорости 4800 ?

FTDI имеет встроенную схему коммутации 485. Все равно СОМ-порт сейчас только на раритетах остался. А так к любому компу/ноуту можно будет подключить.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
M_Andrey
сообщение Jun 5 2013, 08:48
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376



Цитата(MrYuran @ Jun 5 2013, 09:20) *
FTDI имеет встроенную схему коммутации 485. Все равно СОМ-порт сейчас только на раритетах остался. А так к любому компу/ноуту можно будет подключить.

Серьезные проекты на ширпотребовских материнках не делают, а в промышленных платах/компах бывает до 6 СОМ-портов и думаю еще долго будут делать. К тому-же FTDI частенько отваливаются, что в принципе недопустимо.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2013, 09:04
Сообщение #8


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(M_Andrey @ Jun 5 2013, 12:48) *
Серьезные проекты на ширпотребовских материнках не делают

В серьезных проектах ставят моху или адвантех и не парятся с дерганием DTR


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
smk
сообщение Jun 5 2013, 12:51
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(MrYuran @ Jun 5 2013, 12:04) *
В серьезных проектах ставят моху или адвантех и не парятся с дерганием DTR

Ну это да. А мах13487 вполне прилично заработала. Проблема решилась. Мне настольным образом потестипровать нужно кое-что по быстрому.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:22
Рейтинг@Mail.ru


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