FT232

Loading thread data ...

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

Hello, Vadim Isaev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 17 May 2006 07:16:41

+0000 (UTC):

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

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

VI> Можно немного подробнее об этих проблемах и о том как ты их VI> решал?

О проблемах можно, а решал их не я, я под винду не пишу почти (только по-мелочи всякие консольные утилитки). А проблема такая. Есть протокол простой пакетный. Передается в uart пакет, ждется в течение таймаута ответ, если он есть, через некоторый делей посылается следующий пакет, если нет, следующий посылается после таймаута. Проблемы были с выдержкой этих времен с одной стороны и с загрузкой этим процессом окон - с другой. Для более точной выдержки времен пользовался вызовом timeBeginPeriod(1), а вот что там с ожиданием события сделано, чтобы оно винду колом не ставило я в точности не знаю.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Aleksandr Konosevich
Reply to
Dimmy Timchenko

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

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 17 May 2006 09:30:30

+0400:

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

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

DT> Помню, что что-то меня сильно не устроило, и пришлось DT> портировать собственную отладочную терминалку под Win32 - DT> благо VirtualPascal хорошо совместим с BP и менять пришлось DT> немного.

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

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

DO>> Hаверняка это лучше (хотя конечно еще лучше все под win32 DO>> переписать),

DT> Hе хочется, потому что основная среда для этой софтины пока DT> что - дос.

Это сегодня уже экзотика...

DO>> но это ж не самое тривиальное знание... Я когда свое похожее DO>> делал нашел весьма скудную информацию о том как это делать.

DT> В принципе, в MSDN оно есть, плюс DDK. Hо действительно есть DT> не всё: сделать это на том же VP не вышло, пришлось таки DT> ставить этот DDK и писать на C.

В общем я когда делал, нашел информацию с трудом, и как я говорил, остался ряд вопросов. А это действительно проще всего на С, я BC5 использовал, он у Борланда даром раздается.

DO>> Кстати, а посмотреть на твое решение можно?

DT> Да пожалуйста:

Спасибо.

dima

formatting link

Reply to
Dmitry Orlov

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

Wed May 17 2006 11:16, Vadim Isaev wrote to Dmitry Orlov:

VI> Можно немного подробнее об этих проблемах и о том как ты их решал? VI> А то предстоит похожая задачка по обмену PC с контроллерами по Modbus.

Поскольку Орлов с СOM-портами под виндами не работал, то расскажу о проблеме Вам я. Проблема в многозадачности виндов и в их тайной жизни внутри себя. Так, например, если Вы средствами SDK Win32 открыли файл с именем "СОМ1" и потом дали команду write в этот файл некоего массива байтов, то нет никакой гарантии, что эти байты начнут вываливаться из COM-потрта сплошным потоком, без промежутков между символами, как того требует стандарт MODBUS. Винды, особенно 98-е, запросто могут разорвать поток и вставить в него очень солидную паузу, которая вызовет ложный таймаут на приемной стороне. Управлять виндами, типа задания критической секции на исполняемый код,- я не нашла как. Вероятнее всего нельзя вообще. Однако, как ни странно, помогает использование адаптеров USB в RS-232! Эти адаптеры видимо буферизуют пакеты и выдают их в RS-232 уже сплошным потоком символов. MODBUS с такими адапторами работает нормально.

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

Reply to
Olga Nonova
Reply to
Yaroslav Komarov
Reply to
Alexej Goncharovskij
Reply to
Vladislav Baliasov
Reply to
Leha Bishletov
Reply to
Ruslan Mohniuc
Reply to
Ruslan Mohniuc

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

Wed May 17 2006 17:51, Dmitry Orlov wrote to Olga Nonova:

ON>> .. Так, например, если Вы средствами SDK Win32 открыли файл с ON>> именем "СОМ1" и потом дали команду write в этот файл некоего массива ON>> байтов, то нет никакой гарантии, что эти байты начнут вываливаться ON>> из COM-потрта сплошным потоком, без промежутков между символами, как ON>> того требует стандарт MODBUS.

DO> Вот такого не видел. Открываю терминал, беру в клипборд текст килобайт DO> 10, делаю paste и никаких разрывов на скопе не вижу. Hу и программы, DO> которые для меня писались работают без подобных проблем. Как с USB так и DO> с нормальными портами.

Повторяю. Если разработчик попытается изобразить на ПК мастера MODBUS средствами SDK win32, то он неминуемо столкнется с непредсказуемым формированием пакетов по временным характеристикам. Я не знаю, как работают Ваши программы, по-видимому это совсем не MODBUS, а обычный поток данных без жестких требований по временным задержкам и таймаутам.

ON>> очень солидную паузу, которая вызовет ложный таймаут на приемной ON>> стороне. Управлять виндами, типа задания критической секции на ON>> исполняемый код,- я не нашла как. Вероятнее всего нельзя вообще.

DO> Вот так не пробовали?

DO> InitializeCriticalSection(&CriticalSection); DO> Critical = TryEnterCriticalSection(&CriticalSection); DO> if (Critical) DO> {

DO> //....... DO> LeaveCriticalSection(&CriticalSection);

DO> } DO> DeleteCriticalSection(&CriticalSection);

Hет, не пробовала, т.к. берегу свое время и тратить его на разбирательства виндовских тайн не желаю. Я уж не говорю, что представленный Вами фрагмент блокирует только треды соседних юзерских приложений, но никак не треды самоей ОС. А вот они-то...

ON>> Однако, как ни странно, помогает использование адаптеров

DO> Думаю, еще больше поможет обращение к профессиональным win32 DO> программистам.

"Специалист подобен флюсу" (с) -Кузьма Прутков

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

Reply to
Olga Nonova

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.