Serial Monitor V2

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Serial Monitor V2

Beitrag von pluto »

Hallo
- Fehlende Unit hinzugefügt, nun sollte es gehen.

Neue Version hochgeladen: V2_01
- Mehr Baud Raten(Danke für den Hinweis: Mathias)
- Ausgabe Lösch Button hatte keine Event Zuweisung
- Ein Rechtschreib Fehler "behoben", den zweiten konnte ich nicht finden.
- Eine Unit aus der LPR entfernt(Danke für den Hinweis: Mathias)
- Pfade gelöscht, die nicht mehr gebraucht wurden(lnet)


Ich habe gestern angefangen ein neuen Serial Monitor zu schreiben und bin heute Fertig geworden.

Ich habe vor einiger Zeit, nach Fertigen Serial Monitor(en) gesucht und habe leider keinen gefunden, der mir gefiel bzw. mit den ich umgehen konnte, also habe ich mir einige selbst geschrieben.

Das ist nun die dritte Variante. Die zweite war ein WebSocketServer und die erste ein einfaches Grafische Umgebung.

Diese Umgebung bietet nun einige Einstellungsmöglichkeiten mehr.

Zum Beispiel kann die:
- Baud Eingestellt werden,
- Automatisches Scrollen wird unterstützt
- Mehrer Uarts gleichzeitig wird unterstützt
- Einstellungen pro Uart werden in einer json Config im Programm Verzeichnis Abgespeichert(Ändere ich vielleicht später noch mal)

Was haltet ihr vom dem Programm? habt ihr noch den ein oder anderen "Sonder-Wunsch"?
Im Anhang findet ihr den Soruce(Ihr braucht nur noch Synapse) und ein ScreenShot.

Hinweis: Zurzeit läuft die Anwendung nur unter Linux, für Windows sollten einige Sachen geändert werden. Das werde ich in einer der nächsten Updates einbauen...
Da ich selbst kein Windows nutze, habe ich an sowas nicht gedacht.

Die Ausgaben auf dem Bild, sind die vom AM2320....

Serial_MonitorV2.png

SerialMontitorV2_01.zip
Version V2_01
(132.3 KiB) 322-mal heruntergeladen
Zuletzt geändert von pluto am Mi 29. Aug 2018, 14:46, insgesamt 4-mal geändert.
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serial Monitor V2

Beitrag von Mathias »

Was ist dies für eine Unit ?
uplArduinoPCInterface

PS: Habe die Unit gelöscht, dann wurde es kompiliert, aber es stürtzt mit einem Debuggerfehler ab, auch wen ich den Debugger deaktiviere.
Start ich es aber von eine Konsole aus, dann läuft es ohne Fehler.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Serial Monitor V2

Beitrag von sstvmaster »

Klasse Michael! So möchte ich auch programmieren können. Ich versuche mich jetzt schon seit 2 Jahren an Lazarus und Seriell, raffe es aber nicht. Danke
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

uplArduinoPCInterface

Danke für den Hinweis, werde ich löschen.

aber es stürtzt mit einem Debuggerfehler ab, auch wen ich den Debugger deaktiviere.
Start ich es aber von eine Konsole aus, dann läuft es ohne Fehler.

Komisch... Bei mir läuft es mit Debugger...Problemlos...

Der "Lösch" Button hat noch keine "Funktion", hier habe ich die Event Zuweisung vergessen.... in ein paar Tagen wird es eine neue Version geben....
Kannst es ja mal "Ohne Debugger" starten, wusste gar nicht das es diese Funktion gibt....
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

Klasse Michael! So möchte ich auch programmieren können. Ich versuche mich jetzt schon seit 2 Jahren an Lazarus und Seriell, raffe es aber nicht. Danke

Danke... Bis hierher war es ein weiter und langer Weg.. Ich habe viele Fertige Code mir angeschaut....und einiges Probiert....
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serial Monitor V2

Beitrag von Mathias »

@Pluto

