FT232

May 03, 2006 Last reply: 19 years ago 912 Replies

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 15 May 2006 08:19:37

+0400:

DT> Hello Dmitry.

DT> Sun May 14 2006 12:13, Dmitry Orlov wrote to me:

DO>> А с UART вообще-то можно было и не заморачиваться, для VDM DO>> винда стандартный 16550 виртуализирует не плохо.

DT> Hо только COM1 и COM2, да и не очень хорошо, на самом деле,

Сейчас прямо проверил USB3COM (PL2302), COM4, досовский терминал, WinXP - работает.

DT> виртуализует. Были какие-то проблемы, не помню уж, какие. А

Я только такие, что "закрыть" порт в досовской программе нельзя, пока ее вместе с ее VDM не закроешь, он занят.

DT> через VDM получается очень экономично. :)

Наверняка это лучше (хотя конечно еще лучше все под win32 переписать), но это ж не самое тривиальное знание... Я когда свое похожее делал нашел весьма скудную информацию о том как это делать. Кстати, а посмотреть на твое решение можно?

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Alexandr Torres on Tue, 16 May 2006 08:41:44

+0000 (UTC):

MB>>>> таковым. Сyнyл дискетy, потом воткнyл зyбастый

PG>>> Вот где ошибка: ^^^^^^^^^^^^^^^, а не следовало. :)

AT>> Очень даже следовало, и не только для ребенка - блютус просто AT>> незаменимая вещь для hands-free, чтобы шнурки не путались.

ON> Для мультимедийных игрушек на диване, может, и "незаменимая". ON> Для серьезных же целей wireless управления- наплевать и ON> забыть. Да и жрет немерянно.

Жрет оно как раз мерянно, но не для industrial применений безусловно.

dima

formatting link

ðÒÉ×ÅÔ Dmitry!

DO>> á Ó UART ×ÏÏÂÝÅ-ÔÏ ÍÏÖÎÏ ÂÙÌÏ É ÎÅ ÚÁÍÏÒÁÞÉ×ÁÔØÓÑ, ÄÌÑ VDM ×ÉÎÄÁ DO>> ÓÔÁÎÄÁÒÔÎÙÊ 16550 ×ÉÒÔÕÁÌÉÚÉÒÕÅÔ ÎÅ ÐÌÏÈÏ.

èÕÖÅ ÞÅÍ ÈÏÔÅÌÏÓØ ÂÙ. åÓÔØ äïó-ÐÒÏÇÒÁÍÍÁ, ËÏÔÏÒÁÑ ÐÅÒÅÄÁÅÔ ÐÁËÅÔ ÄÁÎÎÙÈ É ÖÄÅÔ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ ÐÒÉÅÍÁ. åÓÌÉ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ ÎÅÔ, ÐÏ×ÔÏÒÑÅÔ ÐÅÒÅÄÁÞÕ. ÷ ÎÁÓÔÏÑÝÉÈ äïó ×ÓÅ ÒÁÂÏÔÁÅÔ ÎÏÒÍÁÌØÎÏ, × ÂÏÌØÛÉÎÓÔ×Å ÜÍÕÌÑÔÏÒÏ× ÔÏÖÅ. á ×ÏÔ × ×ÉÎÄÏ×ÏÍ ÜÍÕÌÑÔÏÒÅ ÏÎÁ ÒÁÂÏÔÁÔØ ÏÔËÁÚÁÌÁÓØ. åÓÌÉ Ñ ÐÒÁ×ÉÌØÎÏ ÐÏÍÎÀ, ÔÁÍ ÐÒÏÂÌÅÍÁ ÂÙÌÁ × ÔÏÍ, ÞÔÏ ÜÍÕÌÑÔÏÒ ÎÅ ÏÔÒÁÂÁÔÙ×ÁÅÔ ×ÒÅÍÅÎÎÙÅ ÚÁÄÅÒÖËÉ ÐÅÒÅÄÁÞÉ: ÐÒÉ ÐÅÒÅÄÁÞÅ ÄÌÉÎÎÏÇÏ ÐÁËÅÔÁ ÏÎ ÚÁÐÉÓÙ×ÁÌÓÑ × ÐÏÒÔ ÍÇÎÏ×ÅÎÎÏ, É ÐÒÏÇÒÁÍÍÁ ÎÁÞÉÎÁÌÁ ÏÔÓÞÅÔ ÔÁÊÍÁÕÔÁ, ËÏÔÏÒÙÊ ÕÓÐÅ×ÁÌ ÉÓÔÅÞ ÄÏ ÔÏÇÏ, ËÁË ÐÁËÅÔ ÒÅÁÌØÎÏ ÐÅÒÅÄÁ×ÁÌÓÑ. ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... åÓÌÉ ÔÙ ËÏÐ, ÐÏÞÅÍÕ Ñ ×ÅÓØ ×ÚÍÏË?

Hello, Olga! You wrote to Alexandr Torres on Tue, 16 May 2006 08:41:44 +0000 (UTC):

ON> úÄÒÁ×ÓÔ×ÕÊÔÅ, õ×ÁÖÁÅÍÙÊ Alexandr!

ON> Tue May 16 2006 06:05, Alexandr Torres wrote to Pavel Grishin:

MB>>>> ÔÁËÏ×ÙÍ. óyÎyÌ ÄÉÓËÅÔy, ÐÏÔÏÍ ×ÏÔËÎyÌ ÚyÂÁÓÔÙÊ

PG>>> ÷ÏÔ ÇÄÅ ÏÛÉÂËÁ: ^^^^^^^^^^^^^^^, Á ÎÅ ÓÌÅÄÏ×ÁÌÏ. :)

