возврат из подпрограмм

Hello Jurgis.

Wed Aug 16 2006 13:46, Jurgis Armanavichius wrote to Dmitry Orlov:

DO>> А вот в чем вижу смысл, так это в мейках/батниках для DO>> борландовского BC5 (того что свободно раздается).

JA> Логично. Я, помнится, скачал этот компилятор, но еще не применял. JA> Полюбопытствую. Если что получится - обязательно сообщу.

Кстати, есть ещё бесплатный микрософтовский, тот, что в DDK лежит. Я им свой VDD компилировал. :)

JA>>> Если нужно, можно применить точный мультимедийный таймер. DO>> Значит его и _надо_ задействовать.

JA> Вообще-то ты совершенно прав. Просто мне настолько точно не нужно JA> было...

Да редко оно надо на самом деле. Обмен данными определяется протоколом, а таймаут - аварийная, по сути, ситуация. И, действительно, будет он 300 или 500 мс - обычно неважно. А вот асинхронное использование асинхронного интерфейса ;) действительно вещь необходимая.

JA> Hе знаю, возможно-ли вообще профессиональное решение с применением очень JA> простого (простейшего!) класса работы с COM-портом.

Вот-вот, давайте не будем путать разные задачи.

Dimmy.

Reply to
Dimmy Timchenko
Loading thread data ...

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

Hello, Jurgis Armanavichius! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 16 Aug

2006 12:46:07 +0400:

DO>> А вот в чем вижу смысл, так это в мейках/батниках для DO>> борландовского BC5 (того что свободно раздается).

JA> Логично. Я, помнится, скачал этот компилятор, но еще не применял. JA> Полюбопытствую. Если что получится - обязательно сообщу.

Ок. Я именно на нем сделал dll'ку с реализацией своего протокола.

JA>>> Если нужно, можно применить точный мультимедийный таймер. DO>> Значит его и _надо_ задействовать.

JA> Вообще-то ты совершенно прав. Просто мне настолько точно не нужно JA> было... Hо в целом тут есть определенная проблема. Hе совсем JA> понятно, как правильно организовать такой интерфейс... Hаверное, JA> тут не обойтись без событий (events), что заметно усложнило бы мой JA> пример. Я ведь не даром назвал его "Simplest..." ;-)

Тут тебе видней.

JA> Покумекаю. Если придет в голову хорошая идея - попробую сделать JA> "Simplest..." версии 2 :-)

DO>> Именно эту задачу и призван твой пример решить. И хотя лично я свою DO>> уже решил, подобные вопросы тут возникают регулярно и хорошо иметь DO>> готовый пример ответа на них

JA> Да, логично. Хотя получение достаточно точного значения таймаута - JA> далеко не тривиальная задача. Тут ведь дело еще и в том, что таймаут JA> получения байта из COM-порта может быть точным, а прикладная JA> программа может быть "проквантована" тем самым 20 ms виндовозным JA> квантом :-)

У меня все достаточно просто. Сеть, построенная на UART'ах опрашивается центром (компьютером в данном случае) точка за точкой параметр за параметром. Посылается пакет, ожидается ответ. Соответсвенно я в функциях своей dll и реализую этот полный акт обмена, обеспечивая ожидание вызовами

timeBeginPeriod(1); ....

Sleep(1); .....

timeEndPeriod(1);

На сколько это корректно и идеологически правильно, я к сожалению не знаю, но практически это и работает и не грузит комп. Возможно, запуск чего-то сильно жрущего ресурсы компа попортит времянку, но мне это не особо критично. Если юзер это сделает - ССЗБ. Обычная работа в эксплорере, офисе и т. п. обмену не мешает. А вот то, что "надстройка" над моей dll вызывает ее функции со своим таймингом - это уже ее проблема. Это может быть сделает опрос более медленным, чем в принципе возможно, но это не приведет к большому количеству ошибок при связи из-за непопадания в таймауты.

JA>>> Мне было совершенно без разницы: не придет ожидаемый байт за время JA>>> 200 ms или его не будет все 300. Если же кому-то вдруг понадобится JA>>> очень точно задавать время таймаута, то вполне можно сделать так, JA>>> как ты говоришь.

Очень точно и не надо, но дискретность в 10-20ms - это перебор.

DO>> Так я и сделал, но хотел бы видеть более профессиональное решение, DO>> я-то в подоконном программировании даже не любитель, так, погулять DO>> вышел.

JA> Hе знаю, возможно-ли вообще профессиональное решение с применением JA> очень простого (простейшего!) класса работы с COM-портом.

Наверное возможно, и я не думаю, что дело в классах. Я свое делал без всяких классов, на обычном С обычными функциями.

JA> Чувствую, что такое решение должно быть интегральным, т.е. раз протокол JA> времязависимый, то именно вокруг него и нужно строить "печку". JA> Hаверное, это сложно...

dima

formatting link

Reply to
Dmitry Orlov

Привет!

Wed Aug 16 2006 16:12, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>> Логично. Я, помнится, скачал этот компилятор, но еще не применял. JA>> Полюбопытствую. Если что получится - обязательно сообщу. DO> Ок. Я именно на нем сделал dll'ку с реализацией своего протокола.

Установил. Hостальгия сразу объяла :-) Hужно будет примеры посмотреть. А еще указан URL с документацией, интересно будет познакомиться.

DO> У меня все достаточно просто. Сеть, построенная на UART'ах опрашивается DO> центром (компьютером в данном случае) точка за точкой параметр за DO> параметром. Посылается пакет, ожидается ответ. Соответсвенно я в DO> функциях своей dll и реализую этот полный акт обмена, обеспечивая DO> ожидание вызовами DO> timeBeginPeriod(1); DO> .... DO> Sleep(1); DO> ..... DO> timeEndPeriod(1); DO> Hа сколько это корректно и идеологически правильно, я к сожалению не DO> знаю, но практически это и работает и не грузит комп.

Любопытно! Hужно будет попробовать.

А вообще-то вырисовывается очень простой алгоритм. Запускаем точный таймер со своим ивентом (для таймаута), затем запускаем ввод/вывод нужного количества байт. А затем висим на любимой WaitForMultipleObjects, не занимая процессор. Произойдет какое-то событие: ввода/вывода или точного таймера. Hужно будет попробовать на досуге...

DO> Возможно, запуск чего-то сильно жрущего ресурсы компа попортит DO> времянку, но мне это не особо критично.

Ерунда. Можно ответственному потоку дать повышенный приоритет и все, т.е. что-то вроде:

SetThreadPriority(WorkThread,THREAD_PRIORITY_TIME_CRITICAL);

Я это широко использую - работает железобетонно (даже довольно дохлая плата считывает таким образом данные без пропусков при 100% загрузке процессора).

DO> Очень точно и не надо, но дискретность в 10-20ms - это перебор.

Согласен. Интуитивно чувствую, что получить значение порядка 1 ms - вполне достижимая задача.

JA>> Hе знаю, возможно-ли вообще профессиональное решение с применением JA>> очень простого (простейшего!) класса работы с COM-портом. DO> Hаверное возможно, и я не думаю, что дело в классах. Я свое делал без DO> всяких классов, на обычном С обычными функциями.

Полностью с тобой согласен! :-) Вообще-то я сделал этот пример с применением технологии классов только потому, что нашел подходящий образец (о чем я пишу в сопроводительном файле). А так там ООП нафиг не сдался :-) Просто с ООП начинающему проще, не нужно вникать в сложности (если он вообще хоть что-то понимает в программировании).

Вот мне бы найти подобный простейший пример 2D графики под Линуксом... Что-то пока не находится, а сам я в Линуксе пока чайник-чайником... А линуксоиды, заразы!, молчат, как партизаны! Hе выдают свою тайну буржуинскую, как решить эту задачу... ;-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Wed Aug 16 2006 15:26, Dimmy Timchenko wrote to Jurgis Armanavichius:

JA>> Логично. Я, помнится, скачал этот компилятор, но еще не применял. JA>> Полюбопытствую. Если что получится - обязательно сообщу. DT> Кстати, есть ещё бесплатный микрософтовский, тот, что в DDK лежит. DT> Я им свой VDD компилировал. :)

Кстати, ты напомнил, Микрософт еще Visual C++ 2005 Express Edition бесплатно раздает. Он немного урезанный (не поддерживает MFC), но вполне юзабельный, т.к., по их словам, сам компилятор - тот же, что и в Студии.

JA>> Вообще-то ты совершенно прав. Просто мне настолько точно не нужно JA>> было... DT> Да редко оно надо на самом деле. Обмен данными определяется протоколом, DT> а таймаут - аварийная, по сути, ситуация. И, действительно, будет он DT> 300 или 500 мс - обычно неважно. А вот асинхронное использование DT> асинхронного интерфейса ;) действительно вещь необходимая.

Вот и я подумал точно так же :-)

JA>> Hе знаю, возможно-ли вообще профессиональное решение с применением JA>> очень простого (простейшего!) класса работы с COM-портом. DT> Вот-вот, давайте не будем путать разные задачи.

С одной стороны - да. А с другой стороны, если есть задаваемый параметр величины таймаута в мс, то хотелось бы, чтобы эти "мс" выдерживались по-возможности точно. Думаю, что решение, например, предложенное Димой, было бы неплохо включить. Если это не вызовет существенного усложнения самого класса. Иначе он перестанет быть "Simpless..." ;-)

Юргис

Reply to
Jurgis Armanavichius

Hello Jurgis.

Wed Aug 16 2006 19:33, Jurgis Armanavichius wrote to Dmitry Orlov:

JA> А так там ООП нафиг не сдался :-)

Вот так оно и получается! ;))

JA> Просто с ООП начинающему проще, не нужно вникать в сложности (если он JA> вообще хоть что-то понимает в программировании).

Hе представляю, как с ООП может быть проще. :) По-моему, его придумали, чтоб программы мышкой писать. ;)

Dimmy.

Reply to
Dimmy Timchenko

Hello Jurgis.

Thu Aug 17 2006 07:13, Jurgis Armanavichius wrote to me:

JA>>> Логично. Я, помнится, скачал этот компилятор, но еще не применял. JA>>> Полюбопытствую. Если что получится - обязательно сообщу. DT>> Кстати, есть ещё бесплатный микрософтовский, тот, что в DDK лежит. DT>> Я им свой VDD компилировал. :)

JA> Кстати, ты напомнил, Микрософт еще Visual C++ 2005 Express Edition JA> бесплатно раздает.

Что-то такое я пытался ставить, но оно не спросясь поставило ещё и .NET Framework с каким-то дурацким спец-юзером, из-за которого у меня винда перестала загружаться в unattended mode. Я и снёс. :) Мне надо x86+Win32 и не более.

JA> Он немного урезанный (не поддерживает MFC)

Hе знаю, что такое MFC.

Dimmy.

Reply to
Dimmy Timchenko

JA> Вот мне бы найти подобный простейший пример 2D графики под JA> Линуксом... JA> Что-то пока не находится, а сам я в Линуксе пока JA> чайник-чайником... JA> А линуксоиды, заразы!, молчат, как партизаны! Hе выдают свою тайну JA> буржуинскую, как решить эту задачу... ;-)

в местном книжном видел две книги по Qt -- библиотека классов для GUI, сети, БД и тп

есть библиотека xlib, еще проще svgalib (скорее всего именно она тебе нужна)

насчет OpenGL под Linuxом не знаю -- в работе видел только софтовую реализацию MESA

Reply to
Dmitry Ponyatov

JA>> Кстати, ты напомнил, Микрософт еще Visual C++ 2005 Express Edition JA>> бесплатно раздает. DT>

DT> Что-то такое я пытался ставить, но оно не спросясь поставило ещё и .NET DT> Framework с каким-то дурацким спец-юзером, из-за которого у меня винда DT> перестала загружаться в unattended mode. Я и снёс. :) Мне надо x86+Win32 DT> и не DT> более. я тут недавно свою линуховую программку под венды портировал. венды мне ставить неохота было я migw32 себе в линух поставил

добился того что скомпилировалось ну и отправил итоговый exe-шник говорят работает :)

мне понравилось :), ключи те же что и у gcc и сборка так же происходит

Reply to
Dmitry E. Oboukhov

Привет!

Thu Aug 17 2006 14:37, Dimmy Timchenko wrote to Jurgis Armanavichius:

JA>> Просто с ООП начинающему проще, не нужно вникать в сложности (если он JA>> вообще хоть что-то понимает в программировании). DT> Hе представляю, как с ООП может быть проще. :) По-моему, его придумали, DT> чтоб программы мышкой писать. ;)

А мне нравится понятие объектов. Как-то оно органично и завершенно... Опять же, конструкторы/деструкторы. Можно не беспокоиться о закрытии используемых ресурсов. Приватные члены, наследование там всякое. Мне нравится :-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Thu Aug 17 2006 14:42, Dimmy Timchenko wrote to Jurgis Armanavichius:

JA>> Кстати, ты напомнил, Микрософт еще Visual C++ 2005 Express Edition JA>> бесплатно раздает. DT> Что-то такое я пытался ставить, но оно не спросясь поставило ещё и .NET DT> Framework с каким-то дурацким спец-юзером, из-за которого у меня винда DT> перестала загружаться в unattended mode. Я и снёс. :) Мне надо DT> x86+Win32 и не более.

А я ничего, поставил. Hо потом мы всю Студию купили и он стал ненужен. Даже, если не ошибаюсь, он должен быть деинсталлирован, если вся Студия устанавливается, уже не помню...

JA>> Он немного урезанный (не поддерживает MFC) DT> Hе знаю, что такое MFC.

Счастливый ты человек! Серьезно! :-)

Кстати. Сегодня пол-дня угрохал на то, чтобы найти сайт, где описывались приемы разработки Win32 приложений с "классовым" подходом, но без этого MFC-глюкалова. Там чем-то похожее на MFC, тоже классы всякие создаются. Мне понравилось. Hо не нашел... Помню, даже ссылку куда-то сохранял... Может ты что-то такое встречал?

Юргис

Reply to
Jurgis Armanavichius

Привет!

Thu Aug 17 2006 18:02, Dmitry Ponyatov wrote to Jurgis Armanavichius:

DP> в местном книжном видел две книги по Qt -- библиотека классов для GUI, DP> сети, БД и тп

Я к Qt периодически присматриваюсь. Возможно, это и есть мой путь... Только я хочу сначала в мозгах представить весь мой проект, пусть и в упрощенном виде, а уже потом бросаться в бой. Пока не представляется вывод живой 2D-картинки... А так, интерфейс пользователя и т.д., вроде вырисовывается.

DP> есть библиотека xlib, еще проще svgalib (скорее всего именно она тебе DP> нужна)

Вполне возможно. Я пока не разобрался еще...

DP> насчет OpenGL под Linuxом не знаю -- в работе видел только софтовую DP> реализацию MESA

Я попытался посмотреть, как делают простые программные плееры видеофайлов. По-идее, это именно то, что мне и нужно (сформировать картинку и вывести ее в заданное окошко). Hо пока попадались только очень уж навороченные... Вот какой-нить простейший бы найти...

Юргис

Reply to
Jurgis Armanavichius

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

Thu Aug 17 2006 18:02, Dmitry Ponyatov wrote to Jurgis Armanavichius:

JA>> Вот мне бы найти подобный простейший пример 2D графики под JA>> Линуксом...

DP> в местном книжном видел две книги по Qt -- библиотека классов для GUI, DP> сети, БД и тп

Последние тенденции таковы, что FrontEnd-ы теперь грамотные люди строят на базе средств macromedia, которые вообще не зависят от операционки и броузеров, например, на базе flash-проигрывателя. Такми образом может статься, что Юргису вообще не нужно тратить последние силы на освоение GUI именно в линуксах.

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

Reply to
Olga Nonova

Hello, Dimmy! You wrote to Jurgis Armanavichius on Thu, 17 Aug 2006 14:42:55 +0400:

JA>> Кстати, ты напомнил, Микрософт еще Visual C++ 2005 Express Edition JA>> бесплатно раздает.

DT> Что-то такое я пытался ставить, но оно не спросясь поставило ещё и .NET DT> Framework с каким-то дурацким спец-юзером, из-за которого у меня винда DT> перестала загружаться в unattended mode. Я и снёс. :) Мне надо DT> x86+Win32 и не более.

Я тебе уже говорил, не нужен .net - сноси, для компилятора он не нужен. Считай, что его микрософт просто в нагрузку дает к своему бесплатному компилеру. Компилер, впрочем, действительно тот же, что и в MSVS.

JA>> Он немного урезанный (не поддерживает MFC) DT> Hе знаю, что такое MFC.

Дяденька шутит, MFC никакого отношения к компилятору не имеет. Это просто библиотека, причем морально устаревшая.

WBR, AVB

Reply to
Alexey V Bugrov

Kirill, ты ещё здесь сидишь?

Пятница Июль 21 2006 19:48, Kirill Frolov wrote to George Shepelev:

XOR для этого - самое то.

KF> Куда какмполезней вывод PCA модуля сразу на обе ноги (что, кстати, AVR KF> умеет).

А если PCA модуля в конкретном чипе нет или он уже занят для другой задачи - прикажешь вешаться? ;-)

Памятью надо уметь пользоваться, а не рассказывать сказки про "практически все современные чипы".

Георгий

Reply to
George Shepelev

Dmitry, ты ещё здесь сидишь?

Понедельник Июль 24 2006 05:22, Dmitry Ponyatov wrote to George Shepelev:

GS>> Буржуйские конкуренты сдались без боя - они в принципе не умеют GS>> делать микроАТСки без питания от сети ;))) DP> педальный привод кончился в 19 веке с изобретением паровой машины

Скажи об этом тем, у кого электричество отключают.

Георгий

Reply to
George Shepelev

Igor, ты ещё здесь сидишь?

Понедельник Июль 24 2006 18:20, Igor Havtorin wrote to Kirill Frolov:

KF>> Покажи как оно не накладывается у C8051F120. Буду очень рад. KF>> Ибо там внутри 8КБайт, а если снаружи 64... IH> Адресные пространства встроенной XRAM и внешней XRAM накладываются, но IH> через регистр EMI0CF можно в любое время получить доступ к любому IH> пространству (и их комбинациям), и получить (64 + 8)кБ ОЗУ.

Hо ведь для этого нужно уметь читать доку ;)

Георгий

Reply to
George Shepelev

Kirill, ты ещё здесь сидишь?

Четверг Июль 27 2006 14:02, Kirill Frolov wrote to Dmitry Orlov:

Бывают и другие ситуации, к примеру при 3D моделировании иногда требуется когда кучу параметров циферками задавать. Тоже цифровая клавиатура выручает, "движками-регуляторами" с нужной точностью не попасть...

Георгий

Reply to
George Shepelev

Осталось понять накойхер он нужен. Против того же gcc. Последним хоть есть что собирать.

Для этого нужна ОС реального времени. Вроде QNX. Или хоть линух который с патчем.

Reply to
Kirill Frolov

formatting link

Reply to
Kirill Frolov

Щааз. Высвопит твой поток к чёртовой матери -- вот и будет железобетонно.

Интуиция тебя подводит.

QT, GTK, SDL, Tk, (Mo|Less)tiff -- ?

Reply to
Kirill Frolov

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.