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
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.
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.
:
Bearbeitet durch User
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.
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.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.