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 |
Команды выполняются, независимо, в верхнем или нижнем регистре они написаны.