Организация рабочего места и безопасность проведения тестирования

}

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

void send_stat(void) /* Послать статус устройства в host-компьютер */

{

/*

SendCommandHost("STAT","%02X;%02X;%02X;%03X;%02X;%02X",

COMF,STATE,arqf,hiIFree,hi_count,connector);

*/

SendCommandHost("STAT","%02X;%02X;%02X;%03X;%02X;%X;%X",

COMF,STATE,arqf,hiIFree,hi_count,MODEM_STATE,connector);

}

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

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

/* Mode */

/* 0 - ARQ */

/* 1 - CFEC */

/* 2 - SFEC */

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

UCHAR convert(char ch) // Конвертер в NBDP

{

if(ch == ERR_SMBL) return ERR_SMBL;

{

int index = table2[(int) ch];

if(index)

{

struct CVT *cvt;

cvt = &CVT_TABLE[index-1];

switch(SHIFT)

{

case 0: return cvt->_LET;

case 1: return cvt->_FIG;

case 2: return cvt->_RUS;

}

}

}

return ERR_SMBL;

}

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

void NBDP_Init(void) // Инициализация NBDP (вызывается из main.c)

{

SetID(1,"32610",SIS5,NULL,1);

SetID(2,"123456789",SIS9,SCS9,1);

strcpy(SIS9,"\x2e\x33\x65\x33\x27\x39\x2e\x71\x69");

strcpy(SCS9,"\x17\x4e\x69");

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

StandBy();

}

3. Программа serial.c

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

#include <stdarg.h>

#include <string.h>

#include <drivers.h>

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

#define MAX_CMD_LEN 127

unsigned int CMDS, /* command rx state */

CMDL; /* command rx pointer */

char CMD[MAX_CMD_LEN+1]; /* command rx buffer */

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

int chr;

int SerialDriver(void) // проверка работы и инициализация последоват. порта

{

/*int chr;*/

repeat:

if(get_char(&chr))

{

if(CMDS) /* command receiving */

{

if(CMDL>=MAX_CMD_LEN)

{

SendHostError(0,0);

reset_state:

CMDL=CMDS=0;

return 0;

}

if((CMD[CMDL-1] == ';') && (chr == '@')) /* EOC */

{

CMD[CMDL++] = chr;

CMD[CMDL] = 0;

HostCommandParser(&CMD[0]);

goto reset_state;

}

else

{

CMD[CMDL++] = chr;

goto repeat;

return 0;

}

}

else /* command waiting */

{

if(chr=='$')

{

CMDL=0;

CMD[CMDL++] = chr;

CMDS=1;

goto repeat;

}

}

}

return 0;

}

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

extern unsigned int No;

char BUFFER[MAX_CMD_LEN+1];

int SendCommandHost(char *cmd, char *fmt, .) // функция для передачи

// команд в терминал

{

/* Make data string to out */

/*int len;*/

va_list argptr;

/* Out the packet header: $CMD;channel_no; */

out_char('$');

out_string(cmd/*,strlen(cmd)*/);

out_char(';');

out_char(No + 0x30);

out_char(';');

/* Out the variable part */

va_start(argptr, fmt);

/*len =*/ vprinter(&BUFFER[0], fmt, argptr);

va_end(argptr);

out_string(BUFFER/*,len*/);

/* Out the end part of packet */

out_string(";@\r\n"/*,4*/);

return 0;

}

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

int SendCommandHostDBG(int level, char *fmt, .)

{

/* Make data string to out */

/*int len;*/

va_list argptr;

if(!(dip_sw & DIP_SW4)) return 0; /* not output debug */

if(level > DebugLevel) return 0;

/* Out the packet header: $CMD;channel_no; */

out_string("$DBG;"); out_char(No + 0x30); out_char(';');

/* Out the variable part */

va_start(argptr, fmt);

vprinter(&BUFFER[0], fmt, argptr);

va_end(argptr);

out_string(BUFFER);

/* Out the end part of packet */

out_string(";@\r\n");

return 0;

}

Критичные по быстродействию функции выполняем на языке ассемблер под ADSP 2181.

Sin.dsp

Функции разложения на синус и косинус используемые при модуляции и демодуляции для вычисления "налету".

.MODULE/RAM _SIN_COS_INTEGER_;

{---------------------------------------------------------------

Sine/Cosine approximation for 1.15 format

int Y = sin_i(int X)

int Y = cos_i(int X)

---------------------------------------------------------------

---------------------------------------------------------------

Calling parameters

AR = X in scaled 1.15 format

M1 = 1

L1 = 0

Return values

Перейти на страницу: 2 3 4 5 6 7 8 9

Советуем почитать:

Идентификация технологических объектов управления
Объективные закономерности, присущие процессам переработки информации, обусловливают аналогию функциональных структур человека-оператора и управляющего устройства любого типа. Эта аналог ...

Многопроцессорный вычислительный комплекс
Вычислительная техника в своем развитии по пути повышения быстродействия ЭВМ приблизилась к физическим пределам, которые обусловлены ограниченной скоростью распространения сигналов в лин ...

Разработка конструкции и технологии изготовления модуля управления временными параметрами
Современная микроэлектроника привела к революционным преобразованиям практически во всех отраслях техники, не говоря уже о радиоэлектронной и электронно-вычислительной аппаратуре. Повыше ...

Меню



© 2015 TechExternal