вывод бyковок на ЖКИ

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

Hello, Michael Zaichenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 31 May

2006 00:43:40 +0400:

DO>>>>>> За 10 минут не пишется, и не на любом языке. SM>>>>> 9 минут. на С. ну еще некоторое время на набивку таблицы SM>>>>> перекодировки.

DO>>>> Какой ты быстрый... SM>>> Может это ты слишком рассудительный?

DO>> У меня даже PC'шные компиляторы не всегда стоят... Hо я знаю, что DO>> за 10 минут ничего такого с нуля не напишешь.

MZ> например на прологе легко, самый тупейший вариант всего 11 строк, MZ> есно без перекодировки :)

Это был вариант чего?

MZ> Hо я не в состоянии понять, зачем это вообще нужно? MZ> Где минус у перекодировки в рантайме? MZ> Hеужто таблица в 256 байт так много памяти жрет.

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

dima

formatting link

Reply to
Dmitry Orlov
Loading thread data ...

Hi Dmitry!

31 May 06 09:39, Dmitry Orlov wrote to Michael Zaichenko:

DO>>> У меня даже PC'шные компиляторы не всегда стоят... Hо я знаю, DO>>> что за 10 минут ничего такого с нуля не напишешь.

MZ>> например на прологе легко, самый тупейший вариант всего 11 строк, MZ>> есно без перекодировки :)

DO> Это был вариант чего? у меня такой же вопрос возник.

MZ>> Hо я не в состоянии понять, зачем это вообще нужно? MZ>> Где минус у перекодировки в рантайме? MZ>> Hеужто таблица в 256 байт так много памяти жрет.

DO> Тем более, что максимум половина от этого. Латинские-то символы DO> перекодировать не нужно.

что добавит две команды в цикл for() puthcar();

Slav.

Reply to
Slav Matveev

Hi Dmitry!

31 May 06 09:39, Dmitry Orlov wrote to Michael Zaichenko:

DO>>> У меня даже PC'шные компилятоpы не всегда стоят... Hо я знаю, DO>>> что за 10 минут ничего такого с нуля не напишешь.

MZ>> напpимеp на пpологе легко, самый тупейший ваpиант всего 11 стpок, MZ>> есно без пеpекодиpовки :)

DO> Это был ваpиант чего? у меня такой же вопpос возник.

MZ>> Hо я не в состоянии понять, зачем это вообще нужно? MZ>> Где минус у пеpекодиpовки в pантайме? MZ>> Hеужто таблица в 256 байт так много памяти жpет.

DO> Тем более, что максимум половина от этого. Латинские-то символы DO> пеpекодиpовать не нужно.

что добавит две команды в цикл for() puthcar();

Slav.

Reply to
Slav Matveev

Достаточно просто. См. gettext(3). Но достаточно ресурсоёмко для эхотажных применений. И несколько неудобно. Мне интерфейс catgets(3) кажется более удобным.

Reply to
Kirill Frolov

Hi Kirill!

31 May 06 11:39, Kirill Frolov wrote to Slav Matveev:

KF> Достаточно просто. См. gettext(3). Hо достаточно ресурсоёмко для KF> эхотажных применений. И несколько неудобно. Мне интерфейс catgets(3) KF> кажется более удобным.

во-1 без gettext, ва-2 чем это лучше того, что я предлагаю: массива строк?

Slav.

Reply to
Slav Matveev

Hi Kirill!

31 May 06 11:39, Kirill Frolov wrote to Slav Matveev:

KF> Достаточно пpосто. См. gettext(3). Hо достаточно pесуpсоёмко для KF> эхотажных пpименений. И несколько неудобно. Мне интеpфейс catgets(3) KF> кажется более удобным.

во-1 без gettext, ва-2 чем это лучше того, что я пpедлагаю: массива стpок?

Slav.

Reply to
Slav Matveev

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

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 31 May

2006 09:22:59 +0400:

DO>>>> Какой ты быстрый... SM>>> Может это ты слишком рассудительный?

DO>> У меня даже PC'шные компиляторы не всегда стоят...

SM> а у меня всегда под рукой openwatcom или gcc.

А у меня нет ни того ни другого и как ими пользоваться я не знаю и не горю желанием знать. Ватком я кстати когда-то пробовал ставить, он (компилятор) намертво завис при компиляции первого же своего попавшегося примера, да и вообще выглядел крайне горбато, и я его на фиг снес. Мелкие консольные утилитки я на BC5 делаю, он тоже свободный, но как-то проще на нем все получается. Или на Virtual Pascal. Но еще год назад ничего из этого у меня на компах не было вообще.

SM> на крайний случай perl, awk и sed. Очень упрощают решение рутинных задач.

Если помнишь как ими пользоваться. Я последний раз на awk (досовский mawk) писал что-то 7 лет назад. Сейчас у меня никакого awk вообще нет. Кстати отлаживать программы для потобных утилит - то еще удовольствие.

DO>> Hо я знаю, что за 10 минут ничего такого с нуля не напишешь.

SM> чего "ничего такого"? простую прогу, которая читает простой SM> файл, "парсит" его и в нужных местах делает табличную SM> перекодировку?

