Entwickler-Ecke

Sonstiges (Delphi) - Wiedermal RS232


unrealer - Di 02.09.08 14:09
Titel: Wiedermal RS232
Hey alle zusammen!

Ich weiß, es hab schon viele Threads über das Thema RS232, ich habe mich auch schon intensiv mit der Suche nach diesem Thema beschäftigt, nur konnte mir keiner dieser Artikel im diesem Forum bislang mein Problem lösen:
Ich habe mir einen ServoController gekauft und zwar unter http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=118&osC. Hiermit lassen sich herkömmlich Servos via RS232 über den PC steuern und zwar verlangt der Controller als erstes Bit 255 dann die Servonummer und dann die gewünschte Servoposition. Ich habe mir hierfür Asny Pro heruntergeladen, nur leider block ich dort überhaupt nich durch. Danach hatte ich mir die Komponente Comm von Torry heruntergeladen, als ich versucht habe, damit meinen Controller anzusprechen, blinkte nur die LEDs, welche signalisierten, das ein falsches Signal übertragen worden war. Kann mir jemand Tips oder am besten Quellcodes geben, mit denen ich das Problem lösen kann????? Wär echt Spitze, sitzt dort nämlich scho ne halbe Ewigkeit dran. THX


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 02.09.2008 um 15:41


Xentar - Di 02.09.08 14:49

Bei Async sind doch sogar Beispiele bei - hast du dir die mal angesehen?


unrealer - Mi 03.09.08 00:29

Habe ich mir schon angesehn, Problem is bloß, das in den Beispielen immer nur ein String übertragen wird. Das jedoch benötige ich nicht.
In der Bedienungsanleitung ist ein Beispiel angegeben, leider jedoch in einer anderen Programmiersprache:

Quelltext
1:
Print chr(255); chr(7); chr (254);                    

und jetzt hab ich leider keinerlei Plan, wie ich das in Delphi umsetzten kann, da ich leider von der Materie nicht allzu viel versteh, da ich das nur Hobby mäßig mache. Kann mir jemand helfen??????


Xentar - Mi 03.09.08 09:19

Wieso kannst du damit nichts anfangen?
Du kannst deine Daten doch auch als String übertragen..

Delphi-Quelltext
1:
2:
MyString := #255;
ApdComPort1.Output := MyString;

und schon hast du dein Startbyte.


Delete - Mi 03.09.08 10:24

Hallo,

versuch es mal so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
Var buf: Array[0..2of Byte;
begin
 buf[0] := 255// Start
 buf[1] := 1// Adresse
 buf[2] := 123// Winkel
 ApdComPort1.PutBlock(buf,3);
end;


Gruß Frank


unrealer - Mo 08.09.08 01:48

Srry, aber keiner dieser lösungen funktioniert, das Modul zeigt weiterhin an,das es ein fehlerhaftes Signal bekommt. Kann sich vllt jemand die Doku mal herunterladen und mal gucken, wie die das lösen, da sind nämlich auch Beispielprogramme drauf, nur leider net in Delphi.....


Delete - Mo 08.09.08 08:58

Das 3 Byte Protokoll unterstützt nur die Baudraten 2400 und 9600 Baud. Hast du eine davon gewählt?
Ist das richtige Protokoll gewählt? und hast du den korrekten Logik-Level eingestellt.

Beide hier gezeigten Beispiele funktionieren grundsätzlich.(Kannst du überprüfen in dem du mit Nullmodem-Kabel überprüfst ob die
Bytes rauskommen, die du sendest.)

Die Beispiele zeigen eine Ansteuerung mit Bascom, durch einen anderen AVR Controller. Es könnte also sein, dass das Modul standardmäßig auf TTL Pegel eingestellt ist.


Gruß Frank


unrealer - Mi 10.09.08 12:04

mmmh, ok wie man die Baudrate einstellt, is mir ja noch klar, aber wo kann ich den ganzen Rest einstellen????


Xentar - Mi 10.09.08 12:23

Stopbits
Databits
Parity
Handshake

Sollte eigentlich alles im Handbuch stehen, was man da einstellen muss. Wenn nicht:
Google mal nach "PortMon" starte das, und lass das Beispielprogramm laufen. Da kann man soweit ich weiß alle Port Einstellungen sehen, die das Programm vornimmt.


unrealer - Fr 12.09.08 21:10

Hey

Also, momentan siehts so aus, als ob alles funktionieren würde, zumindest leuchtet die richtige LED auf.....
Vielen Dank euch!!!