Расчет экономического эффекта
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Экономический эффект – это разница между ожидаемыми доходами от внедрения проекта и ожидаемыми расходами на реализацию проекта. Дополнительные доходы могут быть получены за счет повышения производительности труда и увеличения объемов производства или за счет сокращения затрат на производство.

Доход – это сумма денег, полученная после реализации произведенных товаров или услуг

 

D = P · Q,                          (6.7.1)

 

где D – доход;

P = 30000 руб. – рыночная цена единицы товара;

Q = 5 – количество произведенных и проданных единиц товара.

Затраты на разработку, внедрение и применение проекта

 

Зсум = Зпр + Звн + Зпп,                   (6.7.2)

 

где Зсум – суммарные затраты на проект и производство продукции;

Зпр – затраты на разработку технической документации проекта. Исходя из данных таблицы 6.7, Зпр = 114553,04 руб.

Звн – затраты на внедрение проекта. Это деньги, которые придется потратить на приобретение материальных элементов необходимых для технической реализации проекта.

 

Звн = Зм + Ззп,                              (6.7.3)

 

где Зм – затраты на приобретение материальных элементов (деталей, узлов, комплектующих), которые будут необходимы для создания разработанного объекта или устройства; Исходя из данных таблицы 6.6, Зм = 1224,62 руб.

Ззп – затраты на заработную плату работников которые будут внедрять проект. Данные затраты можно принять как 30…40% от материальных затрат

 

Ззп = (0,3…0,4) Зм                                (6.7.4)

 

Получим: Ззп = 0,35 ·Зм = 0,35 · 1224,62= 428,617 руб.

Зпп – затраты на производство готовой продукции (себестоимость). Исходя из данных таблицы 6.8, Зпп = 7196,12 руб.

Зсум = 114553,04 + 1224,62 + 428,61 + 7196,12 = 123402,4 руб.

Экономический эффект первого года проекта

Э1 = D1 − Зсум = 150000 – 123402,4 = 26597,6 руб.,

где Э1 – доход полученный за первый год реализации проекта.

Экономический эффект от внедрения проекта составит 26597,6 рубля за год.

 

Ток = Э1 / D1 = 0,215 (6.7.5)

 

Срок окупаемости проекта – 6 месяцев.

Проведенное планирование работ позволило выполнить поставленную задачу в установленный срок. Экономические расчеты показали эффективность разработки и производства генератора.

 

 



Список используемой литературы

 

1. Рэд Э. Справочное пособие по высокочастотной схемотехнике. – Москва.: Мир. – 1990. – 254 с.: ил.

2. З.А. Зима, И.А. Колпаков, А.А. Романов, М.Ф. Тюхтин. Системы кабельного телевидения. – Москва: Издательство МГТУ имени Баумана. – 2004. – 600 с.: ил.

3. М.С. Воробьёв, Л.П. Кудрин, Н.И. Сазонов, А.Б. Толкачёв, А.Б. Хашимов. Приёмные распределительные системы телевидения. – Челябинск: Издатель Татьяна Лурье, 2002. – 240 с.: ил.

4. Б.И. Крук, В.Н. Попантонопуло, В.П. Шувалов. Телекоммуникационные системы и сети. Современные технологии. – под ред. В.П. Шувалова. – 2003. – 647 с.: ил.

5. Проектирование радиопередающих устройств СВЧ: Учебное пособие для вузов / Уткин Г.М., Благовещенский М.В., Жуховицкая В.П. и др.; Под реда. Г.М. Уткина. – М.: Сов. Радио. – 1979. – 320 с.: ил

6. Активные RC‑фильтры на операционных усилителях. Перевод с англ. Г.Н. Алексакова. – М.: «Энергия», 1974. – 64 с., ил.

7. Зааль Р. Справочник по расчету фильтров: Пер. с нем. – М.: Радио и связь, 1983. – 752 с., ил.

8. Сетевые методы планирования и управления: Методические указания к курсовому проекту для студентов Приборостроительного факульткта / Составители: В.С. Зинневич, Л.А. Баев, И.П. Мешковой. – Челябинск: Изд. ЮУрГУ, 1998. – 22 с.

9. Н.З. Шварц. Линейные транзисторные усилители СВЧ. – М.: Сов. Радио. – 1980. – 368 с.: ил.