AT>> ïÞÅÎØ ÄÁÖÅ ÓÌÅÄÏ×ÁÌÏ, É ÎÅ ÔÏÌØËÏ ÄÌÑ ÒÅÂÅÎËÁ - ÂÌÀÔÕÓ ÐÒÏÓÔÏ AT>> ÎÅÚÁÍÅÎÉÍÁÑ ×ÅÝØ ÄÌÑ hands-free, ÞÔÏÂÙ ÛÎÕÒËÉ ÎÅ ÐÕÔÁÌÉÓØ.

ON> äÌÑ ÍÕÌØÔÉÍÅÄÉÊÎÙÈ ÉÇÒÕÛÅË ÎÁ ÄÉ×ÁÎÅ, ÍÏÖÅÔ, É "ÎÅÚÁÍÅÎÉÍÁÑ". äÌÑ ON> ÓÅÒØÅÚÎÙÈ ÖÅ ÃÅÌÅÊ wireless ÕÐÒÁ×ÌÅÎÉÑ- ÎÁÐÌÅ×ÁÔØ É ÚÁÂÙÔØ. äÁ É ON> ÖÒÅÔ ÎÅÍÅÒÑÎÎÏ.

"ëÏÌÌÅËÔÉ×", ×Ù ËÁË ×ÓÅÇÄÁ "ÎÅ×ÐÏÐÁÄ". òÅÞØ ÛÌÁ ÎÅ Ï "ÉÇÒÕÛËÁÈ ÎÁ ÄÉ×ÁÎÅ" (ÎÅ ÚÎÁÀ ÔÁËÉÈ, ÎÅ ×ÓÔÒÅÞÁÌÓÑ), É ÎÅ ÐÒÏ "ÕÐÒÁ×ÌÅÎÉÅ ÓÅÒØÅÚÎÙÍÉ ÃÅÌÑÍÉ", Á ÐÒÏ ÓÏÔÏ×ÙÊ ÔÅÌÅÆÏÎ. äÌÑ ÎÅÇÏ - ÈÅÎÄÓ-ÆÒÉ ÎÁ ÂÌÀÔÕÓÅ ÇÏÒÁÚÄÏ ÕÄÏÂÎÅÅÅ ÈÅÄÓ-ÆÒÉ ÎÁ ÛÎÕÒËÅ (ÇÁÒÎÉÔÕÒÙ).

îÕ É (ÈÏÔÑ ÌÉÞÎÏ ÍÎÅ ÜÔÏ ÎÅ ÎÁÄÏ) ÍÎÏÇÉÅ ÉÓÐÏÌØÚÕÀÔ ÓÉÎÈÒÎÉÚÁÃÉÀ ÐÏ ÂÌÀÔÕÓÕ ÔÅÌÅÆÏÎÁ Ó ËÏÍÐØÀÔÅÒÏÍ (Ó ïÕÔÌÕËÏÍ). ON> ÷ÓÅÇÏ ÷ÁÍ èÏÒÏÛÅÇÏ ON> ïÌØÇÁ

With best regards, Alexandr Torres.

[ âÏÍÖÅÊ ÌÀÂÉÔØ - ÎÅ ÜÈÉ ÍÏÄÅÒÉÔØ! ]

2:461/28, E-mail: snipped-for-privacy@yahoo.com

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Tue, 16 May 2006 15:12:51

+0400:

DO>>> А с UART вообще-то можно было и не заморачиваться, для VDM DO>>> винда стандартный 16550 виртуализирует не плохо.

AM> Хуже чем хотелось бы. Есть ДОС-программа, которая передает AM> пакет данных и ждет подтверждение приема. Если подтверждения AM> нет, повторяет передачу. В настоящих ДОС все работает AM> нормально, в большинстве эмуляторов тоже. А вот в виндовом AM> эмуляторе она работать отказалась. Если я правильно помню, там AM> проблема была в том, что эмулятор не отрабатывает временные AM> задержки передачи: AM> при передаче длинного пакета он записывался в порт мгновенно, AM> и программа начинала отсчет таймаута, который успевал истеч до AM> того, как пакет реально передавался.

Вообще, подобные проблемы я встречал и в нативной win32 программе, начиная с ее родного гипертерминала. Выставляешь 1мс задержку между байтами, делаешь paste в него, смотришь скопом на Tx и видишь, что байты идут с плавающей задержкой в районе

10мс. Ставишь эту задержку в 0 - идут сплошняком. Чтобы в своей программе это сделать, да еще и так, чтобы это не ставило колом все остальное, приходится довольно нетривиальные вещи делать, пользоваться multimedia taimer'ом и все равно не без проблем. Что с одной стороны понятно - это ведь многозадачная и не реалтаймовая система, а с другой стороны не очень, ведь та же мультимедиа вполне себе успевает в реальном времени делать в сотни тысяч, если не в миллионы раз более ресурсоемкие вещи, и еще и время остается.

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Aleksandr Konosevich! You wrote in conference fido7.ru.embedded to Michael Belousoff on Tue, 16 May 2006 17:03:52

+0400:

AK>>> Мне пpосто любопытно было бы поглядеть на моpдочкy г-на AK>>> фельдфебеля в тот самый момент, когда с гейта в эхy пойдyт AK>>> письма "якобы от стаpых подписчиков", *но* с тем же magic AK>>> number & e-mail ... ЖB}}}

MB>> Следyет ли это pасценивать ка пpямyю yгpозy?

AK> Hапомню, что началось всё с того, что Василевский обхаял AK> Плотояда ;-)

AK> PS Ежели Плотояд *решит* *действовать* - ни ты, ни я его не AK> остановим, можешь не сомневаться !

Классический случай неуловимого Джо, этот твой виртуальный плотояд, он же киллер задрипанный.

