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

May 26, 2006 Last reply: 20 years ago 51 Replies

 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

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.

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.

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

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.

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.

 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

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.

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.



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

Hi Dmitry!

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

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

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

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

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

Slav.

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.

 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

 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

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, s*it!"?

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

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

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

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

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

Slav.

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, s*it!"?

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.

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.

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.

 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

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.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required