| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- unit prjUSBaspOpenDevice;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
- USBasp;
- type
- { TForm1 }
- TForm1 = class(TForm)
- Button1: TButton;
- Button2: TButton;
- Button3: TButton;
- Button4: TButton;
- Label1: TLabel;
- Memo1: TMemo;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure Memo1Change(Sender: TObject);
- procedure Memo1DblClick(Sender: TObject);
- private
- FUSBasp: TUSBasp;
- procedure USBaspDataReceive(Sender: TObject; ASerialData: TByteArray;
- ASerialDataLength: SizeInt);
- procedure USBaspStatusChange(Sender: TObject);
- public
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.lfm}
- { TForm1 }
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- FUSBasp := TUSBasp.Create;
- FUSBasp.OnUARTReceive := @USBaspDataReceive;
- FUSBasp.OnStatusChange := @USBaspStatusChange;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- FUSBasp.Connect;
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- FUSBasp.Disconnect;
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- FUSBasp.UARTOpen(19200, USBASP_UART_BYTES_8B, USBASP_UART_PARITY_NONE,
- USBASP_UART_STOP_1BIT);
- end;
- procedure TForm1.Button4Click(Sender: TObject);
- begin
- FUSBasp.UARTClose;
- end;
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- FUSBasp.Free;
- end;
- procedure TForm1.Memo1Change(Sender: TObject);
- begin
- if Memo1.Lines.Count > 150 then
- begin
- Memo1.Lines.BeginUpdate;
- while Memo1.Lines.Count > 150 do
- Memo1.Lines.Delete(0);
- Memo1.Lines.EndUpdate;
- end;
- end;
- procedure TForm1.Memo1DblClick(Sender: TObject);
- begin
- Memo1.Clear;
- end;
- procedure TForm1.USBaspDataReceive(Sender: TObject; ASerialData: TByteArray;
- ASerialDataLength: SizeInt);
- begin
- Memo1.Lines.BeginUpdate;
- Memo1.Lines.Append(TEncoding.ASCII.GetString(ASerialData, 0, ASerialDataLength));
- Memo1.SelStart := Length(Memo1.Lines.Text);
- Memo1.VertScrollBar.Position := Memo1.Lines.Count;
- Memo1.Lines.EndUpdate;
- end;
- procedure TForm1.USBaspStatusChange(Sender: TObject);
- begin
- Randomize;
- Label1.Caption := 'Changed' + IntToStr(Random(999));
- end;
- end.
|