прошу вас ответить лишь на несколько вопросов :
Первый , вот код :
Код: Выделить всё
#include <zilog.h>
#include "Menu.h"
//×òî þçàåì
static BYTE Menu=0;//Îñíîâíîå ìåíþ
static BYTE SubMenu=0;//Ïîäìåíþ
static bool Refresh=true;//Ïðèçíàê òîãî ÷òî ìåíþ íàäî îáíîâèòü
static BYTE Q[4];//Ìàññèâ äàííûõ î âûêëþ÷àòåëÿõ
static BYTE SelQMode=0;//ðåæèì âûáðàííîãî Q
const BYTE MaxQ=4;//Êîëâî âûêëþ÷àòåëåé
const BYTE MaxMenu=2;//Êîëâî ïóíêòîâ ìåíþ
_tO_dep_IntToStr16 txt1;//
_tO_dep_Str16ToEnd txt2;//
_tO_dep_ConKeyCode Key;
_tO_dep_ConRegister ConReg;
__STACKCHK
dep_ConRegister(&ConReg ,TRUE); //Õâàòàåì óïðàâëåíèå
dep_ConKeyCode(&Key);
switch (Menu)
{
case 0: //Ãëàâíîå ìåíþ
{
if(!SubMenu)
{
//Èíèöèàëèçàöèÿ
SubMenu=1;
Refresh=true;
}
if(Key.code==29 && SubMenu>1)
{
//Â ëåâî
SubMenu--;
Refresh=true;
}
if(Key.code==31 && SubMenu<MaxMenu)
{
//Â ïðàâî
SubMenu++;
Refresh=true;
}
if(Key.code==28)
{
//Âõîäèì â ñìåíþ
Menu=SubMenu;
SubMenu=0;
//Âû ÷èòûâàåì çíà÷åíèÿ íàñòðîåê âûêëþ÷àòåëåé
SelQMode=Q[SubMenu];
Refresh=true;
}
if(Key.code==33)
{
//Ýñêåéï
Menu=MaxMenu;
}
if(Refresh)
{
//Îáíîâëÿåì ìåíþ
dep_ConPutStr((STR16*)"ÏÔ-4 v3.5",0);
switch (SubMenu)
{
case 1:dep_ConPutStr((STR16*)"Íàñòðîéêà ÿ÷ååê",1);break;
case 2:dep_ConPutStr((STR16*)"Íàçàä",1);break;
}
Refresh=false;
}
break;
}
case 1://[Íàñòðîéêà ÿ÷ååê]
{
if(!SubMenu)
{
//èíèöèàëèçàöèÿ ìåíþ
SubMenu=1;
Refresh=true;
}
//Ïðîâåðêà êëàâèøü
if(Key.code==27 && SubMenu>1)
{
//Ââåðõ
SubMenu--;
SelQMode=Q[SubMenu-1];
Refresh=true;
}
if(Key.code==30 && SubMenu<MaxQ)
{
//Âíèç
SubMenu++;
SelQMode=Q[SubMenu-1];
Refresh=true;
}
if(Key.code==29 && SelQMode>1)
{
//Â ëåâî
SelQMode--;
Refresh=true;
}
if(Key.code==31 && SelQMode<3)
{
//Â ïðàâî
SelQMode++;
Refresh=true;
}
if(Key.code==28)
{
//Ñîõðàíÿåì çíà÷åíèå
Q[SubMenu-1]=SelQMode;
Refresh=true;
}
if(Key.code==33)
{
//Ýñêåéï
SubMenu=Menu;
Menu=0;
}
if(Refresh)
{
//Ôîðìèðóåì íàçâàíèå âûêëþ÷àòåëÿ êîòîðûé íàñòðàèâàåì
dep_IntToStr16(&txt1 ,SubMenu,FALSE,0);
dep_Str16Add(&txt2 ,(STR16*)"Q",&txt1.out,(STR16*)" [X");
dep_IntToStr16(&txt1 ,SubMenu+8,FALSE,0);
dep_Str16Add(&txt2 ,&txt2.out,&txt1.out,(STR16*)"]");
if(SelQMode!=Q[SubMenu-1])
{
//Åñëè ó íàñ íå ðàâíûé óñòàíîâëåííûå çíà÷åíèÿ, òî âûâîäèì ñ ïðàâà çâ¸çäî÷êó
dep_Str16ToEnd(&txt2,&txt2.out,(STR16*)"<*>");
}
dep_ConPutStr(&txt2.out,0);
//Ôîðèðóåì ñîñòîÿíèå âûêëþ÷àòåëÿ
if(SelQMode<1 || SelQMode>3)
{
Q[SubMenu]=1;//Ìû íå ìîæåì îøèáàòüñÿ :)
SelQMode=Q[SubMenu];
}
switch(SelQMode)
{
case 1:dep_ConPutStr((STR16*)"Íå èñïîëüçóåòñÿ",1);break;
case 2:dep_ConPutStr((STR16*)"Äèñêðåòíûé",1);break;
case 3:dep_ConPutStr((STR16*)"×òåíèå ñ ÓÇÀ",1);break;
}
Refresh=false;
}
break;
}
default ://Âûõîä
{
Menu=0;
SubMenu=0;
dep_ConEscape(TRUE);
break;
}
}
Онреализует меню ...
почему такая дикая тормознутость меню получается ?
как это поправить ?
Второй, как мне с си чтото записать в энергонезависимую память ?
Третий, как и где прописать пароли для дисплея для каждого юзера ???? ТОКА ПОДРОБНО ДЛЯ ДАУНА, в роле коева я побуду.
Четвёртая проблема, последняя
Как сделать так чтобы в конфигураторе, когда настраиваешь компонет перемнные прописывать которые мне нао, тоесть напримре если повесить на диаграмме компонент номер дискрета по имени, то потом еготам можно будет выбьрать, как такой фокус провернуть напримре с простым WORD таблицу у вас я вижу , а допереть как сунуть туда не могу.
Я очень убедительно, прошу вас ответить, я вам сёдня позвоню с утрица по москве , оборву все аськи, только ради бога помогите , надоело просить....
Ещё ДАЙТЕ SDK по всем функциям !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Надоел слипой кодинг!!!!!!!!!!!!!!!!!