-
Добрый вечер, тема конечно баян, но все-же попытаю счастье)) В общем мне необходимо наладить общение по СОМ-порту(виртуальному) с самодельным устройством на STM32(на данный момент оно просто отправляет обратно все что пришло), на вашем сайте нашел статью http://www.delphimaster.ru/articles/comport2/ но у меня этот код не хочет работать, вернее отправлять он что-то отправляет(т.к. у меня на устройстве при получении данных мигает светодиод), а вот принимать что-либо отказывается, любой терминалке устройство нормально отвечает, вот лог из Advansed Serial Port Monitor(сначала подключа.сь терминалкой и посылаю 1,10,100, затем тоже самое пытаюсь сделать програмкой)
<20170718213449.336 SYS>
COM открыт
<20170718213449.336 SYS>
Размер вх./исх. очереди 2048/2048
<20170718213449.346 SYS>
Скорость передачи 9600
<20170718213449.346 SYS>
RTS включен
<20170718213449.356 SYS>
DTR включен
<20170718213449.366 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20170718213449.366 SYS>
Служ. символы: Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x11, Xoff=0x13
<20170718213449.366 SYS>
Контроль передачи: ControlHandShake=(DTR_CONTROL), Замена=(TRANSMIT_TOGGLE, RTS_CONTROL), Лимит Xon=0, Лимит Xoff=0
<20170718213449.366 SYS>
Таймауты: ReadInterval=-1, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=100, WriteTotalTimeoutConstant=1000
<20170718213541.876 TX>
<SOH>
<20170718213541.976 RX>
<SOH>
<20170718213545.496 TX>
<LF>
<20170718213545.596 RX>
<LF>
<20170718213550.326 TX>
d
<20170718213550.426 RX>
d
<20170718213600.167 SYS>
DTR выключен
<20170718213600.167 SYS>
RTS выключен
<20170718213600.167 SYS>
Очистка порта: RXABORT, TXABORT
<20170718213600.167 SYS>
Очистка порта: RXCLEAR, TXCLEAR
<20170718213600.177 SYS>
COM закрыт
<20170718213616.107 SYS>
COM открыт
<20170718213616.127 SYS>
Скорость передачи 9600
<20170718213616.127 SYS>
RTS включен
<20170718213616.137 SYS>
DTR включен
<20170718213616.137 SYS>
Биты данных=8, Стоповые биты=1, Четность=None
<20170718213616.137 SYS>
Служ. символы: Eof=0x00, Error=0x00, Break=0x00, Event=0x0D, Xon=0x08, Xoff=0x03
<20170718213616.137 SYS>
Контроль передачи: ControlHandShake=(DTR_CONTROL), Замена=(TRANSMIT_TOGGLE, RTS_CONTROL), Лимит Xon=0, Лимит Xoff=0
<20170718213624.637 TX>
<NUL><NUL><NUL><NUL><NUL>1
<20170718213707.467 SYS>
COM закрыт
-
Видимо придется использовать компоненты
-
Да сейчас почти никто с СОМ портами и не работает, я попытался было тебе ответить, но понял что за 16 лет практически все забыл как их юзать :)
-
> Rouse_ © (19.07.17 22:57) [2] > > Да сейчас почти никто с СОМ портами и не работает
У вас на фирме точно никто не работает. :)
> Andrewtitoff © (19.07.17 14:52) [1] > > Видимо придется использовать компоненты
Видимо придется. Хотя поможет ли? Программисты обычно приводят код и спрашивают что не так. Логи из Advansed Serial Port Monitor приводят пользователи, у которых некая чужая программа не работает так как надо.
-
из проводков земля rx и тх ?
а нафига тогда железный флоуконтрол включен (судя по логу) ?
-
> rrrrr © (20.07.17 12:10) [4] > > из проводков земля rx и тх ? > > а нафига тогда железный флоуконтрол включен (судя по логу) > ?
Проверка "воткнутости" кабеля, например. Обеспечивается перемычкой на разъёме кабеля.
-
> Проверка "воткнутости" кабеля, например.
Причём тут воткнутость? Flowcontrol - от слова control, что переводится как управление.
-
> Pavia © (23.07.17 11:22) [6]
RTFM, тогда может поймёшь при чём тут control ака управление.
-
> Проверка "воткнутости" кабеля, например.
то есть, вероятно, есть ситуация, когда устройство успешно осуществляет связь, а кабель при этом не воткнут...
-
> Kilkennycat © (25.07.17 20:30) [8] > > > > Проверка "воткнутости" кабеля, например. > > то есть, вероятно, есть ситуация, когда устройство успешно > осуществляет связь, а кабель при этом не воткнут...
Блин, Костя ты меня порой убиваешь. Уж тебе-то этого не знать! Есть куча периферийных устройств, которые ничего не знают про Flow Control да и не хотят знать. При чём не про хардверный, ни про софтовый. Конечно это ситуация ненормальная, но ... Как при этом сказать передатчику, когда он может передавать данные, а когда не может?
-
> Как при этом сказать передатчику, когда он может передавать > данные, а когда не может?
А никак вы не скажете не закажете. Вы же сами сказали что FlowControl не заложен.
-
> Как при этом сказать передатчику, когда он может передавать > данные, а когда не может?
и как тут воткнутость-невоткнутость разъема работает?
-
Например некое устройство 1 готово передавать данные другому устройству 2. Тогда устройство 1 сообщает об этом устройству 2 активируя RTS. Если устройство 2 готово принимать данные, то оно активирует в ответ выход CTS. После этого устройство 1 начинает передачу. Если устройство 2 хочет чтобы данные перестали поступать, оно снимает активный уровень с выхода CTS и устройство 1 прекращает передачу. Если же на кабеле перемычка между RTS и CTS тогда передача начинается при подключении кабеля и прекращается при отключении кабеля.
-
> некое устройство 1 готово передавать данные другому устройству > 2 и просто передает.
> Если устройство 2 готово принимать данные
то оно просто принимает
> Если устройство 2 хочет чтобы данные перестали поступать
то оно сообщает об этом первому по своей Тх
> Если же на кабеле перемычка между RTS и CTS тогда передача > начинается при подключении кабеля и прекращается при отключении > кабеля.
Поскольку кабель подключается кем-то, то этот кем-то может и кнопочку нажать. а можно и просто эпизодически посылать пинг.
Тратить порты и провода на допсигналы - дорого.
-
> Тратить порты и провода на допсигналы - дорого. >
Ты видать не понял о чем речь. Дело не в том чтобы как-то начать передачу и как-то прервать. Дело в том чтобы устройство, которое посылает информацию о событиях на дешевый принтер не делало это, если кабель не подключен или отвалился.
-
настолько дешевый, что не дает узнать свое состояние, наличие бумаги и т.д. и всё, что можно узнать, отвалился ли кабель. Да, ради этого стоит пожертвовать пару портов...
-
-
> [13] Kilkennycat © (26.07.17 21:15) > то оно сообщает об этом первому по своей Тх
Это было таки сделано для более низкого уровня. Это сейчас ты с запуздырил пакет и другой пакет в ответ послушал, а раньше байт отправил и ждёшь, пока приёмник с той стороны его обработаёт, причём сам ты тоже тормоз и ответный байт также долго обрабатываешь. НО! Вы оба умеете сообщать о готовности к приёму-передаче с помощью нехитрой аппаратной логической схемы.
-
> Inovet © (27.07.17 05:18) [17]
Я вообще не понимаю о чём Костя говорил? Какие порты и провода?
-
Костя не понял о чём речь. Речь о перемычках. Поты так и так заняты. А проводов меньше. Зато перемычки позволяют показать начальнику, что ты диагностируешь состояние кабеля, хотя на самом деле ты диагностируешь состояние порта. Вот и весь сказ.
А управление потоком так и так есть. Есть стартовые биты, есть временная синхронизация. Есть сторожевой таймер который в случае надобности сбрасывает автомат управления потоком в начальное состояние.
-
> Pavia © (30.07.17 16:30) [19]
Ты всё-таки совсем не в теме. Управление потоком (Flow Control) в теме последовательного порта по спецификации RS-232 это управление передачей (разрешение или запрет) либо Hardware способом (установкой/снятием сигналов в связках RTS-CTS и/или DTR-DSR), либо Software способом (посылкой специальных управляющих байтов Xon/Xoff). А стартовые биты, временная синхронизация и т.п. и т.д. это совсем другое. А сторожевой таймер это вообще из другой оперы. Ни в спецификации RS-232, ни в спецификации COM-порта для компьютера никаких сторожевых таймеров нет.
-
> [18] Германн © (28.07.17 01:44) > Какие порты и провода?
Я думаю, Костя говорил о портах микроконтроллеров. Зачем на микроконтроллере полностью реализовывать спецификацию RS-232 со всеми служебными сигналами и тратить на это порты микроконтроллера и провода в кабеле связи. (?)
-
> Inovet © (31.07.17 01:10) [21] > > > [18] Германн © (28.07.17 01:44) > > Какие порты и провода? > > Я думаю, Костя говорил о портах микроконтроллеров.
Я тоже так думаю. Но rrrrr © задал дурацкий вопрос
> rrrrr © (20.07.17 12:10) [4] > > из проводков земля rx и тх ? > > а нафига тогда железный флоуконтрол включен (судя по логу) > ?
Я ему ответил.
|