Bläddra i källkod

Basic USBasp HID UART demo

Dimitrios Chr. Ioannidis 8 månader sedan
förälder
incheckning
94818784b8

+ 5 - 6
demo/opendevice/prjUSBaspOpen.lpi

@@ -30,14 +30,13 @@
           </SearchPaths>
           <CodeGeneration>
             <SmartLinkUnit Value="True"/>
-            <Optimizations>
-              <OptimizationLevel Value="3"/>
-            </Optimizations>
           </CodeGeneration>
           <Linking>
             <Debugging>
               <GenerateDebugInfo Value="False"/>
-              <RunWithoutDebug Value="True"/>
+              <DebugInfoType Value="dsDwarf2Set"/>
+              <UseLineInfoUnit Value="False"/>
+              <StripSymbols Value="True"/>
             </Debugging>
             <LinkSmart Value="True"/>
             <Options>
@@ -70,6 +69,7 @@
         <Filename Value="prjusbaspopendevice.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="Form1"/>
+        <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="prjUSBaspOpenDevice"/>
       </Unit>
@@ -102,10 +102,9 @@
     </CodeGeneration>
     <Linking>
       <Debugging>
-        <DebugInfoType Value="dsDwarf3"/>
+        <DebugInfoType Value="dsDwarf2Set"/>
         <UseHeaptrc Value="True"/>
         <TrashVariables Value="True"/>
-        <UseExternalDbgSyms Value="True"/>
       </Debugging>
       <Options>
         <Win32>

+ 29 - 4
demo/opendevice/prjusbaspopendevice.lfm

@@ -8,14 +8,15 @@ object Form1: TForm1
   ClientWidth = 320
   OnCreate = FormCreate
   OnDestroy = FormDestroy
+  LCLVersion = '2.2.6.0'
   object Button1: TButton
     Left = 24
     Height = 25
     Top = 24
     Width = 75
     Caption = 'Button1'
-    TabOrder = 0
     OnClick = Button1Click
+    TabOrder = 0
   end
   object Button2: TButton
     Left = 24
@@ -23,8 +24,8 @@ object Form1: TForm1
     Top = 72
     Width = 75
     Caption = 'Button2'
-    TabOrder = 1
     OnClick = Button2Click
+    TabOrder = 1
   end
   object Button3: TButton
     Left = 144
@@ -32,8 +33,8 @@ object Form1: TForm1
     Top = 24
     Width = 75
     Caption = 'Button3'
-    TabOrder = 2
     OnClick = Button3Click
+    TabOrder = 2
   end
   object Button4: TButton
     Left = 144
@@ -41,7 +42,31 @@ object Form1: TForm1
     Top = 72
     Width = 75
     Caption = 'Button4'
-    TabOrder = 3
     OnClick = Button4Click
+    TabOrder = 3
+  end
+  object Memo1: TMemo
+    Left = 0
+    Height = 114
+    Top = 126
+    Width = 320
+    Align = alBottom
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    Lines.Strings = (
+      'Memo1'
+    )
+    OnChange = Memo1Change
+    OnDblClick = Memo1DblClick
+    ScrollBars = ssBoth
+    TabOrder = 4
+    WordWrap = False
+  end
+  object Label1: TLabel
+    Left = 260
+    Height = 15
+    Top = 49
+    Width = 34
+    Caption = 'Label1'
+    ParentColor = False
   end
 end

+ 43 - 2
demo/opendevice/prjusbaspopendevice.pas

@@ -17,14 +17,21 @@ type
     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;
@@ -41,6 +48,8 @@ implementation
 procedure TForm1.FormCreate(Sender: TObject);
 begin
   FUSBasp := TUSBasp.Create;
+  FUSBasp.OnUARTReceive := @USBaspDataReceive;
+  FUSBasp.OnStatusChange := @USBaspStatusChange;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
@@ -55,7 +64,8 @@ end;
 
 procedure TForm1.Button3Click(Sender: TObject);
 begin
-  FUSBasp.UARTOpen(9600, USBASP_UART_BYTES_8B, USBASP_UART_PARITY_NONE, USBASP_UART_STOP_1BIT);
+  FUSBasp.UARTOpen(19200, USBASP_UART_BYTES_8B, USBASP_UART_PARITY_NONE,
+    USBASP_UART_STOP_1BIT);
 end;
 
 procedure TForm1.Button4Click(Sender: TObject);
@@ -68,5 +78,36 @@ begin
   FUSBasp.Free;
 end;
 
-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.