Hat es einen Grund, das du nur die Port an USB ermittelst ?
In der Unit synaser gibt es ganz am Ende eine Funktion, welche alle Port durchsucht. Diese sollte auch mit Windows funktionieren.

Die Baudraten höher 115200 würde ich dir auch empfehlen. Ich bae bei mir folgende Liste eingebaut:

Code: Alles auswählen

  with ComboBox1 do begin
    Items.Delimiter := ' ';
    Items.DelimitedText := '300 600 1200 2400 9600 14400 19200 38400 57600 76800 115200 230400 250000 500000 1000000 2000000';
    Text := '9600';
  end;


So wie ich sehe kämpfst du auch mit Autoscroll. Dies habe ich bei mir folgendemssen gelöst, wen auch nicht perfekt:

Code: Alles auswählen

procedure TForm1.Timer1Timer(Sender: TObject);
var
  s: string;
  l: integer;
begin
  while Timer1.Enabled and (ser.CanRead(10)) do begin
    l := ser.WaitingData;
    SetLength(s, l);
    ser.RecvBuffer(@s[1], l);
    Memo1.Text := Memo1.Text + s;
    if CheckBox1.Checked then begin
      Memo1.SelStart := -2;
      //      Memo1.SelStart := Length(Memo1.Text);
    end;
    Application.ProcessMessages;
  end;
end;
Ansonsten ist dein Serial-Monitor um einiges komfortabler als der von Arduino. :wink:

Was ich dir noch empfehlen könnte, wäre eine HEX-Ausgabe. Und eine Sendemöglichkeit von Zeichen #0-#255.

Da hat sich noch kleinere Tipfehler eingeschlichen:

Code: Alles auswählen

     NewTab.LineBreakMod.Items.Add('Kein Zeilende');
   NewTab.LineBreakMod.Items.Add('Sowhl NL als auch CR');


Ich hoffe du bist nicht beleidigt wegen der Kritik. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

In der Unit synaser gibt es ganz am Ende eine Funktion, welche alle Port durchsucht. Diese sollte auch mit Windows funktionieren.

ja, so habe ich kein ttyS0 dabei... mir reichen die ttyUSB bzw. ttyACM...

Die Baudraten höher 115200 würde ich dir auch empfehlen. Ich bae bei mir folgende Liste eingebaut:

Danke für die Info, ich habe die liste auf die "schnelle" gefunden.... ich werde deine Liste übernehmen.

So wie ich sehe kämpfst du auch mit Autoscroll. Dies habe ich bei mir folgendemssen gelöst, wen auch nicht perfekt:

Warum kämpfen? ich habe es doch gelöst...
Ach "Memo1.SelStart := -2;" das geht auch? Danke für den Tipp, werde ich ausprobieren.

Ansonsten ist dein Serial-Monitor um einiges komfortabler als der von Arduino.

Danke!

Was ich dir noch empfehlen könnte, wäre eine HEX-Ausgabe. Und eine Sendemöglichkeit von Zeichen #0-#255.

mit Hex Zahle kenne ich mich leider nicht so gut aus.... mal sehen, und die Sendemöglichkeit von Zeichen zwischen 0 und 255 eigentlich keine schlechte Idee, mal sehen wie ich das einbauen kann.

Da hat sich noch kleinere Tipfehler eingeschlichen:

Werde ich ändern, danke für den Hinweis.

Ich hoffe du bist nicht beleidigt wegen der Kritik.

Nein, überhaupt nicht. Im Gegenteil, bin für jede Kritik dankbar, nur so kann ich das Programm verbessern.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

habe eben die neue Version hochgeladen. Das mit dem SelStart -2 klappt bei mir nicht, ändere mal den Cursor und beobachte es....Es wird nicht gescrollt. Den ersten Rechtschreibfehler "NewTab.LineBreakMod.Items.Add('Kein Zeilende');" finde ich nicht, was ist hier dran Falsch? Muss "Zeil Ende" getrennt?
MFG
Michael Springwald

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Serial Monitor V2

Beitrag von sstvmaster »

Ich denke Mathias meint das hier:

NewTab.LineBreakMod.Items.Add('Sowhl NL als auch CR');
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serial Monitor V2

Beitrag von Mathias »

Der "Lösch" Button hat noch keine "Funktion", hier habe ich die Event Zuweisung vergessen.... in ein paar Tagen wird es eine neue Version geben....

Mit diesen paar Zeilen sollte auch der Button gehen,

Code: Alles auswählen

type
  { TPLTabSheet }
  TPLTabSheet = class(TTabSheet)
  private
    // ------- neu
    procedure ClerarButtonClick(sender: TObject);
 

Code: Alles auswählen

    ClearLogButton.AutoSize:=true;
    ClearLogButton.ParentFont:=false;
 
    // ----------- neu
    ClearLogButton.OnClick:=@NewTab.ClerarButtonClick;
 

Code: Alles auswählen

//--------------- neu
procedure TPLTabSheet.ClerarButtonClick(sender: TObject);
begin
  NewMemo.Clear;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

Mit diesen paar Zeilen sollte auch der Button gehen,

Bin dir schon zuvor gekommen, habe eine neue Version hochgeladen, aber danke für den Hinweis.... es gab bereits eine Methode dafür, die wurde halt nur noch nicht zugewiesen....

NewTab.LineBreakMod.Items.Add('Sowhl NL als auch CR');

Das habe ich behoben....
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serial Monitor V2

Beitrag von Mathias »

pluto hat geschrieben:habe eben die neue Version hochgeladen. Das mit dem SelStart -2 klappt bei mir nicht, ändere mal den Cursor und beobachte es....Es wird nicht gescrollt. Den ersten Rechtschreibfehler "NewTab.LineBreakMod.Items.Add('Kein Zeilende');" finde ich nicht, was ist hier dran Falsch? Muss "Zeil Ende" getrennt?


So wie du vielleicht gemerkt hast, habe ich auch einen Seriallmonitor geschrieben. Nur musste ich dort dies mit SelStart-2 einbauen, weil es bei mir sonst nicht funktionierte, dies ist aber schon länger her.
Das mit dem Zeilenenden würde ich so machen.

Code: Alles auswählen

'no CR/LF'
'LF  (#10)'
'CR (#13)'
'CR/LF (#13#10)'
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

Das mit dem Zeilenenden würde ich so machen.

Ich habe die Idee von Arduino übernommen, die finde ich einfacher...

Code: Alles auswählen

 
procedure TPLTabSheet.SendBitBtn(sender: TObject);
var
  EndChar:String;
begin
 
  if SendStringEdit.Text <> '' then begin
    case LineBreakMod.ItemIndex of
      0: EndChar:=#0;
      1: EndChar:=#13;
      2: EndChar:=#10;
      3: EndChar:=#13#10;
    end;
    Uart.SendAString(SendStringEdit.Text+EndChar);
  end;
end; // TPLTabSheet.SendBitBtn
 

So habe ich es gelöst.... ich glaube ich habe #13 und #10 vertauscht?
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Serial Monitor V2

Beitrag von pluto »

So wie du vielleicht gemerkt hast, habe ich auch einen Seriallmonitor geschrieben. Nur musste ich dort dies mit SelStart-2 einbauen, weil es bei mir sonst nicht funktionierte, dies ist aber schon länger her.

Komisch das es bei dir so klappt und bei mir nicht? Wir verwenden doch das gleiche Linux?
(Linux Mint 18.3) und ich habe das "neuste" Lazarus und FPC....
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serial Monitor V2

Beitrag von Mathias »

Das ist richtig, 13 komm vor 10.

Ich habe die Idee von Arduino übernommen, die finde ich einfacher...

Ich meinte eigentlich die sichtbaren Strings in der Combobox.

Ich habe es gesehen, Arduino schreibt dies so merkwürdig.
Sloeber schreibt:

Code: Alles auswählen

none
CR
NL
CR/NL
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten