Hallo Leute, ich versuche gerade einen Sensor mittels RS232 anzusprechen aber irgendwie kommt nicht das raus was raus kommen soll :P . Hier ist erstmal das Kommunikationsprotokoll : http://www.hokuyo-aut.jp/02sensor/07scanner/download/products/urg-04lx/data/URG_SCIP11.pdf z.B. steht da ja das ich mit dem Kommando |'L'|'1'|0x0A| als Antwort |'L'|'1'|0x0A| Status |0x0A|0x0A bekomme. Habe dieses Kommando über einen PIN gesendet, aber das einzige was zurück kommt ist komischerweise nur : siehe Bild ; Ich hoffe ihr könnt mir weiterhelfen, ich weiß echt nicht was ich falsch mache. Grüße
Keiner eine Idee?
Gast
#3382579
Hallo Marius, sendest du auch zum Abschluss des Kommados ein "Line feed or carriage return" ?? Gruß Biker10
U0C0_ASC_vSendData(76);
U0C0_ASC_vSendData(49);
U0C0_ASC_vSendData(13);
In der Reihenfolge sende ich dem Sensor die Daten.
Gast
#3382589
>U0C0_ASC_vSendData(13);
Ein 0x0A hat nicht den Wert 13!
Ich kann ja LF mit 0x0A nehmen oder CR mit 0x0D
Hast du denn deine USART schon mal getestet, indem du zb etwas zu einem PC schickst und dort im Terminal Programm dir ansiehst, ob dort auch das richtige rauskommt? Nur so zur Sicherheit, damit man auch sicher geht, dass zb mit der Baudrate alles ok ist. Und dann wäre es auch eine ziemlich gute Idee, den 'Sensor' einfach mal mit dem PC zu verkablen und per Terminalprogramm die Kommandos abzusetzen. Dann sieht man auch, was der Sensor zurückschickt. Denn der PC hat einen unbestrittenen Vorteil: Wir wissen, dass seine serielle Schnittstelle tadellos funktioniert. Etwas, was wir von deiner µC-Seriellen erst mal nicht mit Sicherheit wissen.
Bastler schrieb: >>U0C0_ASC_vSendData(13); > > Ein 0x0A hat nicht den Wert 13! Stimmt, aber laut Protokollspec soll sowohl CR (13/0xD) als auch LF (10/0xA) gehen.
Gast
#3382603
Du willst |'L'|'1'|0x0A| senden, aber sendest > U0C0_ASC_vSendData(76); > U0C0_ASC_vSendData(49); > U0C0_ASC_vSendData(13); 'L' = 76 (dezimal) '1' = 49 0x0A = 10 Also 2/3 waren richtig.
Marius Jung schrieb: > U0C0_ASC_vSendData(76); > U0C0_ASC_vSendData(49); > U0C0_ASC_vSendData(13); Nur am Rande bemerkt: Das solltest Du Dir abgewöhnen und stattdessen so > U0C0_ASC_vSendData('L'); > U0C0_ASC_vSendData('1'); > U0C0_ASC_vSendData('\n'); schreiben.
Gast
#3382731
Rufus Τ. Firefly schrieb: >> U0C0_ASC_vSendData('\n'); Und was ist an '\n' besser als an 13, wenn man ein "Carriage Return" meint? So wäre der Aufwohl wesentlich selbsterklärender: U0C0_ASC_vSendData(CR);
Michael schrieb: > Rufus Τ. Firefly schrieb: >>> U0C0_ASC_vSendData('\n'); > Und was ist an '\n' besser als an 13, wenn man ein "Carriage Return" > meint? Das ist nur ein Zeichen dafür, daß du keine Ahnung hast. '\n' steht für new line ^ '\r' für carriage return ^ mfg.
Gast
#3382749
Hi >Und was ist an '\n' besser als an 13, wenn man ein "Carriage Return" >meint? Weil das jeder Compiler kennen sollte: \n Newline (ASCII LF 0x0a) \r Carriage return (ASCII CR 0x0d) \a Alert bell (ASCII BEL 0x07) \b Backspace (ASCII BS 0x08) \f Form feed (ASCII FF 0x0c) \t Horizontal tab (ASCII HT 0x09) \v Vertical tab (ASCII VT 0x0b) \\ Backslash \0 Null character (ASCII NUL) MfG Spess
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.