procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure SerialPortNG1RxClusterEvent(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure MaskEdit2Change(Sender: TObject);
private
{ Private declarations }
scale:word;
dwError:dword;
pName:PWideChar;
flag:byte;
function StrToIntM(str:string):dword;
public
{ Public declarations }
end;
TArrBuf512 = array[0..511] of byte;
Var Form1: TForm1;
implementation
uses SerialNGBasic;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i:word;
s:string;
begin
SerialPortNG1.Active := True;
scale := 500;
ScrollBar1.Visible := False;
Chart1.BottomAxis.Minimum := 0;
Chart1.BottomAxis.Maximum := scale;
Series1.Clear;
Series2.Clear;
Series3.Clear;
Series4.Clear;
Series5.Clear;
Series6.Clear;
Series7.Clear;
Series8.Clear;
for i := 0 to 500 do
Series1.AddXY(i, ((i mod 1)*0.5)+0.25, '', ColorBox1.Selected);
Series2.AddXY(i, ((i mod 2)*0.5)+1.25, '', ColorBox2.Selected);
Series3.AddXY(i, ((i mod 2)*0.5)+2.25, '', ColorBox3.Selected);
Series4.AddXY(i, ((i mod 2)*0.5)+3.25, '', ColorBox4.Selected);
Series5.AddXY(i, ((i mod 2)*0.5)+4.25, '', ColorBox5.Selected);
Series6.AddXY(i, ((i mod 2)*0.5)+5.25, '', ColorBox6.Selected);
Series7.AddXY(i, ((i mod 2)*0.5)+6.25, '', ColorBox7.Selected);
Series8.AddXY(i, ((i mod 2)*0.5)+7.25, '', ColorBox8.Selected);
procedure TForm1.ScrollChange(Sender: TObject);
Chart1.BottomAxis.Minimum := ScrollBar1.Position;
Chart1.BottomAxis.Maximum := ScrollBar1.Position + scale;
procedure TForm1.BitBtn2Click(Sender: TObject);
Close;
procedure TForm1.SpeedButton1Click(Sender: TObject);
if (scale < 500) then
scale := scale + 10;
if (scale = 500) then
ScrollBar1.Visible := False
else
ScrollBar1.Visible := True;
ScrollBar1.Max := 500 - scale;
if (ScrollBar1.Position > (500 - scale)) then
ScrollBar1.Position := (500 - scale);
procedure TForm1.SpeedButton2Click(Sender: TObject);
if (scale > 0) then
scale := scale - 10;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
SerialPortNG1.Active := False;
procedure TForm1.BitBtn1Click(Sender: TObject);
if (ComboBox2.ItemIndex <> -1) and (ComboBox1.ItemIndex <> -1) then
s := ' ';
s[1] := char($FF);
s[2] := char($AA);
s[3] := char($3A);
s[4] := char((((ComboBox1.ItemIndex shl 1) or byte(RadioButton2.Checked))or (ComboBox2.ItemIndex shl 5)));
SerialPortNG1.SendString(s);
flag := 1;
end
MessageBox(0, 'Необходимо указать номер пускового канала и выбрать тактовый генератор!', 'Ошибка', MB_OK or MB_ICONINFORMATION);
procedure TForm1.SerialPortNG1RxClusterEvent(
Sender: TObject);
i:integer;
n:integer;
p:^TArrBuf512;
size:integer;
error:DWord;
n := SerialPortNG1.NextClusterSize;
if n >= 0 then
p := SerialPortNG1.ReadNextCluster(size, error);
if (flag=1) then
for i := 0 to n do
Series8.AddXY(i, -(((p^[i] shr 7) and 1)*0.5)+7.75, '', ColorBox8.Selected);
Series7.AddXY(i, -(((p^[i] shr 6) and 1)*0.5)+6.75, '', ColorBox7.Selected);
Series6.AddXY(i, -(((p^[i] shr 5) and 1)*0.5)+5.75, '', ColorBox6.Selected);
Series5.AddXY(i, -(((p^[i] shr 4) and 1)*0.5)+4.75, '', ColorBox5.Selected);
Series4.AddXY(i, -(((p^[i] shr 3) and 1)*0.5)+3.75, '', ColorBox4.Selected);
Series3.AddXY(i, -(((p^[i] shr 2) and 1)*0.5)+2.75, '', ColorBox3.Selected);
Series2.AddXY(i, -(((p^[i] shr 1) and 1)*0.5)+1.75, '', ColorBox2.Selected);
Series1.AddXY(i, -(( p^[i] and 1)*0.5)+0.75, '', ColorBox1.Selected);
flag := 0;
procedure TForm1.TrackBar1Change(Sender: TObject);
Edit1.Text := IntToStr(TrackBar1.Position);
procedure TForm1.ComboBox2Change(Sender: TObject);
if ComboBox2.ItemIndex = 7 then
MaskEdit1.Visible := true;
Label3.Visible := true;
MaskEdit1.Text := '';
MaskEdit1.Visible := False;
Label3.Visible := false;
procedure TForm1.MaskEdit2Change(Sender: TObject);
if MaskEdit2.Text <> '' then
if StrToIntM(MaskEdit2.Text) > 65535 then
MaskEdit2.Text := '65535';
function TForm1.StrToIntM(str:string):dword;
i,num:integer;
num := 0;
if (length(str) > 0) and (length(str) < 6) then
for i := length(str) downto 1 do
if ((str[i] >= '0')and(str[i] <= '9')) then
num := num +
(byte(str[i])-byte('0'))*
Round(Power(10,length(str)-i));
StrToIntM := num;
end.
Ім'я данного файлу : Unit2.pas
Функціональне призначення : програмне забеспечення ПК, модуль генератора слів
Файл створений для дипломного проекта захисту кваліфікації фахівця
За фахом : Системне програмування;
Тема проекту : Віртуальний вимірювальний комплекс на базі учбового лабораторного стенду;
Керівник : М.В. Скородєлов, викладач кафедри ОТП;
Розробник : О.О. Ісмаілов, студент групи КІТ-23а;
Рік розробки : 2009.
unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Mask;
type TForm2 = class(TForm)
ListBox1: TListBox;
RadioGroup1: TRadioGroup;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
CheckBox1: TCheckBox;
Label1: TLabel;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
ComboBox1: TComboBox;
Label5: TLabel;
Label6: TLabel;
MaskEdit1: TMaskEdit;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21