![]() |
Sende String an comport
Hallo ich habe ein externes Display. Dieses ist am Comport5 angeschlossen. ich möchte nun einen Text an dieses externe Display schicken. Jedoch passiert nichts mit meinem Code. habe die rs232 in uses eingebunden und auch die com.dll. Hier der code
Delphi-Quellcode:
ich hoffe ihr könnt mir weiterhelfen. wenn ich eine druckausgabe an diesen comport über canvas mache dann zeigt er nur Hyroglyphen.
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; text:String; begin OPENCOM('COM5: baud=19200, data=8, parity=N, stop=1'); text:='Hallo'; for i:=0 to length(text)-1 do begin SendByte(ord(text[i])); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin closeCOM; end; |
AW: Sende String an comport
Habe ich eine Bildungslücke oder ist die "Unit rs232" eine wohlbekannte Unit die standardmäßig dabei ist?
|
AW: Sende String an comport
Zitat:
Ich vermute, daß Du da ein Terminal angeschlossen hast, das über ein bestimmtes Protokoll mit dem Rechner kommuniziert. Da reicht es nicht dem COM-Port die richtigen Parameter zu verpassen, da muß auch das Protokoll stimmen. Du solltes mal ganz genau beschreiben was Du da eigentlich treibst. Gruß K-H |
AW: Sende String an comport
Also ich habe ein LED Display was einen Werbetext anzeigen soll. dieses wird über den Comport an meinem Rechner angeschlossen nunmehr will ich dem display diesen Werbetext schicken. Im Prinzip ähnlich wie ein Display bei verkaufskassen. Wo der Preis drauf steht.
|
AW: Sende String an comport
Versuch es mal als AnsiString
|
AW: Sende String an comport
gibt es da ein code beispiel für?
|
AW: Sende String an comport
Delphi-Quellcode:
Den string ist ab D2009 ja UnicodeString
text:AnsiString;
Ohne das Gerät zu kennen wird es aber schwer zu Helfen. Gibt es eine Dokumentation für das Display? |
AW: Sende String an comport
Nja, so wie das aussieht, kannst du problemlos auf die alten Pascalfunktionen umsteigen oder gar auf FileStreams.
Delphi-Quellcode:
Ansonsten empfehle ich dir eher mal nach einer "aktuelleren" ComPort-Komponente ausschau zu halten.
var F: TextFile;
AssignFile(F, 'COM5: baud=19200, data=8, parity=N, stop=1'); Rewrite(F); Write(F, 'Hallo'); Zitat:
DLL? Wenn du diese DLL meinst ![]() Das Ding ist eh Schrott und funktioniert in aktuelleren Windowsen nicht mehr. Die Pascal-Header sind ebenfalls mistig geschrieben und funktionieren in D2009+ nicht mehr. (Char statt AnsiChar usw.) Ich hatte vor Kurzem die Header-PAS dieser DLL umgeschrieben, so daß sie mit neueren Delphis funktioniert und dazu auch gleich die DLL entsorgt. Den nötigen Code direkt in der PAS implementiert und diesen auf neuere APIs umgeleitet. Der Code ist aber noch nicht komplett getestet und einige Funktionen (vorallem vom Sound) sind rausgeflogen. |
AW: Sende String an comport
Erwartet das OpenCOM wirklich einen String und keinen PChar?
|
AW: Sende String an comport
(vermutlich) siehe verlinkte Deklaration, in meinem letzten Post.
Ja, ist PChar, aber Delphi konvertiert String-Konstanten automatisch in PChar, wenn man sie direkt an den Parameter übergibt. |
AW: Sende String an comport
Ich seh grade was. :wall:
Zitat:
String-Indize beginnen bei 1 :!: (außer in den neuen iOS/Android-Plattformen) |
AW: Sende String an comport
das heisst wenn ich es so mache klappt es ?
Delphi-Quellcode:
for i:=1 to length(text)-1 do
begin SendByte(ord(text[i])); end; |
AW: Sende String an comport
Zitat:
Dann siehst du doch ob es klappt. ;) gruss |
AW: Sende String an comport
Wenn man durch alle Elemente iterieren möchte, dann geht das immer nach folgendem Schema:
Code:
Ist nur kleinster Index und die Anzahl der Elemente bekannt, so kann man durch eine simple Rechnung den Wert von größter Index ermitteln:
Für Index
von <kleinster Index> bis <größter Index>
Code:
Wenn man sich gar sehr unsicher ist und sich diese komplizierte Berechnung nicht zutraut und zudem ein Array vor sich hat, dann doch bitte so und der Drops ist gelutscht:
Für Index
von <kleinster Index> bis <kleinster Index> + <Anzahl der Elemente> - 1
Delphi-Quellcode:
Schon kümmert es den Code nicht mehr, ob der Compiler 1-basierende, 0-basierende oder n-basierende Strings verwaltet.
for LIdx := low( text ) to high( text ) do
begin WhateverWith( text[LIdx] ); end; |
AW: Sende String an comport
Warum nicht so?
Delphi-Quellcode:
procedure SENDSTRING (Buffer: String);
var BytesWritten: DWord; begin WriteFile(PortHandle,(Pchar(Buffer))^,Length(Buffer),BytesWritten,NIL); END; procedure TForm1.Button1Click(Sender: TObject); var TextString : String; begin TextString := 'Hallo'; SendString (TextString+ #13); end; |
AW: Sende String an comport
Weil der Code seit 5 Jahren (Unicode) so nicht mehr richtig funktionieren könnte?
|
AW: Sende String an comport
Er hat doch nur Delphi 7 Enterprise...
|
AW: Sende String an comport
Dennoch wäre es besser den Code ordentlich zu schreiben, denn genau durch solche Codes gab es die meisten Probleme bei der Unicodeumstellung.
In diesem Fall wird AnsiString verwendet, also gehört der Code auch so geschrieben. > AnsiString und PAnsiChar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 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