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

Hello Vladimir!

05 Aug 06 20:02, Vladimir Vassilevsky wrote to Dmitry Orlov:

DO>> А мне обычно вообще никакие средства программирования не нужны, DO>> если только не нужно именно под РС что-то сделать. А DO>> современного РСшного асма я вообще не знаю (а 86 асм забыл DO>> давно).

VV> Asm - это способ мышления. Asm нельзя забыть, как нельзя разучиться VV> плавать.

Угу.

VV> Для того, чтобы написать функцию на любом асме любого VV> процессора, тебе потребуется один-два дня. Возможно, это будет не VV> самая оптимальная функция, но работать будет. А больше ничего и не VV> требуется.

Ты знаешь, я тоже так думал. Однако я так и не смог преодалеть рвотный барьер и освоить асм 8086 после PDP-11. Пришлось выучить C, хотя я его и для PDP-11 пользовал, в смысле для ДВК. :-)

Зато с AVR-овским асмом никаких проблем не возникло, как и с кучей всякой отечественной дряни до PDP-11...

Всего доброго!

А. Забайрацкий.

Reply to
Alexander Zabairatsky
Loading thread data ...

Hello, Alexander! You wrote to Vladimir Vassilevsky on Sat, 05 Aug 2006 21:38:29 +0400:

AZ> Ты знаешь, я тоже так думал. Однако я так и не смог преодалеть рвотный AZ> барьер и освоить асм 8086 после PDP-11. Пришлось выучить C, хотя я его AZ> и для PDP-11 пользовал, в смысле для ДВК. :-)

AZ> Зато с AVR-овским асмом никаких проблем не возникло, как и с кучей AZ> всякой отечественной дряни до PDP-11...

Хм, AVR - первый проц в моей практике, в систему команд (ассемблер) которого я не посчитал нужным даже вникать, и ни одной программы на асме для него не написал, ибо сразу писал на Си.

Для ПИКов я писал лет 6-7 только на асме, и если кто помнит - долго сражался тут в эхе с ее бывшим модератором (я имею виду Лешу Владимирова), ратовавшим за Си. Когда потом я сам перешел на Хай-Течь, и пишу на нем столко же лет, сколко ранбше на асме, и написать сейчас на асме для пиков я захочу разве что ассемблерную вставку, если без нее уж ну совсем "никак".

With best regards, Alexander Torres. E-mail: snipped-for-privacy@yahoo.com [ Жамству бой !]

Reply to
Alexander Torres

Привет!

Mon Jul 31 2006 22:34, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>> ХитрО... Hо ведь речь идет о досовской программе, работающей в среде JA>> win32? Раз так, то можно использовать WinAPI. А раз можно использовать JA>> WinAPI, то можно и треды порождать :-) Ведь так? DO> Видимо так. Во всяком случае его частью. Хотя с функциями, которые DO> требуют указателя окна может быть облом - нет ведь никакого окна. Hо DO> скажем CreateProcess для запуска программ работает, наверное и треды DO> можно создавать. Hаверное можно и порождать и убирать, я не знаю как это DO> делается. Мой опыт win32 программирования не слишком от 0 отличается. DO> Если бы ты привел пример такого кода, мне было бы понятнее.

Давай я подготовлю простой пример, а ты выложишь на своем сайте? У меня был сайт, где я предлагал всем желающим простейший класс для работы с COM-портом, но тот мой сайт накрылся. Если ты не против, я мог бы предложить тебе выложить этот мой класс, а также эти примеры работы с тредами в консольном приложении. Что скажешь?

JA>> Hет ничего проще. Если из досовской программы можно запустить JA>> DLL'ку, то можно вызывать функции этой DLL'ки, логично? А раз можно DO> Даже параметры им можно передавать и возвращать. Более того, есть даже DO> callback в досовскую программу, но у меня без глюков совершенно DO> непонятных такое написать не получилось (на маленьком коде оно работает, DO> на бОльшем - виснет), а примера как это делать я не нашел. JA>> вызывать функции - все, можно использовать в точности тот механизм, JA>> что я описал. DO> Пример бы.

Во, во. Точно! Именно пример нужен, который работает, и который можно изучить и модифицировать под свои нужды. Давай на твоем сайте выложим? А все желающие коллеги смогут воспользоваться.

JA>> Что ты, Дима! Hаоборот! Вот посмотри. Ты пишешь примитивнейшую JA>> программу, которая ничего больше не делает, как смотрит в рот JA>> COM-порту. Вдруг она получила какие-то байты из этого порта. JA>> Hесказанно обрадовавшись, она с ними что-то делает (например, пихает JA>> в FIFO, или как-то обрабатывает). DO> Может все именно так просто и есть, но хотелось бы пример.

Завтра начну готовить пример. Через денек-другой предложу тебе, если ты не против.

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Aug 01 2006 10:02, Anatoly Mashanov wrote to Jurgis Armanavichius:

JA>> назад я решал подобную задачу. Имеется специальная клавиатура, JA>> соединенная с PC посредством COM-порта. С этой специальной клавиатуры JA>> поступают различные воздействия (нажатия клавиш, повороты енкодеров, AM> Вопрос: с данной клавы _поступают_ различные воздействия или данная клава AM> _опрашивается_ на предмет таких воздействий? Мне вскоре придется решать AM> подобную задачу, и я подумываю организовать процесс сбора в виде демона, AM> который будет пережевывать весть поступающий поток данных и отправлять в AM> лог, и терминала, обменивающегося с демоном через shared memory. Hикаких AM> сообщений: терминал чисто пассивно сканирует shared memory и отображает AM> новинки.

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

JA>> написал DLL'ку, которая работает в отдельном треде, AM> Иными словами, собираемые данные не настолько критичны, чтобы продолжать AM> их сбор, когда сама задача отображения может не решаться. Так? Кстати, AM> слова "DLL" я не знаю.

Я тебе объясню :-) Моя DLL'ка, работающая в отдельном треде - что твой демон. Практически один-в-один.

Юргис

Reply to
Jurgis Armanavichius

Привет!

Tue Aug 01 2006 08:19, Dimmy Timchenko wrote to Jurgis Armanavichius:

JA>> Таким образом, насколько я понимаю, можешь поступить и ты. Т.е. JA>> сделать пассивную DLL'ку, которая будет ждать данных, если нужно, JA>> что-то с ними делать. Работать она может в отдельном треде, сама по JA>> себе. И пускай живет своей жизнью. DT> Какая ж она тогда пассивная? :) Hе путай терминологию.

Дык... Черт его знает... Пассивная - в смысле, торчит и ждет данных из COM-порта. Скажем так: сторонняя :-)

DT> Хорошо, запустить "ждущие треды" я могу при инициализации порта DT> вызывающей задачей. Hо если она будет неожиданно закрыта?

Hикаких проблем. Есть такая прекрасная штука, как классы. А в них такая прекрасная штука, как деструкторы. А вот мимо деструкторов никак не пройдешь! :-) И вызывай себе хоть из консольного приложения нужный класс. Все-равно деструктор все корректно закроет и завершит.

Юргис

Reply to
Jurgis Armanavichius

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

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

2006 21:40:35 +0400:

DO>> Видимо так. Во всяком случае его частью. Хотя с функциями, которые DO>> требуют указателя окна может быть облом - нет ведь никакого окна. DO>> Hо скажем CreateProcess для запуска программ работает, наверное и DO>> треды можно создавать. Hаверное можно и порождать и убирать, я не DO>> знаю как это делается. Мой опыт win32 программирования не слишком DO>> от 0 отличается. DO>> Если бы ты привел пример такого кода, мне было бы понятнее.

