Page 3 of 77

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

Posted: Sun Jan 13, 2008 12:48 am
by ДедОк
У вас есть пронятие - файл?
конечно - есть:) и FAT и NTFS система видит прекрасно...;) правда, не пишет пока в NTFS...;)

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

Posted: Sun Jan 13, 2008 10:27 am
by Hack_phoenix
Драйвер не клавиатуры, а, предположим, сенсорный дисплей у холодильника... ВесЧь. Да и клавиатура тоже нужна - т.к. управление будет производиться если не с обычной АТ, так с какой-то ?). Именно ОС должнау4правлять температурой внутри мерзлого ящика, я думаю. И графическая подсистема ой как нужна будет.

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

Posted: Sun Jan 13, 2008 4:05 pm
by Hack_phoenix
Ну, тогда имеет смысл использовать Колибри. Планы развития у нас есть.

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

Posted: Mon Jan 14, 2008 7:23 pm
by SHREDER
path_of_milea wrote:Да для начала GUI не нужен, а потом может понадобится, вместе с сенсорным экраном. Чтобы выбирать разные режимы работы ит.д.
А зачем тогда вам вообще OS в таких дивайсах? Зашейте в ПЗУ набор некий набор функций и шел для аксеса к ним (типа на экране мониторчика: "нажмите 1 для установки температуры" потом "введите температуру" и т.д. и т.п.). Суть OS в том что-бы обеспечить API и диспетчирезацию пользовательских процессов. Говоря более простым языком суть ОС в том что-бы могли работать обычные прикладные программы. Если у вас в холодильнике огромное кол-во функций и каждая их них управляется определенной программой со специфпическими алгоритмами (которые будут всевремя изменятся) тогда вам нужна ОС, иначе будет только ущерб, излишняя загрузка аппаратуры и т.д.
Для компьютера OS нужна т.к. конечный обьем задачь которые он будет выполнять невозможно определить (и для телефонов сейчас тоже, ибо на них запускают игры лазят по интернету и т.д.). Почему-то мне не верится что невозможно определить конечный список задачь для холодильника или скажем кухонной плиты.

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

Posted: Mon Jan 21, 2008 6:28 am
by Leency
Я начал писать программу на 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;
Заранее спасибо.

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

Posted: Mon Jan 21, 2008 10:41 am
by Serge

Code: Select all

         kos_GetButtonID(id)
         if (id=21){    << здесь должно быть (id == 21)
Лучше сделай switch(id). Если кнопок много он удобнее.

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

Posted: Mon Jan 21, 2008 10:46 am
by Nable
to Leency
Вынужден тебя огорчить - просто так не получится. Дело в том, что стиль кнопок (3D или плоские) задаётся общесистемной функцией. Если надо рисовать не по-умолчанию, то при объявлении кнопки нужно ей дать стиль "не рисовать", а затем в нужном месте соответствующими функциями дорисовывать прямоугольник, текст и всё остальное, как это сделать написано в sysfuncr.txt. Точнее сказать не могу, давно в коде не копался.

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

Posted: Mon Jan 21, 2008 11:38 am
by Астроноид
Что ж это за требования, куда Колибри подходит а linux нет?
Видимо вы не все дистрибутивы линукса видели. Да и собрать свой для нужных целей - не проблема(если есть определенные знания в этой области).
Линукс - это консоль. Командная строка. А все ли умеют таким образом работать? Я вот ни за что не сяду ни за MS DOS, ни за Linux (кроме разве что Ubuntu, Mandriva или что-то в этом роде - я говорю о традиционном линуксе, а не о его серьёзных модификациях, дизайном и решениями близких к Windows). Ненавижу консоли. Редко использую сочетания клавиш (мышь роднее). И если бы это только одного меня касалась. Научите среднюю секретаршу или контролёра завода какого-нибудь пользоваться линуксом :D много поплачите :twisted: :x :( :P.
Колибри, как ни крути, всё-таки графическая система. И это намного удобнее. Удобней щёлкнуть мышью по кнопке, чем набирать в командной строке всякую аброкадабру, которую ещё и вызубрить надо заранее... Любой ламер со мной согласится...
С одной стороны всё вроде есть и работает, а когда внимательно присмотришься увидишь что "тут надо напильником подправить, а там кувалдой подрихтовать".
При детальном рассморении кода ядра приходишь к выводу, что для приведения его к "нормальному" виду нужно переписать более половины системы.
Существует работа по исправлению логических ошибок, однако она проводитсья силами энтузиастов. Обычно это все затягивается или остается недоделанным. Тем не менее ядро развивается, изменятся...
Предлагаю составить список необходимых изменений и вывесить на видном месте...

P.S. А кроме холодильников ещё есть сложные кондиционеры и регуляторы микроклимата в промышленных теплицах, складах продовольствия, архивах.

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

Posted: Mon Jan 21, 2008 1:44 pm
by Leency
Вот исходник: http://kolibri-os.narod.ru/files/temp/vc.zip

1. Почему при нажатии любой клавиши программа закрывается?
2. Как вставить изображение? Пожалуйста, "засуньте" в исходник любое изображение и выведете его на форму (в окно). Мне нужен пример. Спасибо.

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

Posted: Mon Jan 21, 2008 2:15 pm
by k@sTIg@r
Астроноид wrote: Линукс - это консоль. Командная строка. А все ли умеют таким образом работать? Я вот ни за что не сяду ни за MS DOS, ни за Linux (кроме разве что Ubuntu, Mandriva или что-то в этом роде - я говорю о традиционном линуксе, а не о его серьёзных модификациях, дизайном и решениями близких к Windows).
Линукс - это ядро!!!!!!!!
Консоль/команданя строка/работа в текстовом режиме/т.п. - это только интерфейс, способ взаимодействия пользователя с системой.
Ubuntu/Mandriva/etc - серьезные модификации??? Здрасте...это дистрибутивы линукса. Какие дизайны и решения близкие к Windows?
А ты слышал про famebuffer? У меня на линуксе настроен vesafb, у меня консоль графическая (кстати как и в колибри юзается та же VESA). Я в консоли могу через mplayer видео смотреть, lynx картинки на сайтах показывает. Даже есть оконные менджеры под fb. Пожалуйста, ставь и юзай на здоровье. qt и gtk ты не заюзаешь конечно, для них нужен Xserver, но для fb есть другой софт.

Так что извини, но ты просто не знаешь про что пишешь...

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

Posted: Mon Jan 21, 2008 2:22 pm
by Leency
Извините, парни, но вы развели оффтоп.
Я реальное что-то хочу сделать и получить помощь, а вы тут о Линуксах.

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

Posted: Mon Jan 21, 2008 3:20 pm
by andrew_programmer
Leency

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

Code: Select all

unsigned char picture[]={ 1,2,.....};
Нужно написать мини программу которая преобразует картинку в текстовый файл с массивом. Я таким образом делал для подключения растровых шрифтов к моей научной программе, написанной на C.

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

Posted: Mon Jan 21, 2008 3:44 pm
by andrew_programmer
Ещё графический редактор 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 =
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"
	"````````````````````````````````````````````````````````````````"

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

Posted: Mon Jan 21, 2008 4:28 pm
by Serge
Leency

Поставь там _asm{ int 3}; и запусти в mtdbg.

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

Posted: Sat Jan 26, 2008 2:13 am
by Leency
Спасибо всем, кто помагал до этого. Есть ещё одна проблема :). Код:

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Кб
Заранее спасибо.