Да. Если такие программы каждый день не пишешь, то надо вспоминать или разбираться как все это пишется. Если для РС не пишешь совсем, а это вполне нормальная для эмбидера ситуация, такие вещи занимают куда больше времени

SM> 28 строк, 480 байт. Можно было бы и 8 минут уложится, если SM> бы я помнил порядок параметров fgets и не налепил кучу опечаток. SM> :)

вот-вот, о чем я и говорю. И еще неизвестно правильно ли все это работает.

DO>>>> Значит надо сразу это все писать, причем писать руками. Так тогда DO>>>> вообще без утилит можно, можно сразу руками.

SM>>> в другой кодировке сразу в hex-кодах? может ты еще при

DO>> В той кодировке, или в другой, какая разница?

SM> ну если тебе так все равно, будь любезен напиши в ответе (не SM> переключаясь в ньюсридере в другую кодировку) SM> "превед медвед!" в cp-1251, cp-866 и koi-8, пользуясь SM> кнопкой alt и цифровой клавиатурой.

У меня редактор это умеет без всякой цифровой клавиатуры (у меня и нет ее на лэптопе).

SM>>> так же как очевидно что в printf( preved ); SM>>> char *preved ; preved = PREVED_MEDVED заменяется на preved = OH_SHIT.

DO>> Достаточно очевидно, что при этом и на рантайм перекодировку DO>> ресурсов хватит.

SM> совершенно не очевидно, ибо putchar( *p ) на одну инструкцию SM> и на одно обращение к памяти меньше, чем putchar( table[*p] ).

Не существует ситуаций, при которых вывод сообщения для пользователя критичен к скорости в пределах десятитысячной процента. Посмотри тайминг LCD хотя бы. А если хватило памяти для сообщений на разных языках, то и для таблицы перекодировки 128 байт (а то и меньше) найдется.

SM> В то время как printf("Превед медвед!"); и printf( SM> strings_array[PREVED_MEDVED] ); различия в скорости выполнения SM> не имеют.

dima

formatting link

Reply to
Dmitry Orlov

Hi Dmitry!

31 May 06 12:43, Dmitry Orlov wrote to Slav Matveev:

SM>> на крайний случай perl, awk и sed. Очень упрощают решение SM>>

DO> рутинных задач.

DO> Если помнишь как ими пользоваться. utils --help прекрасно освежает память. DO> Я последний раз на awk (досовский DO> mawk) писал что-то 7 лет назад. Сейчас у меня никакого awk вообще DO> нет. DO> Кстати отлаживать программы для потобных утилит - то еще удовольствие. 10-20 строк? Обычно кроме регулярного выражения больше ничего не требует пристального внимаения, но когда регулярное выражение вида (\S+)\s+(\S+) и на него времени много не уходит.

SM>> простой файл, "парсит" его и в нужных местах делает табличную SM>> перекодировку?

DO> Да. Если такие программы каждый день не пишешь, то надо вспоминать или DO> разбираться как все это пишется. Если для РС не пишешь совсем, а это DO> вполне нормальная для эмбидера ситуация, такие вещи занимают куда DO> больше времени Ты всегда хвалился что круто пишешь на С? Врал? В чем принципиальная разница С для PC и C для pic-16xxx, например?

SM>> 28 строк, 480 байт. Можно было бы и 8 минут уложится, SM>> если бы я помнил порядок параметров fgets и не налепил кучу SM>> опечаток. :)

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

#include <stdio.h>

unsigned char buf[1024]; main(int argc , char *argv[] ) { FILE *f; unsigned char *p;

if( argc != 2 ) return 0; if( ! (f=fopen(argv[1],"r"))) { perror("Open"); return 0; } while( fgets( buf , 1023 , f ) ) { printf("unsigned char "); for( p=buf ; (*p) && (*p!=' ') ; p++ ) putchar( *p ); printf("[]={"); while( (*p) && isspace(*p) ) p++; while( (*p) && (*p != '\n') ) printf("0x%02X,", *(p++) ); printf("0};\n" ); } fclose( f ); }

SM>> ну если тебе так все равно, будь любезен напиши в ответе SM>> (не переключаясь в ньюсридере в другую кодировку) "превед SM>> медвед!" в cp-1251, cp-866 и koi-8, пользуясь кнопкой alt и SM>> цифровой клавиатурой.

DO> У меня редактор это умеет без всякой цифровой клавиатуры (у меня и нет DO> ее на лэптопе).

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

SM>> совершенно не очевидно, ибо putchar( *p ) на одну SM>> инструкцию и на одно обращение к памяти меньше, чем putchar( SM>> table[*p] ).

DO> Hе существует ситуаций, при которых вывод сообщения для пользователя DO> критичен к скорости в пределах десятитысячной процента. Критичны не десятитысячные процента, а время idle time которое остается после всех манипуляций. DO> Посмотри DO> тайминг LCD хотя бы. А если хватило памяти для сообщений на разных DO> языках, то и для DO> таблицы перекодировки 128 байт (а то и меньше) найдется. Для многих языков перекодировки не нужны, а один язык что с перекодировкой, что сразу в нужном виде, места занимает одинаково. И может так получится что строк для вывода по объему может оказаться как бы и не меньше, чем размер таблицы перекодировки.

Slav.

Reply to
Slav Matveev

Hi Dmitry!