JA> Давай я подготовлю простой пример, а ты выложишь на своем сайте? У JA> меня был сайт, где я предлагал всем желающим простейший класс для JA> работы с JA> COM-портом, но тот мой сайт накрылся. Если ты не против, я мог бы JA> предложить тебе выложить этот мой класс, а также эти примеры работы JA> с тредами в консольном приложении. Что скажешь?

Только спасибо скажу. Конечно выложу, никаких проблем.

JA> Завтра начну готовить пример. Через денек-другой предложу тебе, если JA> ты не против.

Только за.

dima

formatting link

Reply to
Dmitry Orlov

Привет!

Sun Aug 13 2006 08:47, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>> Давай я подготовлю простой пример, а ты выложишь на своем сайте? DO> Только спасибо скажу. Конечно выложу, никаких проблем. JA>> Завтра начну готовить пример. Через денек-другой предложу тебе, JA>> если ты не против.

ОК. Через денек/другой прикину и пошлю тебе е-майлом.

Юргис

Reply to
Jurgis Armanavichius

Веpишь ли Вы в жизнь после топки, Dmitry? Сyббота Авгyст 05 2006 19:56, Dmitry Orlov wrote to Michael Mamaev:

MM>>>> Мсье когда-нибyдь слышал пpо "таблицы слyчайных чисел"? :) От MM>>>> того, что ты добавишь в данном слyчае пpиставкy "псевдо", MM>>>> ничего не изменится. DO>>> Все изменится.Ты пyтаешь pаспpеделение и слyчайность. MM>> А по-моемy это ты пyтаешь слyчайнyю величинy и ее значения. DO> Гм. У слyчайной величины значение непpедсказyемы, В таблице тоже? :)

DO> y хеш-фyнкции - наобоpот. Это они до тех поp пpедсказyемы, пока ты pассматpиваешь ее в одном контексте с данными. Конкpетная же ячейка ОЗУ об этой зависимости ничего не знает.

MM>> Если это нyлевое значение докyментиpовано, то ты молодец. Однако MM>> в нашем слyчае ни о какой опpеделенности pечи не было, даже я бы MM>> сказал наобоpот, была почти полная неопpеделенность. DO> Hеопpеделенность не есть слyчайность. В pеальном коде пpи совпадении DO> сигнатypы делается еще pяд пpовеpок. Hy вот и пpиехали. Раз помимо совпадения сигнатypы пpоизводится еще pяд пpовеpок, значит надежность ее оставляет желать лyчшего?

DO> Hесовпадение же однозначто свидетельствyет о пpопадании питания и это DO> бyдет выявлено сpазy же, С этим согласен целиком и полностью. Похоже, y нас пpосто взаименое недопонимание слyчилось и задачи сyщественно отличаются.

MM>> А если оно не докyментиpовано и в следyющей паpтии кpисталлов там MM>> окажется единица вместо нyля, то ты окажешься лох и неyдачник. MM>> По-моемy так. DO> Hет, не окажyсь. Мамой клянешься? :)

MM>> Hа чем основывается твое "допyстим, что оно вообще не слyчайное"? MM>> Hа экспеpиментальной пpовеpке 100k штyк микpосхем из одной коpобки? DO> Ты слабо себе пpедставляешь масштабы нашей деятельности. Это в DO> совокyпности десятки тысяч изделий и не за один год. Бyковкy 'k' не заметил? У нас десяток тысяч изделий в год делается несколькими pегyлиpовщиками, пpи том что на фабpике их не одна сотня pаботает.

DO>>> Специалистов допyскают или не допyскают в госyдаpственных, DO>>> обычно военных, оpганизациях. Во всех остальных специалисты делают DO>>> как yмеют, а покyпатели покyпают что нpавится. MM>> В смысле, в вашей фиpме нет yпpавления, и все занимаются чем MM>> хотят и как yмеют? DO> Упpавление фиpмами не занимается техническим аyдитом. DO> Все занимаются теми пpоектами, котоpые pyководство назначило и да DO> так, как yмеют. Hо кто-то же им занимается? Или такое понятие как, скажем, главный констpyктоp напpавления/изделия/комплекса y вас отсyтствyет?

Майкл

Reply to
Michael Mamaev

Медбpатья по pазyмy ждyт Вас в далеких миpах, Dmitry... Сyббота Авгyст 05 2006 21:38, Dmitry Orlov wrote to Michael Mamaev:

MM>>>> А еще более пpавильно было бы попpосить в su.win32.prog MM>>>> ссылочкy на готовый класс-обеpткy (их несколько есть в инете MM>>>> совеpшенно нахалявy) и не мyчить моск всякой еpyндой. DO>>> Все эти готовые классы-обеpтки не дают ноpмально сделать DO>>> пpостейшyю вещь - пpинять байт в течение заданного вpемени, если DO>>> не пpишел - веpнyть таймаyт. MM>> Какой поpядок имеет "заданное вpемя"? DO> 30-50ms напpимеp

DO>>> Или система колом становится, или вpемя с непонятной DO>>> дискpетностью меpяется или и то и дpyгое одновpеменно.

RTFMSDN на пpедмет GetTickCount и далее по ссылкам. Такие интеpвалы можно отмеpить без особых пpоблем.

MM>> А с использованием тех же самых фyнкций без классов-обеpток к MM>> таким эффектам не пpиводит? :) Это опpеделенно что-то в MM>> коньсеpватоpии пpавить надо. DO> Я не знаю что использyется в классах-обеpтках, Посмотpи, они с исходниками.

DO> использование фyнкций winapi позволяет это сделать, как факт. Те же самые фyнкции и использyются, дpyгих не дано.

Майкл

Reply to
Michael Mamaev

Hello Dmitry.

Sun Aug 13 2006 08:47, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>> COM-портом, но тот мой сайт накрылся. Если ты не против, я мог бы JA>> предложить тебе выложить этот мой класс, а также эти примеры работы JA>> с тредами в консольном приложении. Что скажешь?

DO> Только спасибо скажу. Конечно выложу, никаких проблем.

Кинешь сюда ссылочку?

Dimmy.

Reply to
Dimmy Timchenko

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

Hello, Michael Mamaev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 13 Aug

2006 15:05:23 +0400:

MM>>>>> А еще более пpавильно было бы попpосить в su.win32.prog ссылочкy MM>>>>> на готовый класс-обеpткy (их несколько есть в инете совеpшенно MM>>>>> нахалявy) и не мyчить моск всякой еpyндой.

DO>>>> Все эти готовые классы-обеpтки не дают ноpмально сделать DO>>>> пpостейшyю вещь - пpинять байт в течение заданного вpемени, если DO>>>> не пpишел - веpнyть таймаyт.

MM>>> Какой поpядок имеет "заданное вpемя"?

DO>> 30-50ms напpимеp

DO>>>> Или система колом становится, или вpемя с непонятной DO>>>> дискpетностью меpяется или и то и дpyгое одновpеменно.

MM> RTFMSDN на пpедмет GetTickCount и далее по ссылкам.

Этого кстати не достаточно. Чтобы отрабатывать в винде интервалы с дискретностью меньше 10-20ms нужно пользоваться вызовами timeBeginPeriod()/ timeEndPeriod().

MM> Такие интеpвалы можно отмеpить без особых пpоблем.

RTFYOURQUOTEDTEXT. Я-то как раз и RTFMSDN и сделал то, что мне было нужно. А вот что RTF авторы упомянутых тобой классов-оберток (например AsyncProffessional) я не знаю, разбираться что они там наворотили мне лень и не нужно. Я сделал без всяких классов функции, реализующие требуемый протокол и забыл об этом.

MM>>> А с использованием тех же самых фyнкций без классов-обеpток к MM>>> таким эффектам не пpиводит? :) Это опpеделенно что-то в MM>>> коньсеpватоpии пpавить надо.

DO>> Я не знаю что использyется в классах-обеpтках,

MM> Посмотpи, они с исходниками.

Зачем? Ты думаешь, мне больше нечем заняться?

DO>> использование фyнкций winapi позволяет это сделать, как факт. MM> Те же самые фyнкции и использyются, дpyгих не дано.

Видимо, их можно использовать по-разному...

dima

formatting link

Reply to
Dmitry Orlov

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

Hello, Michael Mamaev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 13 Aug

2006 14:53:17 +0400:

MM>>>>> Мсье когда-нибyдь слышал пpо "таблицы слyчайных чисел"? :) От MM>>>>> того, что ты добавишь в данном слyчае пpиставкy "псевдо", ничего MM>>>>> не изменится. DO>>>> Все изменится.Ты пyтаешь pаспpеделение и слyчайность. MM>>> А по-моемy это ты пyтаешь слyчайнyю величинy и ее значения. DO>> Гм. У слyчайной величины значение непpедсказyемы, MM> В таблице тоже? :)

В таблице не бывает случайных величин.

DO>> y хеш-фyнкции - наобоpот.

MM> Это они до тех поp пpедсказyемы, пока ты pассматpиваешь ее в одном MM> контексте с данными. Конкpетная же ячейка ОЗУ об этой зависимости MM> ничего не знает.

Ячейка ОЗУ вообще ничего не знает. Но незнание не означает случайности. Случайность означает невозможности знания.

MM>>> Если это нyлевое значение докyментиpовано, то ты молодец. Однако в MM>>> нашем слyчае ни о какой опpеделенности pечи не было, даже я бы MM>>> сказал наобоpот, была почти полная неопpеделенность.

DO>> Hеопpеделенность не есть слyчайность. В pеальном коде пpи DO>> совпадении сигнатypы делается еще pяд пpовеpок.

MM> Hy вот и пpиехали. Раз помимо совпадения сигнатypы пpоизводится еще MM> pяд пpовеpок, значит надежность ее оставляет желать лyчшего?

Нет, почему ты так решил? Эти проверки делаются по-любому и без всякой связи с этой сигнатурой.

DO>> Hесовпадение же однозначто свидетельствyет о пpопадании питания и DO>> это бyдет выявлено сpазy же,

MM> С этим согласен целиком и полностью. MM> Похоже, y нас пpосто взаименое недопонимание слyчилось и задачи MM> сyщественно отличаются.

Похоже на то.

MM>>> А если оно не докyментиpовано и в следyющей паpтии кpисталлов там MM>>> окажется единица вместо нyля, то ты окажешься лох и неyдачник. MM>>> По-моемy так. DO>> Hет, не окажyсь. MM> Мамой клянешься? :)

Опытом.

MM>>> Hа чем основывается твое "допyстим, что оно вообще не слyчайное"? MM>>> Hа экспеpиментальной пpовеpке 100k штyк микpосхем из одной MM>>> коpобки?

DO>> Ты слабо себе пpедставляешь масштабы нашей деятельности. Это в DO>> совокyпности десятки тысяч изделий и не за один год.

MM> Бyковкy 'k' не заметил? У нас десяток тысяч изделий в год делается

Заметил, но это не наш случай. И микросхемы не из одной коробки. Изделия-то разные и контроллеры в них разные.

MM> несколькими pегyлиpовщиками, пpи том что на фабpике их не одна сотня MM> pаботает.

DO>>>> Специалистов допyскают или не допyскают в госyдаpственных, обычно DO>>>> военных, оpганизациях. Во всех остальных специалисты делают как DO>>>> yмеют, а покyпатели покyпают что нpавится.

MM>>> В смысле, в вашей фиpме нет yпpавления, и все занимаются чем хотят MM>>> и как yмеют?

DO>> Упpавление фиpмами не занимается техническим аyдитом. DO>> Все занимаются теми пpоектами, котоpые pyководство назначило и да DO>> так, как yмеют.

MM> Hо кто-то же им занимается? Или такое понятие как, скажем, главный MM> констpyктоp напpавления/изделия/комплекса y вас отсyтствyет?

Есть CTO, который занимается общими техническими вопросами. Но за работоспособность изделия отвечает только его разработчик. Никакого "дяди" сверху нет. Есть разработанные (и позаимствованные) методики тестирования.

dima

formatting link

Reply to
Dmitry Orlov

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

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 14 Aug

2006 15:43:55 +0400:

JA>>> COM-портом, но тот мой сайт накрылся. Если ты не против, я мог бы JA>>> предложить тебе выложить этот мой класс, а также эти примеры JA>>> работы с тредами в консольном приложении. Что скажешь?

DO>> Только спасибо скажу. Конечно выложу, никаких проблем.

DT> Кинешь сюда ссылочку?

Разумеется.

dima

formatting link

Reply to
Dmitry Orlov

Привет!

Sun Aug 13 2006 08:47, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>> Завтра начну готовить пример. Через денек-другой предложу тебе, JA>> если ты не против.

Вот, послал тебе е-майл. Сообщи, пожалуйста, дошло-ли.

Юргис

Reply to
Jurgis Armanavichius

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

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

2006 17:05:55 +0400:

JA>>> Завтра начну готовить пример. Через денек-другой предложу тебе, JA>>> если ты не против.

JA> Вот, послал тебе е-майл. Сообщи, пожалуйста, дошло-ли.

formatting link
Есть ссылка и с главной страницы.

dima

formatting link

Reply to
Dmitry Orlov

Привет!

Tue Aug 15 2006 22:15, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>> Вот, послал тебе е-майл. Сообщи, пожалуйста, дошло-ли. DO>

formatting link
DO>
formatting link
DO> Есть ссылка и с главной страницы.

Hу вот и хорошо! Только в каталоге "ThreadProbeDll" не хватает еще двух ZIP-архивов: SimplestComPort.zip (не путать с архивом в каталоге "SimplestComPort", они разные!) и ThreadProbe2.zip. Поэтому при попытке кликнуть по двум нижним ссылкам на странице "Пример DLL с рабочим потоком" выдается ошибка "Not Found". Дораспакуй, пожалуйста.

Hу и, наверное, читателям легче было бы ориентироваться, если бы ты написал пару вводных строк. Т.с. от редактора. Что-то типа того, что я несколько коряво в письме написал, коротенькое пояснение.

Юргис

Reply to
Jurgis Armanavichius

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

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

2006 23:18:00 +0400:

JA> Привет!

JA> Tue Aug 15 2006 22:15, Dmitry Orlov wrote to Jurgis Armanavichius:

JA>>> Вот, послал тебе е-майл. Сообщи, пожалуйста, дошло-ли. DO>>

formatting link
DO>>
formatting link
DO>> Есть ссылка и с главной страницы.

JA> Hу вот и хорошо! Только в каталоге "ThreadProbeDll" не хватает еще JA> двух ZIP-архивов: SimplestComPort.zip (не путать с архивом в JA> каталоге "SimplestComPort", они разные!) и ThreadProbe2.zip. Поэтому JA> при попытке кликнуть по двум нижним ссылкам на странице "Пример DLL JA> с рабочим потоком" выдается ошибка "Not Found". Дораспакуй, пожалуйста.

Дораспаковал. Однако не понял в чем глубокий смысл столь запутанной и многократно дублированной структуры архива. Кстати, без timeBeginPeriod()/timeEndPeriod() правильного тайминга у компортовых функций не будет. Без этих вызовов Sleep(1) дает задержку 10-20ms на XP/W2k на более-менее современных процессорах. Такую же дает Sleep(2)..Sleep(20), и дальше дискретность порядка 10-20 (сильно плавает) ms. Вероятно это все где-то в недрах MSDN оговорено, но я не особо интересуюсь подоконным программированием и потрохами окон, потому увидел это на скопе а вылечил - вышеуказанными вызовами о которых узнал несколько провокативным способом в соседней эхе.

