63743 (589029), страница 10

Файл №589029 63743 (Проектирование устройства передачи данных по радиоканалу) 10 страница63743 (589029) страница 102016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 10)

SendCommandHost("TXT",block); // отправка блока в host

}

} // end of while

} // end of main()

/*-------------------------------------------------------------*/

int CheckCommRequest(char *DATA) // Проверка корректности номера

// объекта связи (парохода), по

// которому происходит связь с данным

// объектом

{

int j=0,tmp;

for(j=0;DATA[j]!=';';)

{

tmp = DATA[j];

if(!(tmp>='0' && tmp<='9')) // цифры не могут быть кодом объекта

{

SendHostError(11,tmp); /* ERR;01.1;ID WRONG DIGIT (%c),ID[j] */

return 1;

}

CALL_ID[j] = tmp;

j++;

if(j>9) break;

}

CALL_ID[j]=0;

if(j!=4 && j!=5 && j!=9) /* incorrect ID */ // символ ';' в коде должен быть // третьим, четвертым или восьмым

{

SendHostError(12,j);

return 1;

}

return 0; // проверка успешна, возврат 0.

}

/*-------------------------------------------------------------*/

// массив названий команд для функции SendCommandHost(char *cmd, ...)

char *cmds[] =

{

"TXT","ARQ","CFE","SFE","SET", /* 0... 4 */

"STA","INI","DEB","DBG","DIA", /* 5... 9 */

"FRE","STB","TST","STR","FCC", /* 10...14 */

NULL

};

int CheckCommRequest(char *DATA);

/*-------------------------------------------------------------*/

Программа модуляции

За основу данного способа модуляции взята - частотная модуляция с использованием протокола морского телеграфа NBDP ( narrowband direct printing) - узкополосное буквопечатанье. В основе лежит таблица кодовых значений сиволов, которые представляются в виде комбинации 1 и 0 и после модулируются с соответственно частотами 1615 Hz и 1785 Hz. ( таблица символов в файле nbdp_table.c ).

Mod.c

// Подключаем заголовочные файлы и объявляем локальные и глобальные // переменные

#include

#include

#include

/*-------------------------------------------------------------*/

/*#define OUT_KOEFF 0x6000*/

#ifdef RX_TO_TX_

extern int RX_TO_TX[2];

#endif

/*-------------------------------------------------------------*/

int PH_ACC,TMP_PH_ACC;

int PH_INC;

int mod_ready=1;

int BITTIME=1;

int bits_left;

int out_data;

volatile int l_out,r_out;

extern int FDIV,FS_PTT_OFF;

int dbg_cntr;

/*-------------------------------------------------------------*/

/* MODULATOR */

/*-------------------------------------------------------------*/

extern void Timing(void);

void modulator(void)

{

// Возможна работа в тестовом режиме.

if(SelfTest) goto test_modes;

FDIV++;

// через 10 мс обнуление отсчетов и посылка в хост синхронизирующего // сигнала цикла ARQ.

if(FDIV==80) {FDIV=0;NBDP_THR_TX();}

#ifdef RX_TO_TX_

tx_buf[1] = RX_TO_TX[0];

tx_buf[2] = RX_TO_TX[1];

return;

#endif

// Проверка нужна ли модуляция, если нет то возврат

if(!Modulator_ON)

{

PH_ACC = 0;

return;

}

restart:

if(mod_ready)

{

tx_buf[1] = tx_buf[2] = 0;

if(FS_PTT_OFF) // выключение модуляции

{

FS_PTT_OFF=0;

PTT_OFF();

}

return;

}

test_modes:

BITTIME--;

if(BITTIME==0)

{

/*=== determine the new bit from out byte ===*/

// Режим реальной работы

if(!SelfTest) out_data <<= 1; /* 7 bit mode */

if(out_data & 0x80) /* MARK */

{

PH_INC = MARK_INC;

asm("

#define PFDATA 0x3fe5

ar = b#0000000001000000; /* set 1 PF6/TLG OUT */

ay1 = dm(PFDATA);

ar = ar or ay1;

dm(PFDATA) = ar;");

}

else /* SPACE */

{

PH_INC = SPACE_INC;

asm("

ar = b#1111111110111111; /* reset 1 PF6/TLG OUT */

ay1 = dm(PFDATA);

ar = ar and ay1;

dm(PFDATA) = ar;");

}

// Тестовый режим, работа в 8-битном режиме

if(SelfTest) out_data <<= 1;

BITTIME = BITLENGTH;

bits_left--;

if(bits_left<0)

{

mod_ready=1;

modulating();

goto restart;

}

else

{

/* blink by PF7 as syncro_out */

asm("

ar = dm(PFDATA);

ar = tglbit 7 of ar;

dm(PFDATA) = ar; ");

/* -------------------------- */

}

}

/*asm ("dis m_mode;");*/

PH_ACC += PH_INC;

l_out = sin_i(PH_ACC);

tx_buf[2] = l_out; // выдача результатов в порт ( связь с кодеком)

}

/*-------------------------------------------------------------*/

void modulating(void)

{

if(SelfTest)

{

if(SelfTest==1) /* space */

{

out_data = 0;

}

else if(SelfTest==2) /* mark */

{

out_data = 0xFF;

}

else if(SelfTest==3) /* dot */

{

/* 10101010 */

out_data = 0xAA;

}

else if(SelfTest==4) /* big dot */

{

/* 11110000 */

out_data = 0xF0;

}

else

{

SelfTest=0;

}

BITTIME=1;

bits_left=8; // 8-битный режим работы

mod_ready=0;

return;

}

// В случае тестового режима дальше не идем

if(mod_ready == 0) return;

BITTIME=1;

if(ModulatorGet(&out_data)==0) /* nothing to get */

{

// обнуление флагов и возврат

/* clear PF6 as TLG & PF7 as syncro_out */

asm("

ar = dm(PFDATA);

ar = clrbit 7 of ar;

ar = clrbit 6 of ar;

dm(PFDATA) = ar; ");

/* -------------------------- */

return;

}

bits_left=7; // 7-битный режим работы

mod_ready=0;

}

Программа демодуляции

Принцип демодуляции входного сигнала нашего устройства, основывается на том, что нам известны частоты поступающие от отдельного устройства приема сигнала по радиоканалу, уже отфильтрованные и поданные на вход нашего устройства. И нам необходимо выделить соответственно частоты 1785 Hz = MARK = ' 0 ' и 1615 Hz = SPACE = ' 1 ' и получить определенный код. После получении кода происходит раскодирование по таблице NBDP и передача в ЭВМ, где программа TERMINAL соответственно реагирует на данные кода.

// Demod.c

// Подключаем заголовочные файлы и объявляем локальные и глобальные // переменные

#include

#include

#include

#include

extern void out_mcr(int data);

#define DMD_KOEFF 0x019A

#define DMD_LEVEL 0x1000 /* порог срабатывания */

#define OUT_MARK 'M'

#define OUT_SPACE 'S'

#define OUT_ERR 'E'

int my_fir(int NewValue);

int my_sqrt(int NewValue);

/*-------------------------------------------------------------*/

volatile int l_in,r_in;

int Demodulator_ON=1; // Demodulator ON/OFF flag

int PH_TONE_ACC[2]; // опорный MARK/SPACE PHASE ACC

int PH_TONE_INC[2] = {MARK_INC, SPACE_INC};

int i,j; // временные счетчики

int R [4]; // временные результаты

int S [4]; // частичные суммы

int DL[4*BITLENGTH]; // Delay lines for 4 bands

int DLp = 0; // DL pointer

int countN=BITLENGTH; // Cycle count

int REZ[2]; // Результаты

int PRZLT[2]; // Приблизительные результаты (prev. Rez)

int svMode; /* Save multiplier mode location */

int JitterOff; /* Bit syncro OFF flag */

int OutData[2];

void demodulator(void)

{

// Если демодулятор откл., то обнуление результатов и возврат

if(!Demodulator_ON && (dip_sw & DIP_SW1))

{

REZ[0] = 0;

out_mcr(0);

goto CheckCycle;

}

if(SelfTest) // Если тестовый режим, то возврат

{

return;

}

// Выключение режима целочисленной арифметики

asm("dis m_mode;");

l_in = rx_buf[IN_CHNL];

// ограничить входной сигнал для устранения переполнения фильтра

r_in = _FRACT_MULTIPLY_(r_in,DMD_KOEFF);

Заполняем массив временных результатов для MARK и SPACE

PH_TONE_ACC[0] += PH_TONE_INC[0];

R[0] = _FRACT_MULTIPLY_(r_in,sin_i(PH_TONE_ACC[0]));

R[1] = _FRACT_MULTIPLY_(r_in,cos_i(PH_TONE_ACC[0]));

PH_TONE_ACC[1] += PH_TONE_INC[1];

R[2] = _FRACT_MULTIPLY_(r_in,sin_i(PH_TONE_ACC[1]));

R[3] = _FRACT_MULTIPLY_(r_in,cos_i(PH_TONE_ACC[1]));

//Извлекаем старые данные и добавляем новые

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

{

S[i] = S[i] - DL[DLp];

S[i] = S[i] + R[i];

DL[DLp++] = R[i];

}

if(DLp >= (4*BITLENGTH)) DLp=0; /* wrap DL pointer */

// Получение результата по каждому фильтру.

PRZLT[0] = REZ[0]; // Предварительный результат

REZ[0] = _FRACT_MULTIPLY_(S[0],S[0]) + _FRACT_MULTIPLY_(S[1],S[1]);

REZ[1] = _FRACT_MULTIPLY_(S[2],S[2]) + _FRACT_MULTIPLY_(S[3],S[3]);

if(dip_sw & DIP_SW2)

{

REZ[0] = my_sqrt(REZ[0]);

REZ[1] = my_sqrt(REZ[1]);

}

R[1] = (REZ[0]-REZ[1]);

R[2] = (REZ[0]+REZ[1]);

R[0] = _FRACT_MULTIPLY_((_FRACT_DIVIDE_(R[1],R[2])),0x6400);

REZ[0] = R[0];

/* debug solution output */

tx_buf[1] = REZ[0];

/*================================================

STEP 4.

Time supervision, bit detection, etc.

================================================*/

CheckCycle:

countN--;

if(!countN)

{

if(abs(REZ[0]) > DMD_LEVEL)

{

if(REZ[0] > 0)

{

OutData[0] = OUT_MARK;

asm("reset fl0; set fl2; set fl1; ");

}

else

{

OutData[0] = OUT_SPACE;

asm(" set fl0; reset fl2; set fl1; ");

}

}

else

{

OutData[0] = OUT_ERR;

asm(" set fl0; set fl2; reset fl1; ");

}

countN = BITLENGTH;

// отправляем на ЦАП (кодек)

NBDP_THR_RX(OutData[0]);

}

// включение режима целочисленной арифметики

asm("ena m_mode;");

}

Дополнительные программы и функции

1. Программа nbdp_table.c

Содержит таблицу соответствия кодов ASCII и кодов формата NBDP.

#include

/*B - MARK FREQ:1785Hz

/*Y - SPACE FREQ:1615Hz

/* ¦ +-----------------¦ 5-Unit ¦ 7-Unit ¦ */

/* ¦No ¦LET ¦FIG ¦RUS ¦ Code ¦ Code ¦ */

UCHAR _7bit_code[]= { /*+--+-----+-----+-----+---------+-----------¦ */

0x71 ,/*¦01¦A 41 ¦- 2D ¦А 80 ¦ZZAAA ¦BBBYYYB 71 ¦ */

0x27 ,/*¦02¦B 42 ¦? 3F ¦Б 81 ¦ZAAZZ ¦YBYYBBB 27 ¦ */

0x5c ,/*¦03¦C 43 ¦: 3A ¦Ц 96 ¦AZZZA ¦BYBBBYY 5C ¦ */

0x65 ,/*¦04¦D 44 ¦Wh?? ¦Д 84 ¦ZAAZA ¦BBYYBYB 65 ¦ */

0x35 ,/*¦05¦E 45 ¦3 33 ¦Е 85 ¦ZAAAA ¦YBBYBYB 35 ¦ */

0x6c ,/*¦06¦F 46 ¦Э*9D ¦Ф 94 ¦ZAZZA ¦BBYBBYY 6C ¦ */

0x56 ,/*¦07¦G 47 ¦Ш*98 ¦Г 83 ¦AZAZZ ¦BYBYBBY 56 ¦ */

0x4b ,/*¦08¦H 48 ¦Щ*99 ¦Х 95 ¦AAZAZ ¦BYYBYBB 4B ¦ */

0x59 ,/*¦09¦I 49 ¦8 38 ¦И 88 ¦AZZAA ¦BYBBYYB 59 ¦ */

0x74 ,/*¦10¦J 4A ¦Ю*07 ¦Й 89 ¦ZZAZA ¦BBBYBYY 74 ¦ */

0x3c ,/*¦11¦K 4B ¦( 28 ¦К 8A ¦ZZZZA ¦YBBBBYY 3C ¦ */

0x53 ,/*¦12¦L 4C ¦) 29 ¦Л 8B ¦AZAAZ ¦BYBYYBB 53 ¦ */

0x4e ,/*¦13¦M 4D ¦. 2E ¦М 8C ¦AAZZZ ¦BYYBBBY 4E ¦ */

0x4d ,/*¦14¦N 4E ¦, 2C ¦Н 8D ¦AAZZA ¦BYYBBYB 4D ¦ */

0x47 ,/*¦15¦O 4F ¦9 39 ¦О 8E ¦AAAZZ ¦BYYYBBB 47 ¦ */

0x5a ,/*¦16¦P 50 ¦0 30 ¦П 8F ¦AZZAZ ¦BYBBYBY 5A ¦ */

0x3a ,/*¦17¦Q 51 ¦1 31 ¦Я 9F ¦ZZZAZ ¦YBBBYBY 3A ¦ */

0x55 ,/*¦18¦R 52 ¦4Ч34 ¦Р 90 ¦AZAZA ¦BYBYBYB 55 ¦ */

0x69 ,/*¦19¦S 53 ¦' 27 ¦С 91 ¦ZAZAA ¦BBYBYYB 69 ¦ */

0x17 ,/*¦20¦T 54 ¦5 35 ¦Т 92 ¦AAAAZ ¦YYBYBBB 17 ¦ */

0x39 ,/*¦21¦U 55 ¦7 37 ¦У 93 ¦ZZZAA ¦YBBBYYB 39 ¦ */

0x1e ,/*¦22¦V 56 ¦= 3D ¦Ж 86 ¦AZZZZ ¦YYBBBBY 1E ¦ */

0x72 ,/*¦23¦W 57 ¦2 32 ¦В 82 ¦ZZAAZ ¦BBBYYBY 72 ¦ */

0x2e ,/*¦24¦X 58 ¦/ 2F ¦Ь 9C ¦ZAZZZ ¦YBYBBBY 2E ¦ */

0x6a ,/*¦25¦Y 59 ¦6 36 ¦Ы 9B ¦ZAZAZ ¦BBYBYBY 6A ¦ */

0x63 ,/*¦26¦Z 5A ¦+ 2B ¦З 87 ¦ZAAAZ ¦BBYYYBB 63 ¦ */

0x0f ,/*¦27¦CR 0D -- ----- ¦AAAZA ¦YYYBBBB 0F ¦ */

0x1b ,/*¦28¦LF 0A -- ----- ¦AZAAA ¦YYBBYBB 1B ¦ */

0x2d ,/*¦29¦LET 16 -- ----- ¦ZZZZZ ¦YBYBBYB 2D ¦ */

0x36 ,/*¦30¦FIG 0F -- ----- ¦ZZAZZ ¦YBBYBBY 36 ¦ */

0x1d ,/*¦31¦SP 20 -- ----- ¦AAZAA ¦YYBBBYB 1D ¦ */

0x2b ,/*¦32¦RUS 00 -- ----- ¦AAAAA ¦YBYBYBB 2B ¦ */

/*-------------------------------------------------------------- */

#ifdef RUSSIAN // структура данных под русский алфавит

struct CVT CVT_TABLE[] =

{

/*¦ +-----------------¦ 5-Unit ¦ 7-Unit ¦ */

/*¦ No ¦LET ¦ FIG ¦RUS ¦ Code ¦ Code ¦ */

/*+----+-------+-------+---------+--------------------¦ */

{0x41,0x2D,'a' },/*¦01¦A 41 ¦- 2D ¦А 80 ¦ZZAAA ¦BBBYYYB 71 ¦ */

{0x42,0x3F,'b' },/*¦02¦B 42 ¦? 3F ¦Б 81 ¦ZAAZZ ¦YBYYBBB 27 ¦ */

{0x43,0x3A,'c' },/*¦03¦C 43 ¦: 3A ¦Ц 96 ¦AZZZA ¦BYBBBYY 5C ¦ */

{0x44,0x03,'d' },/*¦04¦D 44 ¦Wh?? ¦Д 84 ¦ZAAZA ¦BBYYBYB 65 ¦ */

{0x45,0x33,'e' },/*¦05¦E 45 ¦3 33 ¦Е 85 ¦ZAAAA ¦YBBYBYB 35 ¦ */

{0x46,'|' ,'f' },/*¦06¦F 46 ¦Э*9D ¦Ф 94 ¦ZAZZA ¦BBYBBYY 6C ¦ */

{0x47,'{' ,'g' },/*¦07¦G 47 ¦Ш*98 ¦Г 83 ¦AZAZZ ¦BYBYBBY 56 ¦ */

{0x48,'}' ,'h' },/*¦08¦H 48 ¦Щ*99 ¦Х 95 ¦AAZAZ ¦BYYBYBB 4B ¦ */

{0x49,0x38,'i' },/*¦09¦I 49 ¦8 38 ¦И 88 ¦AZZAA ¦BYBBYYB 59 ¦ */

{0x4A,'`' ,'j' },/*¦10¦J 4A ¦Ю*07 ¦Й 89 ¦ZZAZA ¦BBBYBYY 74 ¦ */

{0x4B,0x28,'k' },/*¦11¦K 4B ¦( 28 ¦К 8A ¦ZZZZA ¦YBBBBYY 3C ¦ */

{0x4C,0x29,'l' },/*¦12¦L 4C ¦) 29 ¦Л 8B ¦AZAAZ ¦BYBYYBB 53 ¦ */

{0x4D,0x2E,'m' },/*¦13¦M 4D ¦. 2E ¦М 8C ¦AAZZZ ¦BYYBBBY 4E ¦ */

{0x4E,0x2C,'n' },/*¦14¦N 4E ¦, 2C ¦Н 8D ¦AAZZA ¦BYYBBYB 4D ¦ */

{0x4F,0x39,'o' },/*¦15¦O 4F ¦9 39 ¦О 8E ¦AAAZZ ¦BYYYBBB 47 ¦ */

{0x50,0x30,'p' },/*¦16¦P 50 ¦0 30 ¦П 8F ¦AZZAZ ¦BYBBYBY 5A ¦ */

{0x51,0x31,'q' },/*¦17¦Q 51 ¦1 31 ¦Я 9F ¦ZZZAZ ¦YBBBYBY 3A ¦ */

{0x52,0x34,'r' },/*¦18¦R 52 ¦4Ч34 ¦Р 90 ¦AZAZA ¦BYBYBYB 55 ¦ */

{0x53,0x27,'s' },/*¦19¦S 53 ¦' 27 ¦С 91 ¦ZAZAA ¦BBYBYYB 69 ¦ */

{0x54,0x35,'t' },/*¦20¦T 54 ¦5 35 ¦Т 92 ¦AAAAZ ¦YYBYBBB 17 ¦ */

{0x55,0x37,'u' },/*¦21¦U 55 ¦7 37 ¦У 93 ¦ZZZAA ¦YBBBYYB 39 ¦ */

{0x56,0x3D,'v' },/*¦22¦V 56 ¦= 3D ¦Ж 86 ¦AZZZZ ¦YYBBBBY 1E ¦ */

{0x57,0x32,'w' },/*¦23¦W 57 ¦2 32 ¦В 82 ¦ZZAAZ ¦BBBYYBY 72 ¦ */

{0x58,0x2F,'x' },/*¦24¦X 58 ¦/ 2F ¦Ь 9C ¦ZAZZZ ¦YBYBBBY 2E ¦ */

{0x59,0x36,'y' },/*¦25¦Y 59 ¦6 36 ¦Ы 9B ¦ZAZAZ ¦BBYBYBY 6A ¦ */

{0x5A,0x2B,'z' },/*¦26¦Z 5A ¦+ 2B ¦З 87 ¦ZAAAZ ¦BBYYYBB 63 ¦ */

{0x0D,0x0D,0x0D},/*¦27¦CR 0D -- ----- ¦AAAZA ¦YYYBBBB 0F ¦ */

{0x0A,0x0A,0x0A},/*¦28¦LF 0A -- ----- ¦AZAAA ¦YYBBYBB 1B ¦ */

{0x01,0x01,0x01},/*¦29¦LET 16 -- ----- ¦ZZZZZ ¦YBYBBYB 2D ¦ */

{0x02,0x02,0x02},/*¦30¦FIG 0F -- ----- ¦ZZAZZ ¦YBBYBBY 36 ¦ */

{0x20,0x20,0x20},/*¦31¦SP 20 -- ----- ¦AAZAA ¦YYBBBYB 1D ¦ */

{0x03,0x03,0x03},/*¦32¦RUS 00 -- ----- ¦AAAAA ¦YBYBYBB 2B ¦ */

2. Программа nbdp.c

Содержит функции для работы с протоколом NBDP, а также объявление всех глобальных переменных используемых в обмене данными по протоколу NBDP.

#include

#include

#include

#include

#include

/*-------------------------------------------------------------*/

UINT No; /* Channel No */

UCHAR COMF; /* COMMUNICATION FLAG */

/* b0 : 0=stanby 1=communication */

/* b1 : 1=ARQ Mode */

/* b2 : 1=CFEC Mode */

/* b3 : 1=SFEC Mode */

/* b4 : 1=GFEC Mode */

/* b5 : 0=send 1=recv */

/* b6 : 1 = SLAVE wait PHASING, 0 = SLAVE PHASED */

/* b7 : */

UCHAR STATE; /* COMMUNICATION STATE */

UCHAR LAST_STATE;

/* FEC ARQ */

/* 0 stand-by stand-by */

/* 1 set receive mode send before process */

/* 2 syncro signal rx receive before process */

/* 3 FEC msg rcv 7id-phasing-master */

/* 4 Synchronous signal send 7id-rephasing-master */

/* 5 ID send 4id-phasing-master */

/* 6 FEC msg send 4id-rephasing-master */

/* 7 stop signal send 7id-phasing-slave */

/* 8 7id-rephasing-slave */

Характеристики

Тип файла
Документ
Размер
10,63 Mb
Учебное заведение
Неизвестно

Список файлов ВКР

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее