Пишем программу для LaunchPad с использованием GUI

Как упоминалось ранее микроконтроллеры LaunchPad обладают UART. Используя UART, можно посылать и принимать команды на микроконтроллер. Если вы для программирования микроконтроллера платформы LaunchPad применяли среду Energia, то для работы с UART использовался Serial Monitor. Передача данных и их прием происходил через подключенный COM-порт. К какому порту подключена платформа  LaunchPad можно, узнать благодаря диспетчеру устройств.

Таким образом, используя какой-либо язык программирования, поддерживающий работу с COM-портом можно реализовать собственную программу для микроконтроллера платформы LaunchPad. Например, на Delphi или C++. Используя данные языки программирования, существует возможность реализовать графический интерфейс через, который будет осуществлять управление микроконтроллером платформы LaunchPad.

Для примера модифицируем программу мигания светодиодами в зависимости от полученных данных, используя UART.

1. Реализация программы для микроконтроллера

Для реализации программы была взята среда программирования Energia.

int const ledGreen=GREEN_LED;   // определяем константы зеленного светодиода
int const ledRed=RED_LED;       // определяем константы красного светодиода
int incomingByte = 0;           // переменная для хранения вводимых данных

void setup(){                  

Serial.begin(9600);             // определения скорости передачи данных

pinMode(ledGreen, OUTPUT);      // установка режима для светодиода (З)
pinMode(ledRed, OUTPUT);        // установка режима для светодиода (К)

}

void loop(){

incomingByte = int(Serial.read());  

if (incomingByte != -1){  // по умолчанию выводится -1
Serial.print("->");        // для того чтобы оно постоянно не мелькало, делаем условие (не обязательно)
Serial.println(incomingByte, DEC); // если введено число, то оно выводится на терминал
}

// Узнаем, какое число было введено и в зависимости от этого
// изменяем параметры светодиода.
// 0 - выкл. зеленый, 1 - вкл. зеленый,
// 2 - выкл. красный, 3 - вкл. красный.

switch (incomingByte){
  case 1 : digitalWrite(ledGreen, LOW);
           break;
  case 3 : digitalWrite(ledGreen, HIGH);
           break;
  case 7 : digitalWrite(ledRed, LOW);
           break;
  case 8 : digitalWrite(ledRed, HIGH);
           break;
} 
// устанавливаем задержку 1 миллисекунду
delay(100);
}

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

Для реализации поставленной задачи была выбрана среда программирования Delphi XE с установленным компонентом CPortLib , который позволяет облегчить работу с COM-портом.

Программа, не содержит не каких проверок, был реализован самый просто пример, чтобы продемонстрировать работу языка Delphi с COM-портом.

//вспомогательная структура для установки команд COM-порта
TControlPacket=record
    red,
    green: Byte;
  end;

var
  Form4: TForm4;
  strListPort: TStrings;  //создаем объект для последующего заполнения подключенными COM-портами
  cmd : TControlPacket;  //Структура команд

implementation

procedure TForm4.Button1Click(Sender: TObject);
begin

// задаем порт, выбрав его  из списка подключенных портов
 ComPort1.Port:= ComboBox1.Items[ComboBox1.ItemIndex];  

if ComPort1.Connected then ComPort1.Close  //если порт открыт, закрываем его, а иначе открываем
  else ComPort1.Open;

if ComPort1.Connected then StatusBar1.Panels[0].Text:='Порт открыт'
   else StatusBar1.Panels[0].Text:='Порт закрыт';

 Button1.Enabled:=FALSE;
 Button3.Enabled:=TRUE;
end;

procedure TForm4.ComPort1Error(Sender: TObject; Errors: TComErrors);
begin
ShowMessage('Ошибка');
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
  EnumComPorts(ComboBox1.Items);  //Добавление существующих COM-портов в элемент ComboBox1

  if ComboBox1.ItemIndex > -1 then
    ComPort1.Port := ComboBox1.Items[ComboBox1.ItemIndex];
end;

procedure TForm4.RadioGroup1Click(Sender: TObject);
begin

//если выбран параметр Вкл (0) то включаем зеленый светодиод, иначе выключаем
 if RadioGroup1.ItemIndex=0 then cmd.green:=3
    else cmd.green:=1;
 ComPort1.Write(cmd,SizeOf(cmd));  //отправка команды микроконтроллеру через COM-порт
end;

procedure TForm4.RadioGroup2Click(Sender: TObject);
begin

//если выбран параметр Вкл (0) то включаем красный светодиод, иначе выключаем
if RadioGroup2.ItemIndex=0 then cmd.red:=8
    else cmd.red:=7;
     ComPort1.Write(cmd,SizeOf(cmd)); //отправка команды микроконтроллеру через COM-порт
end;
end.

Вид приложения управления микроконтроллером. Программа предназначена для включения/выключения красного и зеленого светодиодов имеющихся на плате LaunchPad MSP430.

delphi-com-port

Таким образом происходит разработка программ с поддержкой GUI для микроконтроллеров серии MSP430. Перед запуском программы убедитесь, что у вас установлен компонент CPortLib.