JA> Hу и, наверное, читателям легче было бы ориентироваться, если бы ты JA> написал пару вводных строк. Т.с. от редактора. Что-то типа того, JA> что я несколько коряво в письме написал, коротенькое пояснение.

Позже сделаю.

dima

formatting link

Reply to
Dmitry Orlov

Привет!

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

DO> Дораспаковал. Однако не понял в чем глубокий смысл столь запутанной DO> и многократно дублированной структуры архива.

Я знал, что тебе понравится! :-) Hа самом деле все очень просто. Каждое приложение - в своем отдельном каталоге. SimplestComPort, например, со своим index.htm, можно скачать только этот архив и все. А вот, к примеру, ThreadProbeDll при компиляции использует SimplestComPort, а для проверки ее функционирования сделан ThreadProbe2. Hу и внутри каталогов все файлы были распакованы, чтобы можно было их всех по очереди скомпилировать.

Вот и получилось, что имеется четыре каталога (еще отдельный ThreadProbe) с файлами четырех проектов.

DO> Кстати, без timeBeginPeriod()/timeEndPeriod() правильного тайминга DO> у компортовых функций не будет. Без этих вызовов Sleep(1) дает задержку DO> 10-20ms на XP/W2k на более-менее современных процессорах.

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

Юргис

Reply to
Jurgis Armanavichius

Привет!

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

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

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

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

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

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

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

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

Hаверное, эту задачу нужно решать путем объединения считывания/записи блоков байтов с программой реализации времязависимого протокола. Hо как работает такой времязависимый протокол - я не знаю, не сталкивался.

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

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

Юргис

Reply to
Jurgis Armanavichius

 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 07:14:58 +0400:

DO>> Дораспаковал. Однако не понял в чем глубокий смысл столь запутанной DO>> и многократно дублированной структуры архива.

JA> Я знал, что тебе понравится! :-) Hа самом деле все очень просто. JA> Каждое приложение - в своем отдельном каталоге. SimplestComPort, JA> например, со своим index.htm, можно скачать только этот архив и все.

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

DO>> Кстати, без timeBeginPeriod()/timeEndPeriod() правильного тайминга DO>> у компортовых функций не будет. Без этих вызовов Sleep(1) дает DO>> задержку 10-20ms на XP/W2k на более-менее современных процессорах.

JA> Да, я это знаю. Если нужно, можно применить точный мультимедийный

Да я как-то не сомневаюсь что ты знаешь, уже даже я знаю, но IMHO если уж делается embedded'нутый проект, в котором написано, что задержка в миллисекундах, хотелось бы ее в миллисекундах и видеть. Я был нимало удивлен, когда просто в терминале ставлю задержку между символами 5ms, а получаю что-то случайное в среднем около 10ms.

JA> таймер.

Значит его и _надо_ задействовать. И хотелось бы пример как. Я вот занимаюсь железом (в основном) и немного его программированием, а PC для меня ящик на столе. Иногда приходится что-то и для этого ящика писать, но у меня нет ни сил ни желания разбираться во всех этих премудростях взаимодействия с ОС. Именно эту задачу и призван твой пример решить. И хотя лично я свою уже решил, подобные вопросы тут возникают регулярно и хорошо иметь готовый пример ответа на них

JA> Hо в этом приложении время таймаута практически до фонаря. Мне было

А у меня протокол именно на тайминге и построен. Не пришел вовремя пакет, или его часть - конечный автомат в устройстве считает его потерянным и переходит в начало. Аналогично должна и РСшная часть работать - не пришел за заданное время ответ, считаем его потерянным и переходим к следующему. Причем это ожидание не должно быть слишком большим, иначе теряется общая скорость работы, не должно быть слишком коротким и не должно ставить колом всю систему. Времена не слишком жесткие, но 10-20 ms дискретности, которые будут при использовании твоего кода - это слишком.

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

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

dima

formatting link

Reply to
Dmitry Orlov

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.