10. Организация дипломного проектирования: Методические указания к выполнению выпускных квалификационных работ / Д.В. Астрецов, Т.М. Лысенко. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2003. 48 с.

11. Стандарт предприятия. Дипломная научно-исследовательская работа студента. Структура и правила оформления. СТП ЮУрГУ 19–2003 / Составители: Т.И. Парубочая, Н.В. Сырейщикова, С.Д. Ваулин, В.Р. Гофман. – Челябинск: Изд. ЮУрГУ, 2003. – 19 с.



Листинг фрагмента программы

 

void ClrUART0_RecBuf (BYTE ClrBytes)

{

if (ClrBytes > UART0. InPk_Len)

ClrBytes = UART0. InPk_Len;

// **

ChangeIPL(1);

UART0. InPk_Len -= ClrBytes;

UART0. InPk_Start = (UART0. InPk_Start + ClrBytes) & c_InPk0_lenmsk;

ChangeIPL(0);

UART0. InPk_Processed = 0;

// **

}

 

BYTE GetByteFrUART0InB (BYTE Index)

{

return UART0. InPk_Buf[(UART0. InPk_Start + Index) & c_InPk0_lenmsk];

}

 

BYTE CheckCompCmd_TypeLen (BYTE Type, WORD Len)

{

BYTE i;

for (i=0; i<=comcmd_Measure1P; ++i)

if (Type == ComCmds[i].CmdType_v && Len == ComCmds[i].CmdLen)

return 1;

 

// Иначе возвращается '0'.

return 0;

}

 

void CopyFromCycBuf (BYTE* To, BYTE* Buf, BYTE Start, BYTE Len, WORD BufLen)

{ // Копирование из циклического буфера произвольной длины в линейный.

Buf += Start;

while (Len–)

{

*To++ = *Buf++;

if (++Start == BufLen)

{

Start = 0;

Buf -= BufLen;

}

}

}

 

BYTE ComputeCRC (BYTE* Buf, BYTE last_xor, WORD HowMuch)

{

do

last_xor ^= *Buf++;

while(–HowMuch);

return last_xor;

}

 

BYTE FillCProtoShellAndType (xCProto_CmdShell *pPk, BYTE Type, WORD RestPkLen)

{ // Заполнение обязательных одинаковых для всех пакетов полей и подсчёт КС.

pPk->Header = c_COMM_HEADER;

pPk->SenderID = c_DEVICE_ID;

pPk->RestPk_Len = RestPkLen;

*((BYTE*)&pPk->RestPk_Len + sizeof (pPk->RestPk_Len)) = Type;

return ComputeCRC((BYTE*) pPk+1, 0, sizeof (xCProto_CmdShell)+1–1);

}

 

#ifndef Tuner_1v1

// Версия функции для платы CMU_1v0.

void LoadFwdTuner (WORD Freq, WORD Level)

{

BYTE i, j, mask;

xFwdTuner FwdTunerLoadWord;

// xTunerMeasCmdWord TunerCmdW;

// xMeasDescr TunerCmdDescr;

 

FwdTunerLoadWord.byte_s.B[3] = 0;

FwdTunerLoadWord.byte_s.B[2] = 0;

FwdTunerLoadWord.bit_s.OS = 0;

 

// FwdTunerLoadWord.bit_s.RSB = 0; //Reference divider = 640.

FwdTunerLoadWord.bit_s.RSB = 1; //Reference divider = 512/1024.

// FwdTunerLoadWord.bit_s.RSA = 0; //Reference divider = 1024.

FwdTunerLoadWord.bit_s.RSA = 1; //Reference divider = 512/640.

 

FwdTunerLoadWord.bit_s.T_2_0 = 1; //Normal operation.

FwdTunerLoadWord.bit_s.CP = 0; // 60uA Current of charge pump.

 

// FwdTunerLoadWord.bit_s.N_14_0 = 6800;

FwdTunerLoadWord.bit_s.N_14_0 = (Freq<<1); /// ((WORD) (0.0078125*128)); //Reference divider = 512.

// FwdTunerLoadWord.bit_s.N_14_0 = ((Freq)*5)>>1; //Reference divider = 640.

// FwdTunerLoadWord.bit_s.N_14_0 = ((Freq+4)<<2); //Reference divider = 1024.

 

FwdTunerLoadWord.bit_s.BS_4_1 = 0;

 

// Загрузка синтезатора частоты в модуляторе прямого канала.

FWD_CE = 1;

i = 3;

j = 3;

mask = 0x04;

do

{

do

{

if (FwdTunerLoadWord.byte_s.B[i] & mask)

SIO4_DATA = 1;

else

SIO4_DATA = 0;

mask >>= 1;

SIO4_CLK = 1;

asm («NOP»);

asm («NOP»);

asm («NOP»);

SIO4_CLK = 0;

}

while(–j);

j = 8;

mask = 0x80;

} while (i–);

SIO4_DATA = 0;

FWD_CE = 0;

 

// Загрузка ЦАП'а в модуляторе прямого канала.

Level = Level*cnst_FwdTransm_Lev_mult + cnst_FwdTransm_Lev_add;

FwdTunerLoadWord.byte_s.B[0] = (Level) & 0xFF;

FwdTunerLoadWord.byte_s.B[1] = (Level) >> 8; // Уровень на выходе ЦАП'а.

i = 1;

j = 8;

mask = 0x80;

FWD_ADCE = 0;

do

{

do

{

if (FwdTunerLoadWord.byte_s.B[i] & mask)

SIO4_DATA = 1;

else

SIO4_DATA = 0;

mask >>= 1;

SIO4_CLK = 1;

asm («NOP»);

asm («NOP»);

asm («NOP»);

SIO4_CLK = 0;

}

while(–j);

j = 8;

mask = 0x80;

} while (i–);

SIO4_DATA = 0;

FWD_ADCE = 1;

}

#else

// Версия функции для тюнера Tuner_1v1.

void LoadFwdTuner (WORD Freq, WORD Level)

{ // Загрузка синтезатора I2C‑шного передатчика и ЦАП'а DAC7513.

BYTE i, j, mask;

xFwdTuner FwdTunerLoadWord;

xTunerMeasCmdWord tmpTunerCmdW;

xMeasDescr volatile tmpTunerCmdDescr;

 

// Загрузка ЦАП'а в модуляторе прямого канала.

Level = Level*cnst_FwdTransm_Lev_mult + cnst_FwdTransm_Lev_add;

FwdTunerLoadWord.byte_s.B[0] = (Level) & 0xFF;

FwdTunerLoadWord.byte_s.B[1] = (Level) >> 8; // Уровень на выходе ЦАП'а.

i = 1;

j = 8;

mask = 0x80;

FWD_ADCE = 0;

do

{

do

{

if (FwdTunerLoadWord.byte_s.B[i] & mask)

SIO4_DATA = 1;

else

SIO4_DATA = 0;

mask >>= 1;

SIO4_CLK = 1;

asm («NOP»);

asm («NOP»);

asm («NOP»);

SIO4_CLK = 0;

}

while(–j);

j = 8;

mask = 0x80;

} while (i–);

SIO4_DATA = 0;

FWD_ADCE = 1;

 

// Подготовка для отдачи команды на загрузку синтезатора передатчика.

tmpTunerCmdW. Cmd = cmdMT_LoadFwdTransmitter;

tmpTunerCmdW. MeasDescr = (xMeasDescr*)&tmpTunerCmdDescr;

tmpTunerCmdDescr. StartFreq = Freq;

tmpTunerCmdDescr. Flags. Busy = 1;

tmpTunerCmdDescr. Flags. Interrupt = 0;

 

cQueueSend (CommandQueue_of_TunMeas, &tmpTunerCmdW, 0);

while (tmpTunerCmdDescr. Flags. Busy == 1)

vTaskDelay(1);

}

#endif

 

void MakeAndSendFwdPack (BYTE Cmd, BYTE Param)

{

xStruct_PtrAndLen FwdTrCmd;

BYTE i;

 

switch(Cmd)

{

union

{ // Структура, которая используется только внутри switch'а.

struct xs_FWD_CMD_00 pack_0_body;

struct xs_FWD_CMD_01 pack_1_body;

struct xs_FWD_CMD_02 pack_2_body;

struct xs_FWD_CMD_03 pack_3_body;

struct xs_FWD_CMD_03 pack_4_body;

} xFwdPacks;

 

case fwdtr_ConfigOfPSG_Fr:

{ // Команда «Настройка ГПС: частоты».

 

for (i=0; i<cnst_PSG_Num_Of_Freqs; ++i)

{ // Заполняем тело пакета частотами ГПСа.

WORD f = PsgArray[Param].Freqs[i].Freq;

if (f!= cnst_PSG_null_freq)

{

xFwdPacks.pack_0_body. Freqs[i].MHz = f>>3;

xFwdPacks.pack_0_body. Freqs[i].kHz = f & 0x07;

}

else

break;

}

xFwdPacks.pack_0_body. Cmd = fwdtr_ConfigOfPSG_Fr;

xFwdPacks.pack_0_body.PSG. GenNum = Param;

xFwdPacks.pack_0_body.PSG. Freqs = i;

xFwdPacks.pack_0_body.PSG.nevermind = 0;

i = sizeof (xFwdPacks.pack_0_body) – ((cnst_PSG_Num_Of_Freqs-i)<<1);

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_0_body,

(BYTE) ((DWORD)&xFwdPacks.pack_0_body >> 16),

i);

break;

} // Конец case'а по «Настройка ГПС: частоты».

case fwdtr_ConfigOfPSG_Txt:

{ // Команда «Настройка ГПС: комментарии».

xFwdPacks.pack_1_body. Cmd = fwdtr_ConfigOfPSG_Txt;

xFwdPacks.pack_1_body.PSG. GenNum = Param;

xFwdPacks.pack_1_body.PSG.nevermind = 0;

for (i=0; i<cnst_PSG_TextMsgLen; ++i)

{

BYTE s = PsgArray[Param].TextMsg[i];

if (s!= 0) // Записываем в пакет ненулевые символы.

xFwdPacks.pack_1_body. TxtMsg[i] = s;

else

break; // Встретили нулевой символ.

}

// Здесь i – кол-во ненулевых символов.

xFwdPacks.pack_1_body. TxtMsg[i] = 0; // Конец строки, как и обещал.

i += 3;

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_1_body,

(BYTE) ((DWORD)&xFwdPacks.pack_1_body >> 16),

i);

break;

} // Конец case'а по «Настройке ГПС: комментарии».

case fwdtr_LevelsOfPSG:

{ // Команда «Уровни сигнала с ГПС».

for (i=0; i<cnst_PSG_Num_Of_Freqs; ++i)

{ // Заполняем тело пакета чатотами ГПСа.

if (PsgArray[Param].Freqs[i].Freq!= cnst_PSG_null_freq)

xFwdPacks.pack_2_body. Levels[i] = PsgArray[Param].Freqs[i].Level;

else

break;

}

xFwdPacks.pack_2_body. Cmd = fwdtr_LevelsOfPSG;

xFwdPacks.pack_2_body.PSG. GenNum = Param;

xFwdPacks.pack_2_body.PSG. Freqs = i;

xFwdPacks.pack_2_body.PSG.nevermind = 0;

i = (i<<1) + 2;

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_2_body,

(BYTE) ((DWORD)&xFwdPacks.pack_2_body >> 16),

i);

break;

} // Конец case'а по «Уровни сигнала с ГПС».

case fwdtr_LevelsOfSpectrum:

{ // Команда «Спектр обратного канала».

xFwdPacks.pack_3_body. Cmd = fwdtr_LevelsOfSpectrum;

xFwdPacks.pack_3_body. StartFr = Param;

xFwdPacks.pack_3_body. StopFr = Param + 1;

i = sizeof (xFwdPacks.pack_3_body);

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_3_body,

(BYTE) ((DWORD)&xFwdPacks.pack_3_body >> 16),

3);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields) + 3),

(WORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]),

(BYTE) ((DWORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]) >> 16),

i‑3);

break;

} // Конец case'а по «Спектр обратного канала».

case fwdtr_LevelsOfAFC:

{ // Команда «Спектр обратного канала».

xFwdPacks.pack_4_body. Cmd = fwdtr_LevelsOfAFC;

xFwdPacks.pack_4_body. StartFr = Param;

xFwdPacks.pack_4_body. StopFr = Param + 1;

i = sizeof (xFwdPacks.pack_4_body);

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_4_body,

(BYTE) ((DWORD)&xFwdPacks.pack_4_body >> 16),

3);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields) + 3),

(WORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]),

(BYTE) ((DWORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]) >> 16),

i‑3);

break;

} // Конец case'а по «АЧХ обратного канала».

} // Конец switch'а.

 

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).PreSync_00 = 0x00;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).PreSync_FF = 0xFF;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).Sync_55 = 0x55;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).SourceDevAddr = 0x02;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).RestPackLen =

FwdTrCmd. Cnt – sizeof(xFwdChPackOblFields);

*(WORD*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields) + i) =

usHdw_crc (0, FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields), i);

 

/* #ifdef LogDebg

{

xStruct_PtrAndLen TrCmd;

BYTE *CommOutB;

CommOutB = pvPortMalloc(128);

 

// Рисуем адрес размещенной области памяти, где лежит пакет.

TrCmd. Cnt = DwrdSymbolize((DWORD) (FwdTrCmd. Ptr), CommOutB);

CommOutB [TrCmd. Cnt++] = ' ';

// Рисуем длину пакета.

TrCmd. Cnt += DwrdSymbolize (FwdTrCmd. Cnt, &CommOutB [TrCmd. Cnt]);

for (i=0; i<FwdTrCmd. Cnt; ++i)

{

CommOutB [TrCmd. Cnt++] = ' ';

// Рисуем содержимое пакета.

TrCmd. Cnt += DwrdSymbolize (FwdTrCmd. Ptr[i], &CommOutB [TrCmd. Cnt]);

}

TrCmd. Cnt += MyStrLoad (&CommOutB[TrCmd. Cnt], // Абзац.

(BYTE far*) ExtraDispInfoStrings[11]) – 1;

TrCmd. Ptr = CommOutB;

cQueueSend (CommandQueue_of_Uart0Transm, (void*)&TrCmd, 0);

}

#endif*/

cQueueSend (CommandQueue_of_FwdTransm, (void*)&FwdTrCmd, 0);

}

 

void vRevChProc (portSHORT Param)

