Помогите новичку

Applications development, KoOS API questions
  • Драйвер не клавиатуры, а, предположим, сенсорный дисплей у холодильника... ВесЧь. Да и клавиатура тоже нужна - т.к. управление будет производиться если не с обычной АТ, так с какой-то ?). Именно ОС должнау4правлять температурой внутри мерзлого ящика, я думаю. И графическая подсистема ой как нужна будет.
  • Ну, тогда имеет смысл использовать Колибри. Планы развития у нас есть.
  • path_of_milea wrote:Да для начала GUI не нужен, а потом может понадобится, вместе с сенсорным экраном. Чтобы выбирать разные режимы работы ит.д.
    А зачем тогда вам вообще OS в таких дивайсах? Зашейте в ПЗУ набор некий набор функций и шел для аксеса к ним (типа на экране мониторчика: "нажмите 1 для установки температуры" потом "введите температуру" и т.д. и т.п.). Суть OS в том что-бы обеспечить API и диспетчирезацию пользовательских процессов. Говоря более простым языком суть ОС в том что-бы могли работать обычные прикладные программы. Если у вас в холодильнике огромное кол-во функций и каждая их них управляется определенной программой со специфпическими алгоритмами (которые будут всевремя изменятся) тогда вам нужна ОС, иначе будет только ущерб, излишняя загрузка аппаратуры и т.д.
    Для компьютера OS нужна т.к. конечный обьем задачь которые он будет выполнять невозможно определить (и для телефонов сейчас тоже, ибо на них запускают игры лазят по интернету и т.д.). Почему-то мне не верится что невозможно определить конечный список задачь для холодильника или скажем кухонной плиты.
    Если бы строители строили здания, так же как программисты пишут программы первый же залетевший дятел разрушил бы цивилизацию.
  • Я начал писать программу на MS Visual C++ 6.0 и столкнулся с некоторыми проблемами.
    1. Как выводить все кнопки не 3Д (с переходом цвета), а плоскими (flat, одноцветными)?
    Пример:
    kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
    kos_DefineButton(197,64,368,18,23,0xFFFFFF);
    Что необходимо изменить?

    2. Как правильно обрабатывать нажатие кнопки?
    Вот так?

    Code: Select all

    			kos_GetButtonID(id)
    			if (id=21){
    									path[] = "))))";
    			}
    			else
    			{
    									path[] = "(((((";
    			};
    			draw_window();
    			break;
    Заранее спасибо.
    Из хаоса в космос
  • Code: Select all

             kos_GetButtonID(id)
             if (id=21){    << здесь должно быть (id == 21)
    
    Лучше сделай switch(id). Если кнопок много он удобнее.
  • to Leency
    Вынужден тебя огорчить - просто так не получится. Дело в том, что стиль кнопок (3D или плоские) задаётся общесистемной функцией. Если надо рисовать не по-умолчанию, то при объявлении кнопки нужно ей дать стиль "не рисовать", а затем в нужном месте соответствующими функциями дорисовывать прямоугольник, текст и всё остальное, как это сделать написано в sysfuncr.txt. Точнее сказать не могу, давно в коде не копался.
  • Что ж это за требования, куда Колибри подходит а linux нет?
    Видимо вы не все дистрибутивы линукса видели. Да и собрать свой для нужных целей - не проблема(если есть определенные знания в этой области).
    Линукс - это консоль. Командная строка. А все ли умеют таким образом работать? Я вот ни за что не сяду ни за MS DOS, ни за Linux (кроме разве что Ubuntu, Mandriva или что-то в этом роде - я говорю о традиционном линуксе, а не о его серьёзных модификациях, дизайном и решениями близких к Windows). Ненавижу консоли. Редко использую сочетания клавиш (мышь роднее). И если бы это только одного меня касалась. Научите среднюю секретаршу или контролёра завода какого-нибудь пользоваться линуксом :D много поплачите :twisted: :x :( :P.
    Колибри, как ни крути, всё-таки графическая система. И это намного удобнее. Удобней щёлкнуть мышью по кнопке, чем набирать в командной строке всякую аброкадабру, которую ещё и вызубрить надо заранее... Любой ламер со мной согласится...
    С одной стороны всё вроде есть и работает, а когда внимательно присмотришься увидишь что "тут надо напильником подправить, а там кувалдой подрихтовать".
    При детальном рассморении кода ядра приходишь к выводу, что для приведения его к "нормальному" виду нужно переписать более половины системы.
    Существует работа по исправлению логических ошибок, однако она проводитсья силами энтузиастов. Обычно это все затягивается или остается недоделанным. Тем не менее ядро развивается, изменятся...
    Предлагаю составить список необходимых изменений и вывесить на видном месте...

    P.S. А кроме холодильников ещё есть сложные кондиционеры и регуляторы микроклимата в промышленных теплицах, складах продовольствия, архивах.
  • Вот исходник: http://kolibri-os.narod.ru/files/temp/vc.zip

    1. Почему при нажатии любой клавиши программа закрывается?
    2. Как вставить изображение? Пожалуйста, "засуньте" в исходник любое изображение и выведете его на форму (в окно). Мне нужен пример. Спасибо.
    Из хаоса в космос
  • Астроноид wrote: Линукс - это консоль. Командная строка. А все ли умеют таким образом работать? Я вот ни за что не сяду ни за MS DOS, ни за Linux (кроме разве что Ubuntu, Mandriva или что-то в этом роде - я говорю о традиционном линуксе, а не о его серьёзных модификациях, дизайном и решениями близких к Windows).
    Линукс - это ядро!!!!!!!!
    Консоль/команданя строка/работа в текстовом режиме/т.п. - это только интерфейс, способ взаимодействия пользователя с системой.
    Ubuntu/Mandriva/etc - серьезные модификации??? Здрасте...это дистрибутивы линукса. Какие дизайны и решения близкие к Windows?
    А ты слышал про famebuffer? У меня на линуксе настроен vesafb, у меня консоль графическая (кстати как и в колибри юзается та же VESA). Я в консоли могу через mplayer видео смотреть, lynx картинки на сайтах показывает. Даже есть оконные менджеры под fb. Пожалуйста, ставь и юзай на здоровье. qt и gtk ты не заюзаешь конечно, для них нужен Xserver, но для fb есть другой софт.

    Так что извини, но ты просто не знаешь про что пишешь...
  • Извините, парни, но вы развели оффтоп.
    Я реальное что-то хочу сделать и получить помощь, а вы тут о Линуксах.
    Из хаоса в космос
  • Leency

    Я знаю только один способ, как подключить изображение к программе на C. Это преобразовать файл в массив типа unsigned char тоесть в массив вида:

    Code: Select all

    unsigned char picture[]={ 1,2,.....};
    Нужно написать мини программу которая преобразует картинку в текстовый файл с массивом. Я таким образом делал для подключения растровых шрифтов к моей научной программе, написанной на C.
    KolibriOS-перспективная ос!
    Kolibri is best operation system in the world!
  • Ещё графический редактор GIMP умеет сохранять картинки в подключаемые файлы(расширение h ). Вот пример начала такого файла:

    Code: Select all

    /*  GIMP header image file format (RGB): /home/andrew/Documents/picture.h  */
    
    static unsigned int width = 468;
    static unsigned int height = 240;
    
    /*  Call this macro repeatedly.  After each use, the pixel data can be extracted  */
    
    #define HEADER_PIXEL(data,pixel) {\
      pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
      pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
      pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
      data += 4; \
    }
    static char *header_data =
    	"````````````````````````````````````````````````````````````````"
    	"````````````````````````````````````````````````````````````````"
    	"````````````````````````````````````````````````````````````````"
    
    KolibriOS-перспективная ос!
    Kolibri is best operation system in the world!
  • Leency

    Поставь там _asm{ int 3}; и запусти в mtdbg.
  • Спасибо всем, кто помагал до этого. Есть ещё одна проблема :). Код:

    Code: Select all

    void Read_Dir(){
    	open_file_70.func = 1;
    	open_file_70.pos = 0;
    	open_file_70.rezerv = 0;
    	open_file_70.sizefile = 65536;
    	buf = malloc(65536);
    	open_file_70.buffer = buf;
    	open_file_70.rezerv2 = 0;
    	open_file_70.stroka = #path;
    	$mov eax,70
    	$mov ebx,#open_file_70.func
    	$int 0x40
    }
    Работает как надо. В программе есть строчка
    path=path1;
    где char path[256] = "/rd/1"; char path1[256] = "/rd/1/demos";
    После чего опять вызывается Read_Dir() странно, но обрабатывается опять path, а не path1.
    Исходники и с-- тут http://kolibri-os.narod.ru/files/temp/proga1_cmm.zip 231Кб
    Заранее спасибо.
    Из хаоса в космос
  • Who is online

    Users browsing this forum: Bing [Bot] and 28 guests