![]() |
Übertragung von Buchstaben per RS232?
Hallo Ihrs,
ich bin mal total neu hier, und komm direkt mit nem Problem an... ich kann relativ gut Objekte Programmieren, aber mit der Ausgabe am seriellen Port habsch keine Ahnung. wär nett, wenn ihr mir da helfen könntet. Ich mussn K8045 so mit Text füllen. das ist alles. Nur wie bekomm ich Delphi dazu, mir wie ein RS232-Terminal die Daten zu schicken. Was ich dem Teil schicken muss ist immer abwechselnd eine "0" und dann das zeichn was ich ausgeben will. Um den Text wieder zu löschen muss ich sozusagen die "0" und dann die "Enter"-Taste schicken... Kann mir da irgendwie einer helfen? das ganze Muss so aussehen, dass ich den anzuzeugenden text aus einem Edit lese, und dann eben so (ich glaub es ist byte-Weise) an das Ding sende. Vielen Dank schon mal Rainer :coder2: |
Re: Übertragung von Buchstaben per RS232?
0er als Füllzeichen? Das Gerät will wohl eher Unicode-Text!
Schon mal ein €-Zeichen gesendet? |
Re: Übertragung von Buchstaben per RS232?
Mit dem €-Zeichen tut sich gar nichts...
wenn ich aber Sende "0T0e0s0t" dann zeigt der an "Test"... :wall: :wiejetzt: |
Re: Übertragung von Buchstaben per RS232?
Zitat:
Zum Lesen und Schreiben der seriellen Schnittstelle gibt es diverse Komponenten. z.B.: ![]() und hier gibt's noch mehr: ![]() Man muss strikt trennen zwischen dem Inhalt der Daten (das ist dein Problem/Aufgabe) und dem Transport über die serielle Schnittstelle (das übernimmt die Komponente). |
Re: Übertragung von Buchstaben per RS232?
ja, das diese Frage immer wieder kommt hab ich mir schon gedacht, und ich hab auch die Suche gewühlt,a ber nichts passendes gefunden, bbzw nichts was ich hätte aufbereiten können.
Jetzt hab ihc mich schon geraume Zeit durch dieses SerialNG gewühlt,aber ich hab leider immernoch keinen blassen Schimmer... Die "0" vor jeden buchstaben setzen ist ja kein Thema. Auch aus nem String nen einzelnen CHAR ist ja kein PProblem. Nur dann? a) wie erkläre ich dem welcher COM, Baud, parity etcpp, b) Wie wandel ich die chars um und krieg sie dann übertragen? (ein char müsste ja an sich einem Byte entsprechen...) |
Re: Übertragung von Buchstaben per RS232?
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
SendStr := '0T0e0s0t';
SerialPortNG1.SendString(SendStr); |
Re: Übertragung von Buchstaben per RS232?
ja, kann ich, will ich aber nicht.
Der Grund ist einfach, der soll so ne Art Laufschrift bilden bei Stringlängen länger als 16 Chars, und da Modul schiebt die die nicht mehr drauf passen vorne wieder raus...deswgen muss ich einzeln senden mit Zeitverzögerun g... Ich bastel erstmal, danke für eure Hilfe... |
Re: Übertragung von Buchstaben per RS232?
Es tut mir ja leid, aber ich komm damit leider nicht weiter...
Ich wär euch sehr dankbar, wenn mir irgendeiner im Spaghetti-Code Verfahrenoder so malne class kurz aufschreibt und ne Procedure, die mir bei 2400Baud, 8 DB, keine Parity, 1 SB, no handshaking einfach nen string an den Com2 schicken kann... Verdammt, Sysadmin isn harter Job... :wall: :wall: :wall: :coder2: |
Re: Übertragung von Buchstaben per RS232?
Woran haperts denn? Ein einzelnes Zeichen (Char) eines Strings bekommst du mit Stringname[Index], wobei das erste Zeichen Stringname[1] ist.
|
Re: Übertragung von Buchstaben per RS232?
ja des weiß ich.
Das roblem liegt in der Übertragen, ich weiß nicht, wie ich das serialNG dazu bekomme was zu übertragen, bzw. wie ich die Serial-Port-Einstellungen mach.. ich blick da nciht durch, die Übertragung ist mein Problem, alles andere ist sozusagen Kinderspiel |
Re: Übertragung von Buchstaben per RS232?
Zitat:
Sonst hättest du gesehen, dass auf dem Formular ein Button "Settings" liegt. Geht man da dem Code nach kommt man zu:
Delphi-Quellcode:
Also für mich sieht das ganz Glasklar und direkt aus.
procedure TSerialNGBasicDLG.GetDLGData(SerialPortNG : TSerialPortNG);
begin SerialPortNG.CommPort := CBPort.Items[CBPort.ItemIndex]; // z.B. 'COM1' SerialPortNG.BaudRate := StrToIntDef(CBBaud.Items[CBBaud.ItemIndex],9600); // z.B. 2400 SerialPortNG.DataBits := StrToIntDef(Copy(CBData.Items[CBData.ItemIndex],1,1),8); // z.B. 8 SerialPortNG.StopBits := CBStop.ItemIndex; // 0 = 1 Stopbit SerialPortNG.ParityType := CBParity.ItemIndex; SerialPortNG.FlowControl := BasicFlowModes[CBFlow.ItemIndex]; SerialPortNG.Active := True; end; Man muss natürlich den Willen haben, die Komponente zu installieren und das Beispielprojekt anzuschauen... Die ganzen Properties lassen sich auch direkt im Objektinspektor einstellen. |
Re: Übertragung von Buchstaben per RS232?
Soweit war ich auch schon (habs im OI eingestellt).
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, SerialNG, StdCtrls {serialng}; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; serial: TSerialPortNG; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var text:string; begin serial.sendString('0t0e0s0t'); end; end. Das hab ich jetzt versucht, sollte auf dem Teil "Test" ausgeben. jetzt schlagt mich ruhig wegen plödster Fehler, aber ich hab echt kein Peil wie ich das hinbekomme. DAS funzt jedenfalls nciht, wie gesagt, Baud etcpp im OI eingestellt. |
Re: Übertragung von Buchstaben per RS232?
Zitat:
Du musst natürlich deine Tests mit dem Projekt SerialNGBasicDemo.dpr beginnen !!!!!! Diese einfache Programm kann einen String an die ser. Schnittstelle senden und zeigt die Antwort an. SerialNGBasicDemo.exe funktioniert 1000% - tig. Und wenn nicht, dann liegt ein Hardwareproblem oder eine falsche Konfiguration der Parameter vor. Erst wenn SerialNGBasicDemo funktioniert hat, darf man daran denken die Komponente in ein eigenes Programm einzubauen. Man ganz grundsätzlich, um die serielle Schnittstelle anzusprechen ist folgende Reihenfolge einzuhalten: 1.) Hardware anschliesen 2.) mit Terminalprogramm (z.B. Hyperterminal) testen. Nur wenn alles OK, weiter zu 3.) 3.) mit SerialNGBasicDemo testen. Nur wenn alles OK, weiter zu 4.) 4.) Komponente in eigenes Programm einbauen. Bei Problemen zurück zu 3.) |
Re: Übertragung von Buchstaben per RS232?
Also vorgehen wie du sagst:
1) OK! 2) OK! (SimpleTermSE, scho immer mit gearbeitet, schickt "0t0e0s0t", zeigt korrekt an "Test". 3) Einstellungen gemacht, "T0e0s0t" geschickt, ausgabe aber nur "t". Sorry wenn ich euch alle ein bissl nerve,a ber ich weiß net weiter //Edit: Einzeln geschickt "0t" "0e" usw klappt dann, könnte evt an so ner art Flashtime hängen? //Edit2: Weiß jetzt auch, wieso die Nullen immer vorher geschickt werden, das ist die ID des Empfangsterminals |
Re: Übertragung von Buchstaben per RS232?
[equote="Auszug aus
![]() Baudrate: 2400 Parity: None Databits: 8 Stopbits: 1 No handshaking [/equote] Also von einem Stopbit hast du bisher aber nichts gesagt ;) |
Re: Übertragung von Buchstaben per RS232?
Zitat:
Doch... Aber komm trotzdem leider immernoch nciht weiter... und ich brauchs am Fr. fuck... |
Re: Übertragung von Buchstaben per RS232?
Zitat:
bit4bit |
Re: Übertragung von Buchstaben per RS232?
Habs zur Sicherheit noch mal getestet, aber selbes Ergebnis...
Kann mir denn keiner helfen? |
Re: Übertragung von Buchstaben per RS232?
Hallo,
bist du sicher, dass du nicht stattdessen
Delphi-Quellcode:
schicken solltest?
#0'T'#0'e'#0's'#0't'
ansonsten sehe ich im Moment keine Ansatzpunkt, um dir bei deinem Problem zu helfen. Hast du ein Datenblatt für das Gerät? FUnktionierts per Hyperterminal? |
Re: Übertragung von Buchstaben per RS232?
Also wenn ich diesen string schicke, dann zeigt der mir "''" an... also immer das Symbol nach der "0".
ich glaub, ich muss das mal auseinandernehmen und nkomplett neu zusammenpuzzlen... |
Re: Übertragung von Buchstaben per RS232?
Ich hab das nicht umsonst in Delphi-tags gesetzt...
Pseudocode:
Delphi-Quellcode:
msg := #0'T'#0'e'#0's'#0't';
SendeAnRS232(msg); |
Re: Übertragung von Buchstaben per RS232?
ich hab das auhc nicht umsonst so getestet!
plöd bin ich ja auch nicht |
Re: Übertragung von Buchstaben per RS232?
Zitat:
|
Re: Übertragung von Buchstaben per RS232?
Und ich erwähne es noch einmal, dass in SerialNG 0 Stopbits eingetragen ist, aber 1 verlangt wird... :stupid:
|
Re: Übertragung von Buchstaben per RS232?
Das weiß er und hat es eingetragen :roll:
Erst lesen, dann posten. Zitat:
|
Re: Übertragung von Buchstaben per RS232?
Hi,
also ich verwende CPort, aber bevor du was schicken kannst musst du das Port öffnen, genauso wird es wohl bei serialng sein. Active setzen oder so, sonst geht da nix mit senden Gruß MrOuzo |
Re: Übertragung von Buchstaben per RS232?
Also, zum einen: wenn ich diesen komischen String so sende, wie du das da geschrieben hast, zeigt der mir 2 ' an.
zum anderen: der Port ist active gesetzt, hat bei parity 0 eingetragen, was keiner entsprich, bei den DB 8 bei den SB 1 und Baud2400 //Edit: mit Terminal und dem SerialNGBasicDemo getestet |
Re: Übertragung von Buchstaben per RS232?
Hallo Rainer1000
benutz doch die Procedure SendData (Data : Pointer; Size : DWord); //Send binary Data lege ein Array ob Byte an, schreibe dann die Daten rein und schicke es ab kannst natürlich auch ein Array mit nur 2 Byte anlegen, im array[0] steht dann die ID und im array[1] der code für dein Zeichen und dann sendest du immer nur die 2 Bytes was ja 1 Zeichen auf dem Display ergibt. Das kann doch nicht so schwer sein, nur musst du warscheinlich die ausgerichtete Recordfelder im Delphi abschalten, sonst schickt er irgendwas
Delphi-Quellcode:
so gehts aber auch :cheers:
Procedure TForm1.Sende(ID: Char; Str: String);
Var i: Integer; S: String; Begin For i := 1 To length(Str) Do Begin S := ID + str[i]; SerialPortNG1.SendString(S); repeat Application.ProcessMessages; until not SerialPortNG1.SendInProgress; End; End; procedure TForm1.Button1Click(Sender: TObject); begin SerialPortNG1.Active := True; Sende('0','Test'); end; Gruß MrOuzo |
Re: Übertragung von Buchstaben per RS232?
Guck mal in deine PN. Ein Auszug aus dem Code für unsere eigenen Produkte.
Gruß Frank |
Re: Übertragung von Buchstaben per RS232?
Problem dank Franks Hilfe endlich gelöst!
Danke an Alle die es versucht haben, besonders an Frank ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz