ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 14
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской Федерации
Муромский институт (филиал)
федерального государственного бюджетного образовательного учреждения высшего образования
«Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых»
(МИ ВлГУ)
Факультет ФИТР
Кафедра УКТС
Лабораторная
РАБОТА №1
По дисциплине: ВООП
( наименование дисциплины)
Т ема: Работа с портом
Руководитель
Ц аплев
(фамилия, инициалы)
(подпись) (дата)
С тудент гр. Пз-119
(группа)
Б ичагова Т. Ю.
(фамилия, инициалы)
(подпись) (дата)
Муром
ЛАБОРАТОРНАЯ РАБОТА № 1
Работа с портом.
Цель работы: Научиться отображать данные, полученные с виртуального СОМ порта с помощью средств графического объектно-ориентированного программирования.
Теоретические сведения
Существует множество устройств, которые подключаются к компьютеру через СОМ порт, но, поскольку в состав современных компьютеров все реже входят СОМ порты, то связь с СОМ устройствами выполняется через USB порты дополненными специальными преобразователями сигналов. Значительное повышение частоты сигналов в USB линии (в сравнении с сигналами СОМ порта)
накладывает ограничение на длину линий, повышает их стоимость и требует решения вопросов согласования линий. В этой работе на примере контроллера Arduino UNO рассматривается подключение СОМ устройства к компьютеру.
Типовая схема подключения контроллера Arduino UNO к компьютеру через USB порт показана на рисунке 1.
Рисунок 1. Типовое подключение контроллера Arduino UNO к компьютеру через USB порт.
Со стороны компьютера канал связи виден как стандартный СОМ порт. Но, на самом деле, это виртуальный СОМ порт с которым компьютер обменивается пакетами данных на частоте 12 МГц, а специализированный контроллер, расположенный на плате Arduino UNO, преобразует пакеты USB данных в последовательность бит в формате асинхронного интерфейса UART с уровнями 0/5В, которые и используются основным контроллером Arduino UNO (микросхема ATmega328P) для загрузки программ и обмена данными с компьютером в процессе выполнения программ.
Задание на лабораторную работу.
1. Написать скетч и загрузить на плату Arduino. Программа должна передавать в com - порт символ.
2. Написать программу на языке Object Pascal (Delphi) которая будет считывать данные с порта к которому подключена плата Arduino, и выводить результат в окне программы.
Ход работы:
-
Написали скетч и загрузили на плату Arduino. Программа должна передавать в com - порт символ. Результат представлен на рис. 2.
Рисунок 2 – Листинг рабочей области
-
Написали программу на языке Object Pascal (Delphi), которая будет считывать данные с порта к которому подключена плата Arduino и выводить результат в окне программы.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComPort;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
ComboBox1: TComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FPort:TComPort;
procedure OnReadByte(const b:byte; PortState:TComStat; ErrCode,ModemState:cardinal);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FPort:=TComPort.Create(Self);
FPort.OnReadByte:=OnReadByte;
FPort.EnumComPortsEx(Combobox1.Items);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FPort.Close;
FPort.ReadActive:=false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FPort.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var b: byte;
begin
FPort.ComPort:=PChar(Combobox1.Items.Strings[Combobox1.itemindex]);
Fport.Open;
while Fport.Connected=false do
begin
end;
begin
FPort.ReadActive:=true;
FPort.Connect;
Fport.ReadByte(b);
Memo1.Lines.Add('значение'+inttostr(b));
end;
end;
procedure TForm1.OnReadByte(const b:byte; PortState: TComStat; ErrCode, ModemState:cardinal);
var AvBytes:cardinal;
MyBuff: array[0..2] of Char; //буфер для чтения данных
Str: string; //вспомогательная строка
k: integer;
Begin
AvBytes:=PortState.cbInQue;
FillChar(MyBuff, SizeOf(MyBuff),b);
if AvBytes>0 then
begin
for k := 1 to Length(MyBuff) do begin
Str := Str + ' ' + inttohex(Ord(MyBuff[k-1]),2);
end;
Memo1.Lines.Add(Str);
end;
end;
Рисунок 3 – Рабочая область созданной программы
Рисунок 4 – Результат работы программы
Вывод: В ходе выполнения данной лабораторной работы мы научились отображать данные, полученные с виртуального СОМ порта с помощью средств графического объектно-ориентированного программирования.