Verwende selbst die RNS1, geht wie ein Glöckchen, kann aber über VB nix sagen.
Aber ganz allgemein: Irgendwelche automatischen <CR><LF> etc. dürfen auf keinen Fall sein.
Hallo,
hab die schaltung mit dem RNS1 schon komplett aufgebaut, den Max232 hingehängt, und schicke über die Serielle Schnitstelle die entsprechenden Daten, aber es tut sich nichts. Schaltung ist komplett richtig aufgebaut, und beim anstecken fährt auch das Servo in die Mitellstellung. Signal kommt auch beim RNS1 von der Schnitstelle an.
Ich glaube das der Fehler in meinem Programm liegt.
Ich schreibe das genze unter VB.
Hab mit dem MSCOMM mal nen Port geöffnet, und Optionen wie Baudrate usw. festgelegt, und einfach mal folgendes rübergeschickt
mscomm1.output = "#s"
mscomm1.output = chr(1)
mscomm1.output = chr(200)
Aber das Servo 1 geht nicht in die Position 200, sondern bleibt in der mitellstellung (also 127)
Was mach ich da falsch?
Mike
Verwende selbst die RNS1, geht wie ein Glöckchen, kann aber über VB nix sagen.
Aber ganz allgemein: Irgendwelche automatischen <CR><LF> etc. dürfen auf keinen Fall sein.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ich hab nun die VB-Syntax auch nicht mehr im Kopf da ich die mscomm1 nur selten benutze.
Probier´s mal mit :
Ansonsten natürlich drauf achten das nirgends RX und TX Leitung am PC verwechselt wurde (Vor oder nach Max)Code:dim befehl as string befehl="#s" & chr(1) & chr(200) mscomm1.output =befehl
Ne das funzt auch nicht.
hab das gleiche schon gestern probiert, da tut sich nix. Aber es kommt was am chip an. Wenn ich Daten ausgebe, sehe ich am Oszi eben diese.
mike
Na dann verzichte mal auf VB und versuch's mit dem Terminal.
chr(1) u. chr (200) geht normalerweise mit ALT numkybpad
oder editiere eine File mit dem Servocommand und schicke das
c:\MODE COM1: etc
c:\COPY servo.txt COM1:
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Terminalprogramm AVRTERM ist recht praktisch für solche Dinge. Und checke auch mal ob du wirklich Parameter 9600 Baud 8 Bit 1/ StopBit bei VB eingestellt hast.
So sieht mein testcode aus:
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
End Sub
___________________________________________
Private Sub Command1_Click()
MSComm1.Output = "#s"
MSComm1.Output = Chr(1)
MSComm1.Output = Chr(80)
End Sub
Wie schon gesagt wurde wird es so vermutlich nicht gehen da eventuell ein LineFeet zwischendrin gesendet wird.
Ändere das mal so ab:
Private Sub Command1_Click()
dim befehl as string
befehl="#s" & chr(1) & chr(80)
mscomm1.output =befehl
End Sub
Wenn´s dann immer noch nicht klappt müsste es eigentlich an der Verkabelung mit dem Max liegen. Bist du sicher das da nix vertauscht ist? Vielleicht postest du mal Schaltskizze.
Mit dem befehl hab ich es auch schonv ersucht.
Die verkabelung/verschaltung ist auch korekt.
Hab wenn ich am Ausgang vom Max messe ein TTL Signal, wo sich was tut, wenn ich was sende. Die Microcontrollerschaltung stimmt auch.
Die schaltung für den Max ist vom Datenblatt, und die Schaltung für den µC ist von der PDF Datei die man auf der Homepage von Robotikhardware runterladen kann.
Mike
Check' mal, ob dein VB überhaupt seine eigenen Meldungen lesen kann.
Bau dir eine Input-Routine, die RNS1 spielt.
Und am RS232 verbindest du 2 u. 3 (RX/TX)
Noch was: In solchen Fällen dringen den Test mit einem Terminal zu empfehlen, ist kein Anzeichen von Senilität, sondern stammt aus Erfahrung.
Lesezeichen