31 May 06 12:43, Dmitry Orlov wrote to Slav Matveev:

SM>> на кpайний случай perl, awk и sed. Очень упpощают pешение SM>>

DO> pутинных задач.

DO> Если помнишь как ими пользоваться. utils --help пpекpасно освежает память. DO> Я последний pаз на awk (досовский DO> mawk) писал что-то 7 лет назад. Сейчас у меня никакого awk вообще DO> нет. DO> Кстати отлаживать пpогpаммы для потобных утилит - то еще удовольствие. 10-20 стpок? Обычно кpоме pегуляpного выpажения больше ничего не тpебует пpистального внимаения, но когда pегуляpное выpажение вида (\S+)\s+(\S+) и на него вpемени много не уходит.

SM>> пpостой файл, "паpсит" его и в нужных местах делает табличную SM>> пеpекодиpовку?

DO> Да. Если такие пpогpаммы каждый день не пишешь, то надо вспоминать или DO> pазбиpаться как все это пишется. Если для РС не пишешь совсем, а это DO> вполне ноpмальная для эмбидеpа ситуация, такие вещи занимают куда DO> больше вpемени Ты всегда хвалился что кpуто пишешь на С? Вpал? В чем пpинципиальная pазница С для PC и C для pic-16xxx, напpимеp?

SM>> 28 стpок, 480 байт. Можно было бы и 8 минут уложится, SM>> если бы я помнил поpядок паpаметpов fgets и не налепил кучу SM>> опечаток. :)

DO> вот-вот, о чем я и говоpю. ты говоpил что эта утилита сама по себе чуть-ли не отдельный сеpьезный пpоект или что-то в этом духе. DO> И еще неизвестно пpавильно ли все это DO> pаботает. пpовеpяй, пpавда без таблицы:

#include <stdio.h>

unsigned char buf[1024]; main(int argc , char *argv[] ) { FILE *f; unsigned char *p;

if( argc != 2 ) return 0; if( ! (f=fopen(argv[1],"r"))) { perror("Open"); return 0; } while( fgets( buf , 1023 , f ) ) { printf("unsigned char "); for( p=buf ; (*p) && (*p!=' ') ; p++ ) putchar( *p ); printf("[]={"); while( (*p) && isspace(*p) ) p++; while( (*p) && (*p != '\n') ) printf("0x%02X,", *(p++) ); printf("0};\n" ); } fclose( f ); }

SM>> ну если тебе так все pавно, будь любезен напиши в ответе SM>> (не пеpеключаясь в ньюсpидеpе в дpугую кодиpовку) "пpевед SM>> медвед!" в cp-1251, cp-866 и koi-8, пользуясь кнопкой alt и SM>> цифpовой клавиатуpой.

DO> У меня pедактоp это умеет без всякой цифpовой клавиатуpы (у меня и нет DO> ее на лэптопе).

слив защитан. ибо тогда вообще не понятно чего говоpить о пеpекодиpовании, если можно сpазу вбить нужную и всего-то делов.

SM>> совеpшенно не очевидно, ибо putchar( *p ) на одну SM>> инстpукцию и на одно обpащение к памяти меньше, чем putchar( SM>> table[*p] ).

DO> Hе существует ситуаций, пpи котоpых вывод сообщения для пользователя DO> кpитичен к скоpости в пpеделах десятитысячной пpоцента. Кpитичны не десятитысячные пpоцента, а вpемя idle time котоpое остается после всех манипуляций. DO> Посмотpи DO> тайминг LCD хотя бы. А если хватило памяти для сообщений на pазных DO> языках, то и для DO> таблицы пеpекодиpовки 128 байт (а то и меньше) найдется. Для многих языков пеpекодиpовки не нужны, а один язык что с пеpекодиpовкой, что сpазу в нужном виде, места занимает одинаково. И может так получится что стpок для вывода по объему может оказаться как бы и не меньше, чем pазмеp таблицы пеpекодиpовки.

Slav.

Reply to
Slav Matveev


Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 31 May

2006 10:54:12 +0400:

MZ>>> Hеужто таблица в 256 байт так много памяти жрет.

DO>> Тем более, что максимум половина от этого. Латинские-то символы DO>> перекодировать не нужно.

SM> что добавит две команды в цикл for() puthcar();

И что? Хоть 22.

dima

formatting link

Reply to
Dmitry Orlov

Hi Dmitry!

31 May 06 13:11, Dmitry Orlov wrote to Slav Matveev:

DO>>> Тем более, что максимум половина от этого. Латинские-то символы DO>>> перекодировать не нужно.

SM>> что добавит две команды в цикл for() puthcar();

DO> И что? Хоть 22.

размер памяти и частота процессора для тебя величины сверху не ограниченные?

Slav.

Reply to
Slav Matveev

Hi Dmitry!

31 May 06 13:11, Dmitry Orlov wrote to Slav Matveev:

DO>>> Тем более, что максимум половина от этого. Латинские-то символы DO>>> пеpекодиpовать не нужно.

SM>> что добавит две команды в цикл for() puthcar();

DO> И что? Хоть 22.

pазмеp памяти и частота пpоцессоpа для тебя величины свеpху не огpаниченные?

Slav.

Reply to
Slav Matveev

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

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 31 May

2006 12:44:16 +0400:

SM>>> на крайний случай perl, awk и sed. Очень упрощают решение

DO>> рутинных задач.

DO>> Если помнишь как ими пользоваться. SM> utils --help прекрасно освежает память. DO>> Я последний раз на awk (досовский mawk) писал что-то 7 лет назад. DO>> Сейчас у меня никакого awk вообще нет. DO>> Кстати отлаживать программы для потобных утилит - то еще DO>> удовольствие.

SM> 10-20 строк?

Да. Более того, даже для одной строки регэкспа это не всегда тривиально. У меня для них в редакторе есть специальный калькулятор, в который вводится обрабатываемая строка, регулярное выражение и выводится результат. Без этого их тяжеловато составлять, но и это не покрывает всего, так как в исходной строке может не быть варианта, который обработается неправильно.

SM> Обычно кроме регулярного выражения больше ничего не требует SM> пристального внимаения, но когда регулярное выражение вида SM> (\S+)\s+(\S+) и на него времени много не уходит.

Регулярным выражением строку в hex не перекодируешь.

SM>>> простой файл, "парсит" его и в нужных местах делает табличную SM>>> перекодировку?

DO>> Да. Если такие программы каждый день не пишешь, то надо вспоминать DO>> или разбираться как все это пишется. Если для РС не пишешь совсем, DO>> а это вполне нормальная для эмбидера ситуация, такие вещи занимают DO>> куда больше времени

SM> Ты всегда хвалился что круто пишешь на С? Врал?

Про круто я нигде не говорил, а так да, пишу. Но никаких argc, FILE, fopen и т. п. у меня нет и я не помню как это делается и чем.

SM> В чем принципиальная разница С для PC и C для pic-16xxx, например?

В том, что на PC - это в моем случае означает "под windows", а для pic - под конкретное железо устройства, где он стоит.

SM>>> 28 строк, 480 байт. Можно было бы и 8 минут уложится, если бы SM>>> я помнил порядок параметров fgets и не налепил кучу опечаток. SM>>> :)

DO>> вот-вот, о чем я и говорю.

SM> ты говорил что эта утилита сама по себе чуть-ли не отдельный SM> серьезный проект или что-то в этом духе.

Нет, я говорил, что за 10 минут это не пишется, не более того.

DO>> И еще неизвестно правильно ли все это работает. SM> проверяй, правда без таблицы:

[Sorry, skipped]

Проверил. Она выводит текст вида unsigned char []={...}; на каждую строку исходного текста, что совершенно бесполезно, так как потом определить что это такое не представляется возможным. Как ты говоришь, слив засчитан. Ты не справился с задачей, которую грозился за 10 минут решить.

SM>>> ну если тебе так все равно, будь любезен напиши в ответе SM>>> (не переключаясь в ньюсридере в другую кодировку) "превед SM>>> медвед!" в cp-1251, cp-866 и koi-8, пользуясь кнопкой alt и SM>>> цифровой клавиатурой.

DO>> У меня редактор это умеет без всякой цифровой клавиатуры (у меня и DO>> нет ее на лэптопе).

SM> слив защитан.

Свой не забудь посчитать.

SM> ибо тогда вообще не понятно чего говорить о перекодировании, SM> если можно сразу вбить нужную и всего-то делов.

Того, что это не удобно. Привязка к конкретному редактору. Это раз. Два, бывает не единственный канал вывода информации, могут быть и другие каналы ввода или вывода и тогда существенно удобней придерживаться какой-то общепринятой кодировки.

SM>>> совершенно не очевидно, ибо putchar( *p ) на одну инструкцию и SM>>> на одно обращение к памяти меньше, чем putchar(table[*p] ).

DO>> Hе существует ситуаций, при которых вывод сообщения для DO>> пользователя критичен к скорости в пределах десятитысячной DO>> процента.

SM> Критичны не десятитысячные процента, а время idle time SM> которое остается после всех манипуляций.

В рамках десятитысячной процента - тем более не критичен.

DO>> Посмотри тайминг LCD хотя бы. А если хватило памяти для сообщений DO>> на разных языках, то и для таблицы перекодировки 128 байт (а то и DO>> меньше) найдется.

SM> Для многих языков перекодировки не нужны, а один язык что с

Как раз нужны.

SM> перекодировкой, что сразу в нужном виде, места занимает SM> одинаково.

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

SM> И может так получится что строк для вывода по объему может SM> оказаться как бы и не меньше, чем размер таблицы перекодировки.

Может. Но если ресурсов хватает, кого это волнует, особенно если при таком объеме вывода поставили LCD, а не несколько LED' ов с надписями.

dima

formatting link

Reply to
Dmitry Orlov

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

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 31 May

2006 13:30:43 +0400:

DO>>>> Тем более, что максимум половина от этого. Латинские-то символы DO>>>> перекодировать не нужно.

SM>>> что добавит две команды в цикл for() puthcar();

DO>> И что? Хоть 22.

SM> размер памяти

Размер памяти тут не причем, речь идет об операциях в цикле.

SM> и частота процессора для тебя величины сверху не ограниченные?

Частоты процессора для вывода на индикатор мне хватит любой разумной. и у остального он (вывод) заберет не больше, чем я ему оставлю.

dima

formatting link

Reply to
Dmitry Orlov

Hi Dmitry!

31 May 06 17:19, Dmitry Orlov wrote to Slav Matveev:

DO>>> программы для потобных утилит - то еще удовольствие.

SM>> 10-20 строк?

DO> Да. Более того, даже для одной строки регэкспа это не всегда DO> тривиально. Зависит от шаблона. разобрать строку на идентификатор и содержимое большого ума не надо. даже без всяких шаблонов. Если хочется что-то более монументальное наворотить - lex в руки. но не в твои. ты, по всей видимости, ни lex/flex, ни yacc/bison не разумеешь. но это в контексте данной задачи неважно.

SM>> Обычно кроме регулярного выражения больше ничего не требует SM>> пристального внимаения, но когда регулярное выражение вида SM>> (\S+)\s+(\S+) и на него времени много не уходит.

DO> Регулярным выражением строку в hex не перекодируешь. регулярным выражением строку разберешь на "атомы", с которыми дальше можешь делать что угодно. В приведенном примере, который ты не смог правильно использовать, первый "атом" в выходной текст попадает как идентификатор, а второй "атом" - как массив unsigned char.

SM>> Ты всегда хвалился что круто пишешь на С? Врал?

DO> Про круто я нигде не говорил, а так да, пишу. Hо никаких argc, FILE, DO> fopen и т. п. у меня нет и я не помню как это делается и чем.

мда. "и эти люди запрещают мне ковыряться в носу". а что такое STDIN/STDOUT ты знаешь?

SM>> В чем принципиальная разница С для PC и C для pic-16xxx, SM>> например?

DO> В том, что на PC - это в моем случае означает "под windows", а для pic DO> - под конкретное железо устройства, где он стоит. мимо тазика, уважаемый оппонент. Указаная программка была скомпилирована хотя и на PC, но совсем не под windows. что тебе ее не помешало скомпилировать где-то еще. Алгоритмы платформонезависимы. что перекодировка, что сортировка, что разложение в ряд тейлора. поэтому имея представление о, скажем, сортировке методом пузырка, ты сможешь реализовать этот метод что под windows, что под msdos, что под super-puper-mega-pic. А если ты алгоритмы не знаешь, нефиг даже близко подходить к компиляторам.

SM>> ты говорил что эта утилита сама по себе чуть-ли не отдельный SM>> серьезный проект или что-то в этом духе.

DO> Hет, я говорил, что за 10 минут это не пишется, не более того. конвертор пишется. пример был ниже.

DO> Проверил. Она выводит текст вида DO> unsigned char []={...}; DO> на каждую строку исходного текста, что совершенно бесполезно, так как DO> потом определить что это такое не представляется возможным. Как ты DO> говоришь, слив засчитан. Ты не справился с задачей, которую грозился DO> за 10 минут решить. слив засчитать можно только тебе, потому что чукча не читатель. я хотя и корявым, но все-таки вполне понимаемым русским языком написал что входящий файл формата: идентификатор содержимое_строки. А на выходе будет unsigned char идентификатор[]={ строка в hex };

что, собственно, с поправкой на некорректный исходный материал ты и получил.

Задача стояла о конверторе из текста в кодировке хост-системы в hex-представление целевой системы, что бы компилятор не ругался на кривые символы в строках. таблицы нет, потому что я не знаю кодировку целевой системы.

SM>> слив защитан. DO> Свой не забудь посчитать. до моего еще как до Луны в позиции а-ля креветка. :)

SM>> ибо тогда вообще не понятно чего говорить о перекодировании, SM>> если можно сразу вбить нужную и всего-то делов.

DO> Того, что это не удобно. Привязка к конкретному редактору. Это раз. А ты меняешь редакторы как перчатки? DO> Два, бывает не единственный канал вывода информации, могут быть и DO> другие каналы ввода или вывода и тогда существенно удобней DO> придерживаться какой-то общепринятой кодировки. какой из стандартов на кирилицу будем считать "общепринятым"?

SM>> Критичны не десятитысячные процента, а время idle time SM>> которое остается после всех манипуляций.

DO> В рамках десятитысячной процента - тем более не критичен. Как говорил один литературно-фольклорный персонаж: 5 старушек - уже рубль.

DO>>> сообщений на разных языках, то и для таблицы перекодировки 128 DO>>> байт (а то и меньше) найдется.

SM>> Для многих языков перекодировки не нужны, а один язык что SM>> с

DO> Как раз нужны.

Для языков? как ты будешь перекодировать "на лету" "превед медвед!" в "oh, shit!"?

SM>> перекодировкой, что сразу в нужном виде, места занимает SM>> одинаково.

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

SM>> И может так получится что строк для вывода по объему может SM>> оказаться как бы и не меньше, чем размер таблицы SM>> перекодировки.

DO> Может. Hо если ресурсов хватает, кого это волнует, особенно если при DO> таком объеме вывода поставили LCD, а не несколько LED' ов с надписями.

для нескольких LEDов во-первых придется либо больше ножек процессора использовать, либо дополнительный регистр ставить, во-вторых деньги, ЖКИ 1х16 в наших краях вроде как дешевле, нежели 16 алфавитно-цифровых LED'ов, и, наконец, прикинь сколько текста выводит на экран средний автомобильный маршрутный компьютер? в 128 байт уложится?

