AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

NrComm Lib

Ein Thema von freddygloves · begonnen am 14. Aug 2011 · letzter Beitrag vom 17. Aug 2011
Antwort Antwort
freddygloves

Registriert seit: 14. Aug 2011
Ort: Tettnang
7 Beiträge
 
Delphi XE Architect
 
#1

NrComm Lib

  Alt 14. Aug 2011, 01:10
Hallo,

bin noch neu hier. Ich soll im Rahmen meiner Technikerarbeit einen Frequenzumrichter ansteuern. Das Ganze soll über eine RS232-Verbindung geschehen.

Der Programmierer bei uns verwendet die NrComm Lib von Deepsoftware. Daher, dass ich ein Newb in Delphi bin dachte ich mir, versuche ich es erstmal eine Bidirektionale Verbindung vom Laptop auf einen meiner Microcontroller herzustellen, bevor ich mich an den FU ranwage, da dieser ein komplexeres Bus-Protokoll verwendet.

Nicht einmal das bekomme ich hin.
Bei der NrComm Lib ist ein CHM-File dabei. Super stehen eben die Methoden und Events drin. Aber eben nicht direkt wie das alles anzuwenden ist.

Meine bisherige Vorgehensweise:
1) VCL-Anwendung mit 2 Buttons (senden/empfangen) zwei Editfelder (1 für das Zeichen welches gesendet werden soll / 1 für das empfangene Zeichen)

Jetzt weiß ich nur nicht genau wie ich weiter machen muss. Auf der Deepsoftware seite sind 3 Beispiele für das OnAfterReceive Event. Brauch ich das Überhaupt zum empfangen ?
Habe in dem CHM File gesehen, dass es da ja auch Prozedeuren für gibt. z.B myNrComm1.readAll();

Hat jemand von euch dazu ein kleines Beispiel ? Oder Tipps wie ich da ran gehen kann.

Oder soll ich die AsyncPro verwendet, da gibts wenigstens ein Manual dazu. Welche Lib ist denn einfacher zum anwenden. Wie schon gesagt, werde vorraussichtlich Delphi das nächste halbe Jahr für meine Projektarbeit verwenden und dann wahrscheinlich nie wieder...

Grüße freddygloves
Oli
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#2

AW: NrComm Lib

  Alt 14. Aug 2011, 08:02
Hier im Forum suchenAsyncPro, Hier im Forum suchenTComPort, oder auch direkt an die WinAPI (MSDN-Library durchsuchenCreateFile+MSDN-Library durchsuchenReadFile/MSDN-Library durchsuchenWriteFile) uvm.
Da gibt es Mehreres, was man verwenden könnte.

Welche Delphi-Version nutzt du denn und wie sahen deine bisherigen NrCommLib-Versuche aus?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
freddygloves

Registriert seit: 14. Aug 2011
Ort: Tettnang
7 Beiträge
 
Delphi XE Architect
 
#3

AW: NrComm Lib

  Alt 14. Aug 2011, 12:09
Also ich verwende Delphi XE Architect bei mir zuhause und im Unternehmen haben wir Delphi XE Professional.

Habe daheim jetzt mal folgenden Versuchsaufbau gemacht.
Laptop --> Microcontroller (Ein Zeichen Senden)
Das empfangene Zeichen soll durch einen Port der an 8 LEDs angeschlossen ist visualisiert werden
Microcontroller --> Laptop (Soll das selbe Zeichen wieder zurück senden)

Habe jetzt mal hierfür AsyncPro genommen.
Aber irgendwas stimmt nicht von der Wertigkeit der Zeichen.
Habe mir mal eine ANSI-Tabelle geschnappt und versucht zum Beispiel das Zeichen mit dem Wert 128 zu senden müsste ja theoretisch das MSB meines Ports leuchten. Das tut es aber nicht und mein Microcontroller sendet ebenso den falschen character zurück, auf jeden Fall mal nicht das was ich zu senden versuche.
Beispiel ich sende den Character "2" und empfange wieder ein kleines "f"...

Hier mal mein "Quälcode", in der Manual steht zwar noch was von Trigger events. Wollte das ganze aber erstmal so leicht wie möglich realisieren.
Delphi:
Delphi-Quellcode:
unit RS232_Test_Async;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OoMisc, AdPort;

type
  TForm1 = class(TForm)
    ApdComPort1: TApdComPort;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Empfangen: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure EmpfangenClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ApdComPort1.Output:= Edit1.Text[1];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit2.Text:=#$22;
end;

procedure TForm1.EmpfangenClick(Sender: TObject);
//var C:AnsiChar;
begin
  //C := ApdComPort1.GetChar;
  Edit2.Text:=Edit2.Text+ApdComPort1.GetChar;
end;

end.
Den Microcontrollercode brauch ich glaub ned posten.
Haben wir in der Schule damals geschrieben und hat mitem Terminal auch so funktioniert.

Grüße freddygloves
Oli
  Mit Zitat antworten Zitat
freddygloves

Registriert seit: 14. Aug 2011
Ort: Tettnang
7 Beiträge
 
Delphi XE Architect
 
#4

AW: NrComm Lib

  Alt 15. Aug 2011, 08:34
Ok SuFu,

hmmm probiere es mal mit dem hier
könnte vielleicht Abhilfe schaffen.
Berichte mal heute noch einen Erfolg oder Misserfolg

http://www.delphipraxis.net/113249-a...hex-werte.html
Oli
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#5

AW: NrComm Lib

  Alt 15. Aug 2011, 08:47
Wo du vorallem aufpassen mußt, ist daß die Komponenten Unicodekompatibel sind. (im XE ist ein Char 2 Byte groß)

In deinem Fall wäre es also gut, wenn die Komponenten fest auf ANSI gesetzt sind und dann mußt du noch bei der Zuweisung von Unicodestrings an ANSI aufpassen, daß bei der Konvertierung nichts verloren geht / verändert wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
freddygloves

Registriert seit: 14. Aug 2011
Ort: Tettnang
7 Beiträge
 
Delphi XE Architect
 
#6

AW: NrComm Lib

  Alt 16. Aug 2011, 06:14
Hallo,

muss zwar nochmal meine Com-Port Konfig seitens Delphi sowie seitens meines Atmels bzw. dessen Programms abchecken. Weil irgendwie tut das nicht so wie ich will.

Für mein Verständnis
habe es bisher so versucht

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var decVal:AnsiString;
c_output:AnsiChar;
begin
  decVal:=Edit1.Text;
  c_output:=AnsiChar(StrToInt(decValue));
  ApdComPort1.Output:= c_output;
end;
Habe da ein wenig rum versucht mal mit Ansi und ohne und so weiter...

Wie schon gesagt für mein Verständnis:
Ich lese nun den Wert 128 ein --> entspricht laut Ansi Tabelle '€'
das bedeutet von seitens meines Laptop müssten die 8 Datenbits doch so aussehen.
1000 0000bin = 128dez = '€'

Auszug aus meinem C51-Code ohne Interrupts bisher noch
Code:
...
WHILE(RI==0);
zeichen=SBUF; //Speichern des Bufferinhalt in char zeichen
RI=0;
Port0=zeichen; //Inhalt Variable zeichen an Port0 ausgeben
Also müsste doch nun auf Empfangseite in der Variable zeichen dementsprechend der Hexwert 80hex für 128dez stehen.

Ich bin mir nicht ganz sicher ob für meine Aufgabe die AsyncPro bzw. NrComm die richtige Wahl sind. Ich habe später ein haufen Byte-Commands die übertragen werden müssen und ich tue mir schon bei einem schwer...
Oli
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz