Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DIPLOM / Глава 3.docx
Скачиваний:
30
Добавлен:
09.02.2015
Размер:
29.34 Кб
Скачать

Void eraseString ()

{

for (int i = 0; i < 10; i++)

{

string[i] = '\0';

}

}

//----------!ФУНКЦИЯ ПРОВЕРКИ СТРОКИ!----------//

Int funcStroka()

{

int k = 0;

char setstring[4] = "SET";

char idnstring[6] = "*idn?";

char idnstringn[7] = "*idn?\n";

char idnstringr[7] = "*idn?\r";

char idnstringrn[8] = "*idn?\r\n";

char idnstringnr[8] = "*idn?\n\r";

char ledstringon[6] = "ledon";

char ledstring_on[7] = "led on";

char ledstringoff[7] = "ledoff";

char ledstring_off[8] = "led off";

char ledstring1[5] = "led1";

char ledstring_1[6] = "led 1";

char ledstring0[5] = "led0";

char ledstring_0[6] = "led 0";

char ledstringonN[7] = "ledon\n";

char ledstring_onN[8] = "led on\n";

char ledstringoffN[8] = "ledoff\n";

char ledstring_offN[9] = "led off\n";

char ledstring1N[6] = "led1\n";

char ledstring_1N[7] = "led 1\n";

char ledstring0N[6] = "led0\n";

char ledstring_0N[7] = "led 0\n";

//----------!ПРОВЕРКА КОМАНДЫ ОСЛАБЛЕНИЯ!----------//

for (int i = 0 ; i < 3; i++)

{

if (string[i] == setstring[i])

{

k += 1;

}

}

if (k == 3) { return 4; }

if (strcasecmp(string, idnstringrn) == 0) { return 0; }

if (strcasecmp(string, idnstring) == 0 or strcasecmp(string, idnstringn) == 0) { return 0; }

if (strcasecmp(string, idnstringr) == 0 or strcasecmp(string, idnstringnr) == 0) { return 0; }

if (strcasecmp(string, ledstringon) == 0 or strcasecmp(string, ledstring_on)==0){ return 2; }

if (strcasecmp(string, ledstring1) == 0 or strcasecmp(string, ledstring_1) == 0) { return 2; }

if (strcasecmp(string, ledstringonN) == 0 or strcasecmp(string, ledstring_onN) == 0)

{ return 2; }

if (strcasecmp(string, ledstring1N) == 0 or strcasecmp(string, ledstring_1N) == 0)

{ return 2; }

if (strcasecmp(string, ledstringoff) == 0 or strcasecmp(string,ledstring_off)==0){ return 3; }

if (strcasecmp(string, ledstring0) == 0 or strcasecmp(string, ledstring_0) == 0) { return 3; }

if (strcasecmp(string, ledstringoffN) == 0 or strcasecmp(string, ledstring_offN) == 0)

{ return 3; }

if (strcasecmp(string, ledstring0N) == 0 or strcasecmp(string,ledstring_0N)==0){ return 3; }

return 5;

}

//----------!ФУНКЦИЯ ОСЛАБЛЕНИЯ!----------//

Void funcAttenuator()

{

for (int i = 0; i < 7; i++)

{

if (nBinaryArray[i] == 0)

{

digitalWrite(attenuation[i], LOW);

}

else {digitalWrite(attenuation[i], HIGH); }

}

}

// КОНЕЦ ПРОГРАММЫ

Рассмотрим назначения некоторых переменных, массивов и функций программы, они представлены в таблице 3.1.

Таблица 3.1

Обозначение

Примечание

Назначение

nDec

переменная

Значение ослабления в десятичном виде

n

переменная

Считывает количество вводимых символов по монитору последовательного порта

k

переменная

Переменная для переключения функций

string[10]

массив

Строка ввода, считывает символы из последовательного порта

pinAtten[8]

массив

Массив с пинами вывода ослабления

nBinaryArray[8]

массив

Вводимое ослабление в двоичном виде

eraseString()

функция

Функция стирания строки ввода

funcStroka()

функция

Функция проверки строки на команды

funcAttenuator()

функция

Функция, устанавливающая ослабление на выходах

Рассмотрим как работает программа. Программа может принимать с монитора последовательного порта команды, и если эти команды совпадают с командами, записанными в программу, тогда она их начинает выполнять, в противном же случае выводит на LCD-дисплей и на монитор компьютера надпись «ENTER COMMAND». Ниже, в таблице 3.2, написан список программ, заложенных в скетч.

Таблица 3.2

Команда

Действие

*IDN?

Идентификация прибора

SETxxx

Выставление значения ослабления, вместо «ххх» надо ввести значение в дБ

LEDON

LED1

Включает светодиод платформы Arduino Nano

LEDOFF

LED0

Выключает светодиод платформы Arduino Nano

Команды выполняются, независимо, в верхнем или нижнем регистре они написаны.

Соседние файлы в папке DIPLOM