dima

formatting link

Hello Michael Belousoff!

AK>> íÎÅ ÐpÏÓÔÏ ÌÀÂÏÐÙÔÎÏ ÂÙÌÏ ÂÙ ÐÏÇÌÑÄÅÔØ ÎÁ ÍÏpÄÏÞËy Ç-ÎÁ AK>> ÆÅÌØÄÆÅÂÅÌÑ × ÔÏÔ ÓÁÍÙÊ ÍÏÍÅÎÔ, ËÏÇÄÁ Ó ÇÅÊÔÁ × ÜÈy ÐÏÊÄyÔ ÐÉÓØÍÁ AK>> "ÑËÏÂÙ ÏÔ ÓÔÁpÙÈ ÐÏÄÐÉÓÞÉËÏ×", *ÎÏ* Ó ÔÅÍ ÖÅ magic number & e-mail AK>> ... öB}}}

MB> óÌÅÄyÅÔ ÌÉ ÜÔÏ pÁÓÃÅÎÉ×ÁÔØ ËÁ ÐpÑÍyÀ yÇpÏÚy?

HÁÐÏÍÎÀ, ÞÔÏ ÎÁÞÁÌÏÓØ ×ӣ Ó ÔÏÇÏ, ÞÔÏ ÷ÁÓÉÌÅ×ÓËÉÊ ÏÂÈÁÑÌ ðÌÏÔÏÑÄÁ ;-)

PS åÖÅÌÉ ðÌÏÔÏÑÄ *ÒÅÛÉÔ* *ÄÅÊÓÔ×Ï×ÁÔØ* - ÎÉ ÔÙ, ÎÉ Ñ ÅÇÏ ÎÅ ÏÓÔÁÎÏ×ÉÍ, ÍÏÖÅÛØ ÎÅ ÓÏÍÎÅ×ÁÔØÓÑ !

Hello Andrey Khristov!

AK>> þÉÓÔÏ Ô×ÏÒÞÅÓËÉ : × BIOS ÓÅÊÞÁÓ ÅÓÔØ ÐÕÎËÔÙ ÐÏ ÐÏÄÄÅÒÖËÅ USB AK>> mouse/kbd - ÚÎÁÞÉÔ, ÎÁÐÉÓÁÔØ ÞÔÏ-ÔÏ ÔÉÐÁ "DOS USB driver" ÎÅ ÔÁË AK>> ÕÖ É ÓÌÏÖÎÏ ... ;-)

AK> ÎÏ ÜÔÏ ÂÕÄÅÔ ÔÏÌØËÏ HID

äÁ ÐÏÆÉÇ, ÌÉÛØ ÂÙ ÒÁÂÏÔÁÌÏ ... ;-)

AK> ÅÝÅ ÍÏÇÕ ÚÁÍÅÔÉÔØ, ÞÔÏ ÓÏ×ÒÅÍÅÎÎÙÊ ÂÉÏÓ ÕÍÅÅÔ ÐÒÉ ÚÁÇÒÕÚËÅ ËÏÍÐÁ AK> ÍÏÎÔÉÒÏ×ÁÔØ MSD, ËÁË ÌÏÇÉÞÅÓËÉÅ ÄÒÁÊ×Ù DOS. Á ×ÏÔ AK> Ó ÜÍÕÌÑÔÏÒÁÍÉ ÐÏÒÔÏ× ÐÏ USB ÔÕÔ ÉÍÅÅÔÓÑ ÆÉÇ×ÁÍ. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ðÒÏÓÔÏ ÄÌÑ BIOS *ÜÔÏ* Háæéç Hå Háäï ... 8-)

Hi, Dimmy!

15 May 06, Dimmy Timchenko writes to Aleksandr Konosevich:

AK>> þÉÓÔÏ Ô×ÏÒÞÅÓËÉ : × BIOS ÓÅÊÞÁÓ ÅÓÔØ ÐÕÎËÔÙ ÐÏ ÐÏÄÄÅÒÖËÅ USB AK>> mouse/kbd - ÚÎÁÞÉÔ, ÎÁÐÉÓÁÔØ ÞÔÏ-ÔÏ ÔÉÐÁ "DOS USB driver" ÎÅ ÔÁË AK>> ÕÖ É ÓÌÏÖÎÏ ... ;-)

DT> HÅ ÚÎÁÀ, ÎÅ ÚÎÁÀ. ðÙÔÁÌÓÑ ÞÉÔÁÔØ 900-ÓÔÒÁÎÉÞÎÙÊ ÄÁÔÁÛÉÔ - "ÎÉÁÓÉÌÉÌ". DT> ;) á ÜÔÏ Åݣ ÂÅÚ ÏÐÉÓÁÎÉÑ ÈÁÂÏ×, ËÏÔÏÒÙÈ ÓÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ DT> ÓÔÁÎÄÁÒÔÏ×... þÔÏ-ÔÏ ÎÁÒÏÄ ÐÉÛÅÔ, ÎÏ ÔÏÌØËÏ ÄÌÑ ËÏÎËÒÅÔÎÙÈ ÕÓÔÒÏÊÓÔ×, DT> ÔÉÐÁ mass storage. õÎÉ×ÅÒÓÁÌØÎÙÈ ÄÒÁÊ×ÅÒÏ×/ÂÉÂÌÉÏÔÅË, ÎÁ ÂÁÚÅ ËÏÔÏÒÙÈ DT> ÍÏÖÎÏ ÂÙÌÏ ÂÙ ÒÅÁÌÉÚÏ×ÁÔØ UART-like ÄÏÓÔÕÐ, Ñ ÎÅ ÎÁۣÌ.

ÏÄÉÎ ÄÅÑÔÅÌØ ÎÁÐÉÓÁÌ ÒÕËÁÍÉ ×ÅÓØ USB Stack ÎÁ ÓÌÅÇËÁ ÒÁÚÏÇÎÁÎÙÊ AVR ÎÁ PIC ÏÎ ÔÏÖÅ ÐÒÏÂÏ×ÁÌ, ÎÏ ÐÏ ÓËÏÒÏÓÔÉ ÎÅ ÐÏËÁÔÉÌÏ. ÒÅÚÕÌØÔÁÔ ÅÇÏ ÄÅÊÓÔ×ÉÊ ÉÍÅÎÕÅÔÓÑ IgorPlug, ÓÏÒÓÙ ÄÏÓÔÕÐÎÙ. ÇÒÏÚÉÔÓÑ ÚÁÓÌÁÔØ ÜÔÏ ÄÅÌÏ Atmel'Õ × ÁÐÐÎÏÔÙ.

With best wishes - Andrey Khristov

Hi, Aleksandr!

16 May 06, Aleksandr Konosevich writes to Andrey Khristov:

AK>> ÎÏ ÜÔÏ ÂÕÄÅÔ ÔÏÌØËÏ HID AK> äÁ ÐÏÆÉÇ, ÌÉÛØ ÂÙ ÒÁÂÏÔÁÌÏ ... ;-)

ËÁË HID - ÄÁ, ÒÁÂÏÔÁÔØ ÂÕÄÅÔ.

AK>> ÅÝÅ ÍÏÇÕ ÚÁÍÅÔÉÔØ, ÞÔÏ ÓÏ×ÒÅÍÅÎÎÙÊ ÂÉÏÓ ÕÍÅÅÔ ÐÒÉ ÚÁÇÒÕÚËÅ ËÏÍÐÁ AK>> ÍÏÎÔÉÒÏ×ÁÔØ MSD, ËÁË ÌÏÇÉÞÅÓËÉÅ ÄÒÁÊ×Ù DOS. Á ×ÏÔ AK>> Ó ÜÍÕÌÑÔÏÒÁÍÉ ÐÏÒÔÏ× ÐÏ USB ÔÕÔ ÉÍÅÅÔÓÑ ÆÉÇ×ÁÍ.

AK> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AK> ðÒÏÓÔÏ ÄÌÑ BIOS *ÜÔÏ* Háæéç Hå Háäï ... 8-)

ÎÕ ÔÒÅÐ-ÔÏ ËÁÖÅÔÓÑ ÚÁ DOS ÛÅÌ, Á ÏÎÏ ÂÅÚ ÂÉÏÓÁ, ËÁË ÂÅÚ ÒÕË, ÎÏÇ É ÐÅÒÃÁ :)))

With best wishes - Andrey Khristov

Здравствуйте, Уважаемый All!

Tue May 16 2006 15:50, Dmitry Orlov wrote to Alex Mogilnikov:

DO>>>> А с UART вообще-то можно было и не заморачиваться, для VDM DO>>>> винда стандартный 16550 виртуализирует не плохо.

AM>> Хуже чем хотелось бы. Есть ДОС-программа, которая передает AM>> пакет данных и ждет подтверждение приема. Если подтверждения AM>> нет, повторяет передачу. В настоящих ДОС все работает AM>> нормально, в большинстве эмуляторов тоже. А вот в виндовом AM>> эмуляторе она работать отказалась. Если я правильно помню, там AM>> проблема была в том, что эмулятор не отрабатывает временные AM>> задержки передачи: AM>> при передаче длинного пакета он записывался в порт мгновенно, AM>> и программа начинала отсчет таймаута, который успевал истеч до AM>> того, как пакет реально передавался.

DO> Вообще, подобные проблемы я встречал и в нативной win32 программе, DO> начиная с ее родного гипертерминала...

Решение проблемы виндовского COM-порта такое. Отказаться навсегда от таймаута в качестве признака окончания пакета. Системы типа MODBUS в виндах работают непредсказуемо. Взамен, в состав пакета, где-нибудь в заголовке, вставляется поле- длина блока данных. Затем, на примемной стороне просто ждут, когда будет принято число байт, указанное в заголовке. Таймаут использовать только в качестве аварийного выхода. Проверено. Винды с нерегулярными посылками по СОМ порту- отдыхают.

Всего Всем Хорошего Ольга

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to All on Tue, 16 May 2006 14:42:09 +0000 (UTC):

DO>> Вообще, подобные проблемы я встречал и в нативной win32 DO>> программе, начиная с ее родного гипертерминала...

ON> Решение проблемы виндовского COM-порта такое. Отказаться ON> навсегда от таймаута в качестве признака окончания пакета.

На самом деле, нужно просто уметь их готовить. Другое дело, что это не так просто, как хотелось бы.

dima

formatting link

Hallo Dmitry!

DO>>> á Ó UART ×ÏÏÂÝÅ-ÔÏ ÍÏÖÎÏ ÂÙÌÏ É ÎÅ ÚÁÍÏÒÁÞÉ×ÁÔØÓÑ, ÄÌÑ VDM DO>>> ×ÉÎÄÁ ÓÔÁÎÄÁÒÔÎÙÊ 16550 ×ÉÒÔÕÁÌÉÚÉÒÕÅÔ ÎÅ ÐÌÏÈÏ. DT>> HÏ ÔÏÌØËÏ COM1 É COM2, ÄÁ É ÎÅ ÏÞÅÎØ ÈÏÒÏÛÏ, ÎÁ ÓÁÍÏÍ ÄÅÌÅ, DO> óÅÊÞÁÓ ÐÒÑÍÏ ÐÒÏ×ÅÒÉÌ USB3COM (PL2302), COM4, ÄÏÓÏ×ÓËÉÊ ÔÅÒÍÉÎÁÌ, DO> WinXP - ÒÁÂÏÔÁÅÔ. äÁ ËÏÎËÒÅÔÎÙÊ ÐÒÉÍÅÒ: ÆÉÔÏÎÏ×ÓËÉÊ ×ÎÕÔÒÉÓÈÅÍÎÙÊ ÜÍÕÌÑÔÏÒ MCS51 (ACE-52C). óÏÆÔÉÎÁ Ë ÎÅÍÕ äïóÏ×ÁÑ. ðÏÄ äïóÏÍ, Win9x É OS/2 (ÞÔÏ ÈÁÒÁËÔÅÒÎÏ, ÔÁÍ COMÙ ÄÌÑ äïóÏ×ÙÈ ÐÒÉÌÏÖÅÎÉÊ ÔÏÖÅ ×ÉÒÔÕÁÌÉÚÕÀÔÓÑ) ÒÁÂÏÔÁÅÔ ÎÁ 57600. ðÏÄ NT4 - Ó ÂÕÂÎÏÍ ÚÁÐÕÓËÁÅÔÓÑ ÎÁ 9600. ðÏÄ 2K/XP - ÎÅ ÒÁÂÏÔÁÅÔ ×ÏÏÂÝÅ.

WBR Yaroslav A. Komarov

Hi Olga !

óÏ×ÓÅÍ ÎÅÄÁ×ÎÏ 16 May 06 18:42, Olga Nonova ÐÉÓÁÌ Ë All:

ON> òÅÛÅÎÉÅ ÐÒÏÂÌÅÍÙ ×ÉÎÄÏ×ÓËÏÇÏ COM-ÐÏÒÔÁ ÔÁËÏÅ. ïÔËÁÚÁÔØÓÑ ÎÁ×ÓÅÇÄÁ ÏÔ ON> ÔÁÊÍÁÕÔÁ × ËÁÞÅÓÔ×Å ÐÒÉÚÎÁËÁ ÏËÏÎÞÁÎÉÑ ÐÁËÅÔÁ. óÉÓÔÅÍÙ ÔÉÐÁ MODBUS × ON> ×ÉÎÄÁÈ ÒÁÂÏÔÁÀÔ ÎÅÐÒÅÄÓËÁÚÕÅÍÏ. ÷Ï-ÐÅÒ×ÙÈ, ÅÓÔØ ÅÝÅ MODBUS-ASCII. ÷Ï-×ÔÏÒÙÈ, É MODBUS-RTU ÔÏÖÅ ÒÁÂÏÔÁÅÔ ÎÏÒÍÁÌØÎÏ.

WBRgrds Ruslan

Здравствуйте, Уважаемый Ruslan!

Tue May 16 2006 22:06, Ruslan Mohniuc wrote to Olga Nonova:

ON>> Решение проблемы виндовского COM-порта такое. Отказаться навсегда от ON>> таймаута в качестве признака окончания пакета. Системы типа MODBUS в ON>> виндах работают непредсказуемо.

RM> Во-первых, есть еще MODBUS-ASCII. Во-вторых, и MODBUS-RTU тоже работает RM> нормально.

У меня печальный опыт использования таймаута в качестве сигнала о завершении пакета. Винды отучили надеятся на воспроизводимость и регулярность посылок по COM-порту. Поэтому я перешла на пакеты типа IP-пакетов, только значительно проще и экономнее.

Всего Вам Хорошего Ольга

Hello Alexander.

Tue May 16 2006 08:15, Alexander Zabairatsky wrote to me:

DT>> ËÏÔÏÒÙÊ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ Ó 4-8 ÐÅÒÉÆÅÒÉÊÎÙÍÉ ÕÓÔÒÏÊÓÔ×ÁÍÉ ÌÉÂÏ ÞÅÒÅÚ DT>> ÏÄÉÎ COM (ÔÏÇÄÁ ÜÔÏ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ×ÅÚÄÅ, ÇÄÅ ÅÓÔØ COM), ÌÉÂÏ ÞÅÒÅÚ DT>> USB+FT232R (ÔÏÇÄÁ ÐÒÉģÔÓÑ ÓÔÁ×ÉÔØ ×ÉÎÄÕ).

AZ> ÷ÏÔ-×ÏÔ. âÅÒÅÛØ ËÏÎÔÒÏÌÌÅÒ, 4800 ÜÔÏ ÓÏ×ÓÅÍ ÎÅÍÎÏÇÏ, ÄÅÌÁÅÛØ 4-8 AZ> ÓÏÆÔÏ×ÙÈ ÐÏÒÔÏ×, ÜÔÏ ÐÏÔÑÎÅÔ ÐÏÞÔÉ ÌÀÂÏÊ ËÏÎÔÒÏÌÌÅÒ, ÌÉÛØ ÂÙ ÎÏÇ AZ> È×ÁÔÉÌÏ, Á ÉÍÅÀÝÉÊÓÑ ÁÐÐÁÒÁÔÎÙÊ ÐÏÒÔ ËÏÎÔÒÏÌÌÅÒÁ ÎÁ ×ÙÓÏËÏÊ ÓËÏÒÏÓÔÉ AZ> ÃÅÐÌÑÅÛØ ÌÉÂÏ Ë ËÏÍÐÏÒÔÕ, ÌÉÂÏ Ë ÔÏÍÕ ÖÅ FT232R.

éÍÅÎÎÏ ÜÔÏ Ñ É ÓÏÂÉÒÁÀÓØ ÓÄÅÌÁÔØ! :) ðÒÉޣÍ íë ÄÁÖÅ ÍÏÖÅÔ ÎÅ ÚÎÁÔØ, Ë ÞÅÍÕ ÏÎ ÐÏÄËÌÀޣÎ: Ë MAX232/ADM202 ÉÌÉ Ë FT323R.

Dimmy.

Hello Dmitry.

Tue May 16 2006 12:51, Dmitry Orlov wrote to me:

DT>> HÏ ÔÏÌØËÏ COM1 É COM2, ÄÁ É ÎÅ ÏÞÅÎØ ÈÏÒÏÛÏ, ÎÁ ÓÁÍÏÍ ÄÅÌÅ,

DO> óÅÊÞÁÓ ÐÒÑÍÏ ÐÒÏ×ÅÒÉÌ USB3COM (PL2302), COM4, ÄÏÓÏ×ÓËÉÊ ÔÅÒÍÉÎÁÌ, WinXP - DO> ÒÁÂÏÔÁÅÔ.

ðÏÍÎÀ, ÞÔÏ ÞÔÏ-ÔÏ ÍÅÎÑ ÓÉÌØÎÏ ÎÅ ÕÓÔÒÏÉÌÏ, É ÐÒÉÛÌÏÓØ ÐÏÒÔÉÒÏ×ÁÔØ ÓÏÂÓÔ×ÅÎÎÕÀ ÏÔÌÁÄÏÞÎÕÀ ÔÅÒÍÉÎÁÌËÕ ÐÏÄ Win32 - ÂÌÁÇÏ VirtualPascal ÈÏÒÏÛÏ ÓÏ×ÍÅÓÔÉÍ Ó BP É ÍÅÎÑÔØ ÐÒÉÛÌÏÓØ ÎÅÍÎÏÇÏ.

DT>> ÞÅÒÅÚ VDM ÐÏÌÕÞÁÅÔÓÑ ÏÞÅÎØ ÜËÏÎÏÍÉÞÎÏ. :)

DO> HÁ×ÅÒÎÑËÁ ÜÔÏ ÌÕÞÛÅ (ÈÏÔÑ ËÏÎÅÞÎÏ ÅÝÅ ÌÕÞÛÅ ×ÓÅ ÐÏÄ win32 ÐÅÒÅÐÉÓÁÔØ),

HÅ ÈÏÞÅÔÓÑ, ÐÏÔÏÍÕ ÞÔÏ ÏÓÎÏ×ÎÁÑ ÓÒÅÄÁ ÄÌÑ ÜÔÏÊ ÓÏÆÔÉÎÙ ÐÏËÁ ÞÔÏ - ÄÏÓ.

DO> ÎÏ ÜÔÏ Ö ÎÅ ÓÁÍÏÅ ÔÒÉ×ÉÁÌØÎÏÅ ÚÎÁÎÉÅ... ñ ËÏÇÄÁ Ó×ÏÅ ÐÏÈÏÖÅÅ ÄÅÌÁÌ DO> ÎÁÛÅÌ ×ÅÓØÍÁ ÓËÕÄÎÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÔÏÍ ËÁË ÜÔÏ ÄÅÌÁÔØ.

÷ ÐÒÉÎÃÉÐÅ, × MSDN ÏÎÏ ÅÓÔØ, ÐÌÀÓ DDK. HÏ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÅÓÔØ ÎÅ ×ӣ: ÓÄÅÌÁÔØ ÜÔÏ ÎÁ ÔÏÍ ÖÅ VP ÎÅ ×ÙÛÌÏ, ÐÒÉÛÌÏÓØ ÔÁËÉ ÓÔÁ×ÉÔØ ÜÔÏÔ DDK É ÐÉÓÁÔØ ÎÁ C.

DO> ëÓÔÁÔÉ, Á ÐÏÓÍÏÔÒÅÔØ ÎÁ Ô×ÏÅ ÒÅÛÅÎÉÅ ÍÏÖÎÏ?

äÁ ÐÏÖÁÌÕÊÓÔÁ:

/* Com_VDD.c - Windows NT serial port Virtual Device Driver based on code by: 24-Dec-1992 John Morgan

*/

#define WIN #define FLAT_32 #define TRUE_IF_WIN32 1 #define _WINDOWS

#include <windows.h>

#include <stdlib.h>

#include <vddsvc.h>

BOOL VDDInitialize( PVOID, ULONG, PCONTEXT ); VOID VDDTerminateVDM( VOID ); VOID VDDInit( VOID ); VOID VDDDispatch( VOID );

#define MAX_LINES 8 // Maximum number of COM lines

typedef unsigned char byte;

static HANDLE hCom [MAX_LINES]; static VDM_MODE VDMProtected = VDM_V86;

// forward declarations

static void ResetAllHandles (void); static void CloseOneHandle (int i); static void CloseAllHandles (void); static int OpenPort (byte base, byte chan, byte opt, USHORT baud); static void ClosePort (byte chan); static BOOL PortNotOpen (byte chan); static BOOL PortIsOpen (byte chan); static DWORD MinD (DWORD d1, DWORD d2);

// ---------------------

/*

*
  • VDDInitialize
*
  • Arguments:
  • DllHandle - Identifies this VDD
  • Reason - Attach or Detach
  • Context - Not Used
*
  • Return Value:
  • TRUE: SUCCESS
  • FALSE: FAILURE
* */

BOOL VDDInitialize( IN PVOID DllHandle, IN ULONG Reason, IN PCONTEXT Context OPTIONAL ) {

switch ( Reason ) {

case DLL_PROCESS_ATTACH:

ResetAllHandles(); break;

case DLL_PROCESS_DETACH:

CloseAllHandles(); break;

default: break; }

return TRUE; }

/*

*
  • VDDTerminateVDM
* */

VOID VDDTerminateVDM( VOID ) { return; }

/*

*
  • VDDInit
* */ VOID VDDInit( VOID ) {

// Called from the BOP manager. If VDDInitialize has done all the // checking and resources alloaction, just return success.

setCF( 0 );

return; }

/*

*
  • VDDDispatch
*
  • Arguments:
  • Client (DX) = Address / command code

0xBBCL

high byte : "BB" : NT port base (8 for COM8 etc) (used in OPEN only) nibble 1 : "C" : Command nibble 0 : "L" : LINE (channel 0..7) e.g. 0 -> COM8, 1 -> COM9 etc

Commands:

0 : INIT CX = baud rate BL = line options (bits, stops, parity) BH = 0 (REAL MODE) or 1 (PROTECTED MODE)

1 : READ CX = number of chars to read ES:SI = buffer return : CX = actual read

2 : WRITE CX = number of chars to write ES:DI = buffer return : CX = actual written

3 : CLOSE

4 : MDM_CTL CX= EscapeCommFunction signal code

  • Return Value:

  • Client Carry Clear: SUCCESS AX = 0
  • Client Carry Set: FAILURE, AX = reason
* */

VOID VDDDispatch( VOID ) { PCHAR Buffer; DWORD lpErr; COMSTAT lpStat; USHORT UserCX, UserDX, IO_Result; BYTE temp, PortOpt, PortCommand, PortChan, PortBase; DWORD Actual,toGet; BOOL Success; int result;

UserDX = getDX();

PortCommand = (UserDX >> 4) & 0x0F; PortChan = UserDX & 0x07; PortBase = (UserDX >> 8) & 0x1F;

UserCX = getCX(); // all commands use CX

switch (PortCommand ) {

case 0: // Initialize

if (PortIsOpen (PortChan)) { setAX(1); setCF(1); return; }

PortOpt = getBL(); VDMProtected = (getBH() == 0) ? VDM_V86 : VDM_PM;

result = OpenPort (PortBase, PortChan, PortOpt, UserCX); setCF((result==0)? 0 : 1 ); setAX((USHORT)result ); break;

case 1: // Read buffer

if (PortNotOpen (PortChan)) { setCX(0); setAX(1); setCF(1); return; }

Buffer = VdmMapFlat (getES(), getSI(), VDMProtected);

Success = ClearCommError(hCom[PortChan], &lpErr, &lpStat); toGet = MinD(UserCX, lpStat.cbInQue);

if (toGet > 0) { Success = ReadFile ( hCom[PortChan], Buffer, toGet, &Actual, NULL); } setCX((USHORT) toGet); setAX(0); setCF(0); break;

case 2: // Write buffer

if (PortNotOpen (PortChan)) { setCX(0); setAX(1); setCF(1); return; }

Buffer = VdmMapFlat (getES(), getDI(), VDMProtected); Success = WriteFile ( hCom[PortChan], Buffer, UserCX, &Actual, NULL);

setAX(0); setCX((USHORT) Actual); setCF(0); break;

case 3: // CLOSE

if (PortIsOpen (PortChan)) { CloseOneHandle(PortChan); setAX(0); setCF(0); } else { setAX(1); setCF(1); }

break; case 4: // MDM_CTL

if (PortNotOpen (PortChan)) { setCX(0); setAX(1); setCF(1); return; }

Success = EscapeCommFunction ( hCom[PortChan], UserCX); setAX(0); setCF(0); break;

default: // unknown command break;

}

return; }

// service procedures

static void ResetAllHandles (void) // invalidate all handles on entry { int i;

for (i = 0; i < MAX_LINES; i++ ) hCom[i] = INVALID_HANDLE_VALUE; }

static void CloseOneHandle (int i) { if (hCom[i] != INVALID_HANDLE_VALUE) { CloseHandle (hCom[i]); hCom[i] = INVALID_HANDLE_VALUE; }

}

static void CloseAllHandles (void) // close all open handles { int i;

for (i = 0; i < MAX_LINES; i++) CloseOneHandle(i);

}