{

BYTE a, b, c;

xs_RevChCmd xRCCmd;

xs_RevChVars *pxRCVars;

 

pxRCVars = 0;

for(;)

{

DWORD Time = ulTaskGetTickCount();

if (pxRCVars == 0 ||

(pxRCVars!= 0 && pxRCVars->b_rcproc_action == rcpac_Thinking &&

usQueueMessagesWaiting (CommandQueue_of_RevChProc)!= 0))

{ // Приём управляющей команды.

cQueueReceive (CommandQueue_of_RevChProc, (void*)&xRCCmd, 0);

Time = ulTaskGetTickCount();

switch (xRCCmd. Cmd)

{

// *** СТАРТ ***.

case rccmd_StartProc:

{ // Запуск процесса обработки ОК.

// Выделяется память под переменные, обнуляется.

if (pxRCVars == 0 &&

(xRCCmd. Param == tskid_MainMnuT ||

xRCCmd. Param == tskid_Uart0T))

{

pxRCVars = pvPortMalloc (sizeof(xs_RevChVars));

FastNearMemFill (pxRCVars, sizeof (xs_RevChVars), 0);

}

 

// Запоминаем название задачи, которая нас запускает.

if (xRCCmd. Param == tskid_MainMnuT)

pxRCVars->xFlags.xOwners. MainMnuExec = 1;

else if (xRCCmd. Param == tskid_Uart0T)

pxRCVars->xFlags.xOwners.U0Proc = 1;

 

if (xPrgFlags2. RevChProcActive == 1)

// На самом деле обработчки уже запущен, поэтому без инициализации.

break;

 

pxRCVars->w_rcproc_scanfreq = pxRCVars->w_rcproc_newfreq = cnst_RevMinFreq;

 

// Блок таймеров.

pxRCVars->xLastTimes.dw_LT_PSGs_Check               =

Time – cnst_PSG_Time_CheckMinPeriod;

pxRCVars->xLastTimes.dw_LT_RC_Scan             =

Time – cnst_PSG_Time_ScanFullRCDiap;

pxRCVars->xLastTimes.dw_LT_FindScanningPSG =

Time;

pxRCVars->xLastTimes.dw_LT_FwdTr_Pack0 =

Time – cnst_FwdTr_Time_Pack0;

pxRCVars->xLastTimes.dw_LT_FwdTr_Pack1 =

Time – cnst_FwdTr_Time_Pack1;

 

// Инициализация команды для тюнера.

pxRCVars->xRC_MeasCmd. MeasDescr = &pxRCVars->xRC_MeasDescr;

pxRCVars->xRC_MeasDescr.pwMaxLev_StatVal = &pxRCVars->wMaxLev_StatVal;

 

{ // Установка аттенюатора.

xMEASURE_OPTIONS xMeasOptions;

 

ReadSingleDevOption((void*)&xMeasOptions, pos_opAttenuation, sz_opAttenuation);

SetMeasureDescrAtt (&xMeasOptions, &pxRCVars->xRC_MeasDescr);

xPrgFlags2. AttVal = pxRCVars->xRC_MeasDescr. Flags. AttVal;

xPrgFlags2. AutoAtt = pxRCVars->xRC_MeasDescr. Flags. AutoAtt;

}

 

// Инициализация структуры ГПС-ов.

{

for (a=0; a<cnst_PSG_Num_Of_Devs; ++a)

{

FastNearMemFill((PsgArray[a].TextMsg), cnst_PSG_TextMsgLen, ' ');

for (b = 0; b < cnst_PSG_Num_Of_Freqs; ++b)

{

PsgArray[a].Freqs[b].Freq = cnst_PSG_null_freq;

PsgArray[a].Freqs[b].Level = 0;

PsgArray[a].Freqs[b].WarningLevel = cnst_PSG_PauseAllFreqDel;

}

PsgArray[a].xPrstInfo. PresetNum = 0xFF;

PsgArray[a].xPrstInfo. UsingPreset = 0;

PsgArray[a].xAttributes. Scanning = 0;

}

}

 

// Инициализация пресетов ГПС-ов.

pxRCVars->bNum_of_ActvPSGs += bPSGPresetsHandler (0, 0, psgprst_InitPrsts);

#ifdef LogDbg2

{

xStruct_PtrAndLen TrCmd;

BYTE *CommOutB;

CommOutB = pvPortMalloc(40);

 

// Пишем 'ActivePSG: x'.

TrCmd. Cnt = MyStrLoad (CommOutB,

(BYTE far*) ExtraDispInfoStrings[28]) – 1;

CommOutB [TrCmd. Cnt++] = '0' + pxRCVars->bNum_of_ActvPSGs;

CommOutB [TrCmd. Cnt++] = '\n';

TrCmd. Ptr = CommOutB;

cQueueSend (CommandQueue_of_Uart0Transm, (void*)&TrCmd, 0);

}

#endif

 

// Выделение памяти под буфер спектра ОК.

pw_RC_Scan_Buf =

pvPortMalloc((cnst_RevMaxFreq+1 – cnst_RevMinFreq)*sizeof(WORD));

FastNearMemWordFill((void*) pw_RC_Scan_Buf,

(cnst_RevMaxFreq+1 – cnst_RevMinFreq),

0);

// !!! Временно, для отладки.

// Якобы есть у нас генератор, который мы будем измерять.

//               PsgArray[2].Freqs[0].Freq = mac_ConvFreqFromMHz(10);

//               pxRCVars->bNum_of_ActvPSGs = 1;

// !!! Временно, для отладки.

 

#ifdef LogDebg

{

xStruct_PtrAndLen TrCmd;

BYTE *CommOutB;

 

CommOutB = pvPortMalloc(32);

 

TrCmd. Cnt = DwrdSymbolize (Time, &CommOutB[0]); // Нарисовали текущее время.

TrCmd. Cnt += MyStrLoad (&CommOutB[TrCmd. Cnt], //ClrAllStages.

(BYTE far*) ExtraDispInfoStrings[12]) – 1;

TrCmd. Cnt += MyStrLoad (&CommOutB[TrCmd. Cnt], // Абзац.

(BYTE far*) ExtraDispInfoStrings[11]) – 1;

TrCmd. Ptr = CommOutB;

cQueueSend (CommandQueue_of_Uart0Transm, (void*)&TrCmd, 0);

}

#endif

 

// Вот теперь можно сказать, что обработка ОК запущена.

xPrgFlags2. RevChProcActive = 1;

break;

} // Конец case'а по запуску обработчика ОК.

// *** КОНЕЦ «СТАРТ ОК» ***.

// *** «ЗАВЕРШЕНИЕ РАБОТЫ ОК» ***.

Дата: 2019-05-29, просмотров: 167.