Senden via serielle Schnittstelle Kategorie: Programmierung (von Lettort - 9.08.2005 13:19) | ||
| ||
Howdy @ all... also mein Problem ist wie folgt, ich will Zahlenwerte (Integer,Long) über die serielle Schnittstelle an einen PC verschicken! Dazu habe ich ein kleines Modul geschrieben, welches Ziffernweise eine Zahl auseinandernimmt und das dazugehörige ASCII equivalent in ein Byte-Array schreibt, welches dann verschickt wird. Der Vollständigkeit halber mal das Modul: /* Wandelt eine integer Zahl in ein ByteArray um und sendet dieses an die serielle Schnittstelle. */ function sendNumber ( long zahl ) { byte toSend[255], counter; int tmp, i; i = 0; tmp = 0; counter = 0; // jede 10er-Stelle in das dazugehörige ASCII-Zeichen wandeln, dann am Ende des Arrays speichern. while zahl > 0 { tmp = zahl % 10; toSend[254-i] = tmp + 0x30; zahl = zahl / 10; i = i + 1; } counter = i; // Zahl an den Anfang des Arrays verschieben. for i = 0 ... <counter { toSend[counter-i] = toSend[254-i]; } hwcom.init(); hwcom.setspeed(5); // 9600 BAUD wait hwcom.ready(); hwcom.send(toSend, counter+1); } Also wenn ich eine main() schreibe, wo nur das Modul benutzt wird, dann klappt alles hervorragend. Ich kriege genau die Zahlen am Bildschirm, die ich versenden wollte. Aber wenn ich diese Funktion nun in meinem eigendlichen Hauptprogramm benutzen will, kommen nur seltsame Zeichen heraus. Weiss vieleicht wer wo dran das liegen könnte? So langsam geht nämlich mein Latein zu Ende und meine Abneigung gegen das C2 vergrössert sich. Hatte schon probleme gehabt, konstante Portzustände zu halten, wenn man gleichzeitig das LCD-Display nutzen will! Muss man ja auch erstmal drauf kommen, dass wenn man das Display nutzt, die digitalen Ausgänge sich willkürlich verändern. *narv* Naja, wäre toll wenn mir da wer helfen könnt. Danke im voraus! | ||
Antwort schreiben Antworten: ![]() ![]() ![]() ![]() ![]() ![]() ![]() |