static int OpenPort (byte base, byte chan, byte opt, USHORT baud) {

DCB dcb; HANDLE hLoc; BOOL fSuccess; //0 1 23 456 7 8 9 char pName [] = "\\\\.\\COM\0\0\0"; byte nCom, n;

nCom = base + chan;

if ( nCom < 10 ) { pName[7] = '0' + nCom;

} else {

pName[7] = '0' + nCom / 10; pName[8] = '0' + nCom % 10; }

hLoc = CreateFile ( pName, GENERIC_READ | GENERIC_WRITE,

0, // comm devices must be opened w/exclusive-access NULL, // no security attributes OPEN_EXISTING, // comm devices must use OPEN_EXISTING 0, NULL // hTemplate must be NULL for comm devices );

if (hLoc == INVALID_HANDLE_VALUE) return (2);

fSuccess = GetCommState(hLoc, &dcb);

if ( ! fSuccess) { CloseHandle (hLoc); return (3); }

// Fill in the DCB

dcb.BaudRate = baud; dcb.ByteSize = 5 + (opt & 3); dcb.StopBits = (opt & 4) ? TWOSTOPBITS : ONESTOPBIT;

n = (opt >> 3) & 3; // extract parity bits

switch (n) { case 0: case 2: dcb.Parity = NOPARITY; break; case 1: dcb.Parity = ODDPARITY; break; case 3: dcb.Parity = EVENPARITY; }

dcb.fParity = 0; // enable parity checking dcb.fOutxCtsFlow = 0; // CTS output flow control dcb.fOutxDsrFlow = 0; // DSR output flow control dcb.fDtrControl = DTR_CONTROL_DISABLE; // DTR flow control type dcb.fDsrSensitivity = 0; // DSR sensitivity dcb.fTXContinueOnXoff = 0; // XOFF continues Tx dcb.fOutX = 0; // XON/XOFF out flow control dcb.fInX = 0; // XON/XOFF in flow control dcb.fErrorChar = 0; // enable error replacement dcb.fNull = 0; // enable null stripping dcb.fRtsControl = RTS_CONTROL_DISABLE; // RTS flow control dcb.fAbortOnError = 0; // abort on error

fSuccess = SetCommState(hLoc, &dcb);

if ( ! fSuccess) { CloseHandle (hLoc); return (4); }

hCom[chan] = hLoc;

return (0);

}

static BOOL PortNotOpen (byte chan) { return (hCom[chan] == INVALID_HANDLE_VALUE); }

static BOOL PortIsOpen (byte chan) { return (hCom[chan] != INVALID_HANDLE_VALUE); }

static void ClosePort (byte chan) { CloseHandle (hCom[chan]); }

static DWORD MinD (DWORD d1, DWORD d2) { return (d1 < d2) ? d1 : d2; }

ðpÉ×ÅÔ, Pavel. ÷ÏÔ ÞÔÏ Pavel Grishin wrote to Michael Belousoff:

MB>> ñ ËyÐÉÌ ÁÄÁÐÔÅp ÓÉÎÅÇÏ ÚyÂÁ Ó ÄÉÓËÏÍ, ÉÂÏ y pÅ£ÎËÁ MB>> ÔÅÌÅÆÏÎ Ó ÔÁËÏ×ÙÍ. óyÎyÌ ÄÉÓËÅÔy, ÐÏÔÏÍ ×ÏÔËÎyÌ ÚyÂÁÓÔÙÊ

PG> ÷ÏÔ ÇÄÅ ÏÛÉÂËÁ: ^^^^^^^^^^^^^^^, Á ÎÅ ÓÌÅÄÏ×ÁÌÏ. :)

ôÙ ÐpÁ×, ÎÏ × ÄpyÇÏÍ. ïÇÏ×ÏpÉÌÓÑ Ñ. ôÏ ÎÅ ÄÉÓËÅÔÁ ÂÙÌÁ, Á CD. ðpÁ×ÄÁ, Ôp£ÈÄÀÊÍÏ×ÙÊ.

Michael G. Belousoff mickbell(dog)r66(dot)ru

formatting link
... ==== ðpÏÂÌÅÍy ÎÁÄÏ pÅÛÁÔØ ÄÏ ÔÏÇÏ, ËÁË ÏÎÁ ÐÏÑ×ÉÔÓÑ. ====

ðpÉ×ÅÔ, Olga. ÷ÏÔ ÞÔÏ Olga Nonova wrote to Alexandr Torres:

MB>>>> ÔÁËÏ×ÙÍ. óyÎyÌ ÄÉÓËÅÔy, ÐÏÔÏÍ ×ÏÔËÎyÌ ÚyÂÁÓÔÙÊ

PG>>> ÷ÏÔ ÇÄÅ ÏÛÉÂËÁ: ^^^^^^^^^^^^^^^, Á ÎÅ ÓÌÅÄÏ×ÁÌÏ. :)

AT>> ïÞÅÎØ ÄÁÖÅ ÓÌÅÄÏ×ÁÌÏ, É ÎÅ ÔÏÌØËÏ ÄÌÑ pÅÂÅÎËÁ - ÂÌÀÔyÓ ÐpÏÓÔÏ AT>> ÎÅÚÁÍÅÎÉÍÁÑ ×ÅÝØ ÄÌÑ hands-free, ÞÔÏÂÙ ÛÎypËÉ ÎÅ ÐyÔÁÌÉÓØ.

ON> äÌÑ ÍyÌØÔÉÍÅÄÉÊÎÙÈ ÉÇpyÛÅË ÎÁ ÄÉ×ÁÎÅ, ÍÏÖÅÔ, É "ÎÅÚÁÍÅÎÉÍÁÑ". äÌÑ ON> ÓÅpØÅÚÎÙÈ ÖÅ ÃÅÌÅÊ wireless yÐpÁ×ÌÅÎÉÑ- ÎÁÐÌÅ×ÁÔØ É ÚÁÂÙÔØ. äÁ É ÖpÅÔ ON> ÎÅÍÅpÑÎÎÏ.

  1. ëÔÏ-ÔÏ ÔyÔ ÇÏ×ÏpÉÌ ÐpÏ ÓÅpأÚÎÙÅ ÃÅÌÉ wireless yÐpÁ×ÌÅÎÉÑ???
  2. á ÐypËyÁ ÂÙ É ÎÅ ÐÁ?
  3. åÓÌÉ Úy Öp£Ô (Á ÞÔÏ Åݣ ÚyÂy ÄÅÌÁÔØ???) ÎÅÍÅpÑÎÎÏ, ÍÏÖÎÏ ÐÏÉÇpÁÔØÓÑ Ó ÎÅ-ÚyÂÏÍ, ÎÁÐpÉÍÅp, Ó ÔÏÊ ÖÅ zigbee.
  4. ïÌÅÎØËÁ, ×ÁÍ ÔyÔ Åݣ ÎÅ ÎÁÄÏÅÌÏ? ;-)

Michael G. Belousoff mickbell(dog)r66(dot)ru

formatting link
... ==== ðpÏÂÌÅÍy ÎÁÄÏ pÅÛÁÔØ ÄÏ ÔÏÇÏ, ËÁË ÏÎÁ ÐÏÑ×ÉÔÓÑ. ====

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required