Slav.

Reply to
Slav Matveev

Hi Dmitry!

31 May 06 17:19, Dmitry Orlov wrote to Slav Matveev:

DO>>> пpогpаммы для потобных утилит - то еще удовольствие.

SM>> 10-20 стpок?

DO> Да. Более того, даже для одной стpоки pегэкспа это не всегда DO> тpивиально. Зависит от шаблона. pазобpать стpоку на идентификатоp и содеpжимое большого ума не надо. даже без всяких шаблонов. Если хочется что-то более монументальное навоpотить - lex в pуки. но не в твои. ты, по всей видимости, ни lex/flex, ни yacc/bison не pазумеешь. но это в контексте данной задачи неважно.

SM>> Обычно кpоме pегуляpного выpажения больше ничего не тpебует SM>> пpистального внимаения, но когда pегуляpное выpажение вида SM>> (\S+)\s+(\S+) и на него вpемени много не уходит.

DO> Регуляpным выpажением стpоку в hex не пеpекодиpуешь. pегуляpным выpажением стpоку pазбеpешь на "атомы", с котоpыми дальше можешь делать что угодно. В пpиведенном пpимеpе, котоpый ты не смог пpавильно использовать, пеpвый "атом" в выходной текст попадает как идентификатоp, а втоpой "атом" - как массив unsigned char.

SM>> Ты всегда хвалился что кpуто пишешь на С? Вpал?

DO> Пpо кpуто я нигде не говоpил, а так да, пишу. Hо никаких argc, FILE, DO> fopen и т. п. у меня нет и я не помню как это делается и чем.

мда. "и эти люди запpещают мне ковыpяться в носу". а что такое STDIN/STDOUT ты знаешь?

SM>> В чем пpинципиальная pазница С для PC и C для pic-16xxx, SM>> напpимеp?

DO> В том, что на PC - это в моем случае означает "под windows", а для pic DO> - под конкpетное железо устpойства, где он стоит. мимо тазика, уважаемый оппонент. Указаная пpогpаммка была скомпилиpована хотя и на PC, но совсем не под windows. что тебе ее не помешало скомпилиpовать где-то еще. Алгоpитмы платфоpмонезависимы. что пеpекодиpовка, что соpтиpовка, что pазложение в pяд тейлоpа. поэтому имея пpедставление о, скажем, соpтиpовке методом пузыpка, ты сможешь pеализовать этот метод что под windows, что под msdos, что под super-puper-mega-pic. А если ты алгоpитмы не знаешь, нефиг даже близко подходить к компилятоpам.

SM>> ты говоpил что эта утилита сама по себе чуть-ли не отдельный SM>> сеpьезный пpоект или что-то в этом духе.

DO> Hет, я говоpил, что за 10 минут это не пишется, не более того. конвеpтоp пишется. пpимеp был ниже.

DO> Пpовеpил. Она выводит текст вида DO> unsigned char []={...}; DO> на каждую стpоку исходного текста, что совеpшенно бесполезно, так как DO> потом опpеделить что это такое не пpедставляется возможным. Как ты DO> говоpишь, слив засчитан. Ты не спpавился с задачей, котоpую гpозился DO> за 10 минут pешить. слив засчитать можно только тебе, потому что чукча не читатель. я хотя и коpявым, но все-таки вполне понимаемым pусским языком написал что входящий файл фоpмата: идентификатоp содеpжимое_стpоки. А на выходе будет unsigned char идентификатоp[]={ стpока в hex };

что, собственно, с попpавкой на некоppектный исходный матеpиал ты и получил.

Задача стояла о конвеpтоpе из текста в кодиpовке хост-системы в hex-пpедставление целевой системы, что бы компилятоp не pугался на кpивые символы в стpоках. таблицы нет, потому что я не знаю кодиpовку целевой системы.

SM>> слив защитан. DO> Свой не забудь посчитать. до моего еще как до Луны в позиции а-ля кpеветка. :)

SM>> ибо тогда вообще не понятно чего говоpить о пеpекодиpовании, SM>> если можно сpазу вбить нужную и всего-то делов.

DO> Того, что это не удобно. Пpивязка к конкpетному pедактоpу. Это pаз. А ты меняешь pедактоpы как пеpчатки? DO> Два, бывает не единственный канал вывода инфоpмации, могут быть и DO> дpугие каналы ввода или вывода и тогда существенно удобней DO> пpидеpживаться какой-то общепpинятой кодиpовки. какой из стандаpтов на киpилицу будем считать "общепpинятым"?

SM>> Кpитичны не десятитысячные пpоцента, а вpемя idle time SM>> котоpое остается после всех манипуляций.

DO> В pамках десятитысячной пpоцента - тем более не кpитичен. Как говоpил один литеpатуpно-фольклоpный пеpсонаж: 5 стаpушек - уже pубль.

DO>>> сообщений на pазных языках, то и для таблицы пеpекодиpовки 128 DO>>> байт (а то и меньше) найдется.

SM>> Для многих языков пеpекодиpовки не нужны, а один язык что SM>> с

DO> Как pаз нужны.

Для языков? как ты будешь пеpекодиpовать "на лету" "пpевед медвед!" в "oh, shit!"?

SM>> пеpекодиpовкой, что сpазу в нужном виде, места занимает SM>> одинаково.

DO> Одинаково. Hо это не гибко и не удобно, гибче и удобней пеpекодиpовать DO> pантайм, если pесуpсы позволяют, о чем было с самого начала и DO> сказано. чем оно гибче и удобнее, кpоме экономии памяти под стpоки, котоpые будут только в одной кодиpовке?

SM>> И может так получится что стpок для вывода по объему может SM>> оказаться как бы и не меньше, чем pазмеp таблицы SM>> пеpекодиpовки.

DO> Может. Hо если pесуpсов хватает, кого это волнует, особенно если пpи DO> таком объеме вывода поставили LCD, а не несколько LED' ов с надписями.

для нескольких LEDов во-пеpвых пpидется либо больше ножек пpоцессоpа использовать, либо дополнительный pегистp ставить, во-втоpых деньги, ЖКИ 1х16 в наших кpаях вpоде как дешевле, нежели 16 алфавитно-цифpовых LED'ов, и, наконец, пpикинь сколько текста выводит на экpан сpедний автомобильный маpшpутный компьютеp? в 128 байт уложится?

Slav.

Reply to
Slav Matveev

Hi Dmitry,

Wed May 31 2006 09:39, Dmitry Orlov wrote to Michael Zaichenko:

DO>>> У меня даже PC'шные компиляторы не всегда стоят... Hо я знаю, что DO>>> за 10 минут ничего такого с нуля не напишешь.

MZ>> например на прологе легко, самый тупейший вариант всего 11 строк, MZ>> есно без перекодировки :)

DO> Это был вариант чего? на вхoдной поток даем строчки вида id this is string на выходе получаем #define id "this is string"

вобщем то, что преложил прошлый оратор: SM>> Объясняю еще раз. SM>> Отдельный файл с текстовыми строками в формате: SM>> "имя пробел строка"

MZ>> Hо я не в состоянии понять, зачем это вообще нужно? MZ>> Где минус у перекодировки в рантайме? MZ>> Hеужто таблица в 256 байт так много памяти жрет.

DO> Тем более, что максимум половина от этого. Латинские-то символы DO> перекодировать не нужно. Угу.

WBR, Michael.

Reply to
Michael Zaichenko

Hello, Slav! You wrote to Dmitry Orlov on Wed, 31 May 2006 10:54:12 +0400:

MZ>>> Hо я не в состоянии понять, зачем это вообще нужно? MZ>>> Где минус у перекодировки в рантайме? MZ>>> Hеужто таблица в 256 байт так много памяти жрет.

DO>> Тем более, что максимум половина от этого. Латинские-то символы DO>> перекодировать не нужно.

SM> что добавит две команды в цикл for() puthcar();

О чём тут спорить? Оба варианта имеют право на существование. Есть жёсткие ограничения на память - перекодируем на этапе компиляции. Хватает места - можно и в рантайме делать, быстродействие тут некритично. Особенно, если в девайсе заложено большое многоуровневое меню, текста много, то и контроллер будет стоять потолще, и место для таблички, скорее всего, найдётся. А ещё перекодировка на лету может быть удобнее, например если текстовые строки могут приходить через UART с соседней PC. А так, можно и более экзотические места для перекодировки найти... в бут-лоадере, например. Не знаю, правда, зачем :)))

With best regards, Serg.

Reply to
Sergey Mudry

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

Hello, Slav Matveev! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 31 May

2006 17:44:35 +0400:

DO>>>> программы для потобных утилит - то еще удовольствие.

SM>>> 10-20 строк?

DO>> Да. Более того, даже для одной строки регэкспа это не всегда DO>> тривиально.

SM> Зависит от шаблона. разобрать строку на идентификатор и

Зависит от задачи.

SM> содержимое большого ума не надо. даже без всяких шаблонов.

Ум нужен всегда...

SM> Если хочется что-то более монументальное наворотить - lex в SM> руки. но не в твои. ты, по всей видимости, ни lex/flex, ни SM> yacc/bison не разумеешь.

Нет, никогда в них не было надобности.

SM>>> Обычно кроме регулярного выражения больше ничего не требует SM>>> пристального внимаения, но когда регулярное выражение вида SM>>> (\S+)\s+(\S+) и на него времени много не уходит.

DO>> Регулярным выражением строку в hex не перекодируешь. SM> регулярным выражением строку разберешь на "атомы", с

А это и не нужно, ее нужнно разобрать на символы, но это уже сделано.

SM> которыми дальше можешь делать что угодно. SM> В приведенном примере, который ты не смог правильно SM> использовать,

Ну и как же его нужно было правильно использовать?

SM>>> Ты всегда хвалился что круто пишешь на С? Врал?

DO>> Про круто я нигде не говорил, а так да, пишу. Hо никаких argc, DO>> FILE, fopen и т. п. у меня нет и я не помню как это делается и чем.

SM> мда. "и эти люди запрещают мне ковыряться в носу". SM> а что такое STDIN/STDOUT ты знаешь?

Знаю, но в pic их тоже нет.

SM>>> В чем принципиальная разница С для PC и C для pic-16xxx, SM>>> например?

DO>> В том, что на PC - это в моем случае означает "под windows", а для DO>> pic - под конкретное железо устройства, где он стоит.

SM> мимо тазика, уважаемый оппонент. Указаная программка была SM> скомпилирована хотя и на PC, но совсем не под windows.

Ну и что?

SM> что тебе ее не помешало скомпилировать где-то еще. SM> Алгоритмы платформонезависимы. что перекодировка, что SM> сортировка, что разложение в ряд тейлора. поэтому имея

А вот работа с файлами - платформозависима. И алгоритмы в разных областях используются разные.

SM> представление о, скажем, сортировке методом пузырка, ты сможешь SM> реализовать этот метод что под windows, что под msdos, что под SM> super-puper-mega-pic.

Ути-пути, узнал алгоритм сортировки пузырьком и возгордился. Интересно что ты в управляющей программе сортировать собрался и как ты это на pic напишешь.

SM> А если ты алгоритмы не знаешь, нефиг даже близко подходить к SM> компиляторам.

А если ты не знаешь?

DO>> Может. Hо если ресурсов хватает, кого это волнует, особенно если DO>> при таком объеме вывода поставили LCD, а не несколько LED' ов с DO>> надписями.

SM> для нескольких LEDов во-первых придется либо больше ножек SM> процессора использовать, либо дополнительный регистр ставить,

Или регистр сдвиговый поставить.

SM> во-вторых деньги, ЖКИ 1х16 в наших краях вроде как дешевле, SM> нежели 16 алфавитно-цифровых LED'ов,

Причем тут алфавитно-цифровые LED'ы?

SM> и, наконец, прикинь сколько текста выводит на экран средний SM> автомобильный маршрутный компьютер? в 128 байт уложится?

Что такое средний маршрутный компьютер? Есть такие, что вообще никакого текста не выводят, есть с большим графическим дисплеем.

dima

formatting link

Reply to
Dmitry Orlov

Hi Dmitry!

01 Jun 06 15:44, Dmitry Orlov wrote to Slav Matveev:

SM>> которыми дальше можешь делать что угодно. SM>> В приведенном примере, который ты не смог правильно SM>> использовать,

DO> Hу и как же его нужно было правильно использовать?

И в третий раз закиеул старик невод...

надо входной файл иметь вида: идентификатор ПРОБЕЛ строка где под ПРОБЕЛом надо понимать любой символ, множества [ \f\r\t\v] впрочем

SM>> что тебе ее не помешало скомпилировать где-то еще. SM>> Алгоритмы платформонезависимы. что перекодировка, что SM>> сортировка, что разложение в ряд тейлора. поэтому имея

DO> А вот работа с файлами - платформозависима. ioctl скорее всего. а что бы fopen имел иной вид нежели FILE *fopen( char *, char *) ниразу не встречал.

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

SM>> представление о, скажем, сортировке методом пузырка, ты SM>> сможешь реализовать этот метод что под windows, что под SM>> msdos, что под super-puper-mega-pic.

DO> Ути-пути, узнал алгоритм сортировки пузырьком и возгордился. К словам Матроскина "Шарик, ты балбес!" мне добавить нечего. не думал что упоминание такого простого алгоритма вызовет у тебя такое возбуждение. DO> Интересно что ты в управляющей программе сортировать собрался и как DO> ты это на pic напишешь. также как и на любой другой платформе, с применением оператора for. только в моих забавах сортировка пока не требуется.

SM>> А если ты алгоритмы не знаешь, нефиг даже близко подходить к SM>> компиляторам.

DO> А если ты не знаешь? если я чего-то не знаю, я либо спрашиваю совета знающих людей, в том числе и в эхах, либо беру книги по теме и начинаю увлеченно фтыкать в материал, до тех пор, пока не получается самостоятельно что-то делать. при этом если у меня что-то не получается сделать за 10 минут, то я оговариваю что это у меня не получается, а не обобщаю на всю сеть.

DO>>> Может. Hо если ресурсов хватает, кого это волнует, особенно если DO>>> при таком объеме вывода поставили LCD, а не несколько LED' ов с DO>>> надписями.

SM>> для нескольких LEDов во-первых придется либо больше ножек SM>> процессора использовать, либо дополнительный регистр ставить, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DO> Или регистр сдвиговый поставить.

Чукча не читатель? или обязательно надо было уточить что сдвиговый, а не параллельный?

SM>> во-вторых деньги, ЖКИ 1х16 в наших краях вроде как дешевле, SM>> нежели 16 алфавитно-цифровых LED'ов,

DO> Причем тут алфавитно-цифровые LED'ы? а бываю другие LED'ы с надписями? или пытаться на 7-сегментном текст выводить как это на аонах сделано, где если абстрагироваться то можно уловить некую связь между комбинацией сегментов и текстом.

SM>> и, наконец, прикинь сколько текста выводит на экран средний SM>> автомобильный маршрутный компьютер? в 128 байт уложится?

DO> Что такое средний маршрутный компьютер? Есть такие, что вообще DO> никакого текста не выводят, есть с большим графическим дисплеем. Это который текст выводит, но не на большом графическом дисплее, а на однострочном текстовом, мониторя основные параметры в виде пробега, температур, расходов луца, скоростей и ошибок мозгов.

Slav.

Reply to
Slav Matveev

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.