Hallo nochma
Sind diese Zeillen bei allen "Dialekten" gleich oder braucht man die, um es sauber ins Basic übersetzen zu können??
Syntax
void Serial_Write(byte serport, byte val);
Sub Serial_Write(serport As Byte, val As Byte)
Schönen Abend zusammen.
Ich hoffe, dass ich dieses Thema am richtigen Ort erstellt habe!
Ich habe mir eine C-Controll Pro Unit Mega 23 gekauft!
Hier der Link:
http://www.conrad.ch/goto.php?artikel=198206
Nun zu meinem Problem
Ich möchte über RS 232 4 Bytes ausgeben
Immer zuerst #s und dann 2 Variabeln..
Leider ist in der Hilfe (vom IDE) nur eine Beispiel Ausgabe in C..
Von C verstehe ich nun leider mal noch weniger als von BASIC
Daher die Frage, kann mir jemand einen funktionierenden CODE in BASIC draus mach??
Ich habe es einmal so Probiert:Code:void main(void) { int i; char str[10]; str="test"; i=0; // Initialisiere Schnittstelle mit 19200baud, 8 Bit, 1 Stop Bit, keine Parität Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200); while(str[i]) Serial_Write(0,str[i++]); // Gib den String aus }
Ich benötige das übrigens für einenCode:Sub ServosdirectMove(Servonumber As Byte, Servopos As Byte) Dim i As Integer Dim Str1 (5) As Char Str1= "#s" : Servonumber : Servopos i=0 Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600) Do While 'und da habe ich keine Ahnung wie machen End While End Sub
http://www.shop.robotikhardware.de/s...products_id=23
Hoffe, mir kann jemand weiter helfen..
Danke für eure AW schon im voraus
Hallo nochma
Sind diese Zeillen bei allen "Dialekten" gleich oder braucht man die, um es sauber ins Basic übersetzen zu können??
Syntax
void Serial_Write(byte serport, byte val);
Sub Serial_Write(serport As Byte, val As Byte)
Hallo
Was ist an meiner Frage denn Falsch??
Ein bisschen programmiererfahrung (ActionScript, S5,) habe ich schon..
Aber da blicke ich echt nicht durch...diesen String geht einfach nicht so, wie ich will...(ne möchte)
Kann mir keiner weiter helfen??
Bitte um ehrliche AW
Hallo Naturp,
schau dir doch bei Robotikhardware auf der von dir verlinkten Seite 'mal das Basic Beispiel an (unter dem Link "Doku mit Bascom Beispiel").
Name: servotreibertestrns1.bas
Das ist zwar Bascom, läßt sich aber gut nach CCBASIC übersetzen.
Gruß Dirk
Nun, ich will zwar nicht unhöflich sein, aber auf diese Jdee kam ich auch schon..Zitat von Dirk
Aber da hab eich schnell mal Probleme:
1.) Mit was öffne ich die Datei ..
2.) Im PDF steht was von "byval" wath is dens das??
3.) Die initialisierungn
Ich weiss:
-9600 Baud..
Ich weiss nicht:
-Wie viel stop Bit
-Wie viel Bit
-Was für ein Parity
lange habe ich gehoft, einfach alles durchprobieren währe die lösung..
nach dem 20 Versuch habe ich aber aufgegeben
Im beispiel steht:
Print "#s" ; Chr(servonummer) ; Chr(position)
Und warum funktioniert das so nicht:
Serial_WriteText(0,"#s" ; Servonumber ; Servopos)
Nach über 5 Stunden nur an dieser Komunikation ausprobieren und noch immer keine Ahnung wie ich es lösen könnte schwindet meine Geduld immer mehr..
Sobald ich den String ausgebe, kriege ich auf dem Osziloskop ein total verhaktes Signal...
Hoffe, jemand kann mir weiterhelfen..
Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL“C++ is an insult to the human brain.”
Hallo Naturp,
Du bist sehr höflich, hattest aber auch nicht erwähnt, dass du das Basic Beispiel kennst, sondern - im Gegenteil - offenbar ausgehend von C eine Umsetzung in Basic versucht.Nun, ich will zwar nicht unhöflich sein, aber auf diese Jdee kam ich auch schon..
Zu 1) Die .bas Datei kannst du mit dem Windows-Editor öffnen.
Zu 2) Erstmal egal. Nimm am besten am Anfang keine Sub, sondern sende den String im Hauptprogramm, um zu testen, ob überhaupt ein Servo reagiert.
Zu 3) Empfehlung: Klammer dich erstmal nicht an die Initialisierung, sondern an den Rest des Programms. Dann suchst du in der CCBASIC Anleitung den Serial_init Befehl und stellst ihn auf 9600 Baud, 8 Datenbits, keine Parität und 1 Stopbit ein.
Das wäre auf meinem Oszi auch nicht anders, weil das eine wenig hilfreiche Methode ist, eine fehlerhafte Programmierung zu erkennen. Was willst du denn da erkennen?Sobald ich den String ausgebe, kriege ich auf dem Osziloskop ein total verhaktes Signal...
Gruß Dirk
Das steht so schon in meinem ersten Beitrag....Zitat von Dirk
Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600)
Das ist ja so weit ok..
Aber ich kann den String nicht ausgeben-Ich weiss nicht wie.....
Kann mir jemand ein Beispiel in Basic geben, wie ich -sagen wir mal- #s 1 170 über RS232 ausgeben kann...
Ich weiss nicht, wie ich das mit diesem Befehl ausgeben kann:
[Direkt aus der Hilf evom IDE kopiert]
Syntax
void Serial_Write(byte serport, byte val);
Sub Serial_Write(serport As Byte, val As Byte)
Beschreibung
Ein byte wird zur seriellen Schnittstelle geschickt.
Parameter
serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..)
val der auszugebende byte Wert
oder dann doch das?
Syntax
void Serial_WriteText(byte serport,char text[]);
Sub Serial_WriteText(serport As Byte,ByRef Text As Char)
Beschreibung
Es werden alle Zeichen des char array bis zur terminierenden Null auf der seriellen Schnittstelle ausgegeben.
Parameter
serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..)
text char array
Bitte help
Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL“C++ is an insult to the human brain.”
Hallo Naturp,
man kann es wie im Beispiel aus der Anleitung mit einem Textarray machen oder mit der Ausgabe einzelner Zeichen:
Klappt das?Code:Serial_Write(serport, 35) ' # Serial_Write(serport, 83) ' s Serial_Write(serport, servo_number) ' Servonummer 1..10 Serial_Write(serport, servo_position) ' Servoposition 1..255 Serial_Write(serport, 0x0A) ' Zeilenvorschub
Gruß Dirk
So habe ich es schon mal probiert...Zitat von Dirk
allerdings ohne Zeilen Vorschub..
Nun, es geht nicht..aber ich hab eglaub eine idee woran es liegen könnte..
Das Servo zuckt zwischen durch, und immer wenn es das macht, wups sind die LED für einen Augenblick abwesend!
Ich stelle mir das so vor:
Das Programm startet, läst das Servo laufen, und dann (gerade wegen dem Servo) bricht die Spannung ein..!
Morgen programmier ich das ganze mal so um, dass ich ein LED einschalte, es dann wieder ausschalte, und dann das Servo bewege!
Sollte wirklich die Spannung zusammenbrechen, so wird das LED beim "neustart" wieder leuchten...
Ich warte erstma ab, bis das Netzteil, das ich bestellt habe da ist, dann guke ich weiter!
Danke für die Geduldigen AWs
Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL“C++ is an insult to the human brain.”
Hallo
Und es funktioniert..nicht!!!
Ich hoffe, dass mir jemand helfen kann!
Hier nochmal die Links zu den Teilen, die ich verwenden
CC-Mega 32 bei Conrad
http://www.conrad.ch/goto.php?artikel=198206
CC-Mega 32 in eigener Schaltung
http://www.c-control-pro.de/Archiv/M...tand_alone.pdf
Dann den RNS1 oder eben Atmel AT90S2313
http://www.shop.robotikhardware.de/s...products_id=23
Das Ganze mal in meinem Schaltplan ist unten zu finden..
Falls jemand einen Fehler sieht, bitte melden...
Kurze INFO:
Jeder, der den Schaltplan anschaut, wird mercken, dass eine Leitung von RS232 über einen Schalter geht! Das ist nur dazu da, weill ich zum Programmieren und zum betrieb die ein e Leitung eben 2mal brauche..
Sobald als möglich werde ich noch den Code in BASIC hochladen!
ICH KANN DEN FEHLER EINFACH NICHT FINDEN!!!PLEASE HELP!!
Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL“C++ is an insult to the human brain.”
Lesezeichen