
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Mario, vielen Dank für Dein Beitrag. Das Asemblerprogramm "lesen.s19" von Marcel Kroll" (marcel.kroll@gmx.net) kannte ich schon und hatte auch mit Marcel kontakt. Alleine mit dem Asemblerprogramm und Basicprogramm (wie bei Fernwirken) kam ich nicht weiter. Nach 8-10Bytes war ebenfals schluß. Aber mit der Idee von Dietmar und zusammen und dem Asemblerprogrämmchen gelang es mir ein längeren Bytestrom über die RS 232 bei 9600Baud mit dynamischer Länge einzulesen. Dabei ist eine definierte länge nich mehr wichtig. Bei der undefinierten Länge half das Asemblerprogrämchen. Also nochmal herzlichen Dank. Hier mein Testprogramm. '--------------------------------------------------------------------------------------------------------------------------------------------- ' C-Control/BASIC ' ' Systemvoraussetzungen: - C-Control - M-UNIT 1.1 ' ' Autor: Klaus Knorr (Klaus-Knorr@t-online.de) ' ' Programm zum Abfragen und Auswerten einer langen Bytefolge über RS232 (9600 Baud mit 4MHz Quarz, 19200Baud mit 8MHz Quarz) ' dieses ist mit dem Beispiel nur möglich, in Verbindung mit dem Asemblerprogramm "lesen.s19" von Marcel Kroll" (marcel.kroll@gmx.net) ' ' Datum 20.03.2006 '--------------------------------------------------------------------------------------------------------------------------------------------- define a byte define b byte define c byte define a1 byte define a2 byte define a3 byte define a4 byte define a5 byte define a6 byte define a7 byte define a8 byte define a9 byte define a10 byte define a11 byte define a12 byte define a13 byte define a14 byte define a15 byte define a16 byte define a17 byte define a18 byte define a19 byte define a20 byte define i byte define Zahl word define lesen &H11F #loop GOSUB Auslesen Pause 100 loop '-----------------Handy auslesen------------- #Auslesen 'Print "_1" get a: get b: get a: get b: get a: get b: get a: get b: get a get a1: get a2: get a3: get a4: get a5: get a6: get a7: get a8: get a9: get a10 get a11: get a12': get a13: get a14: get a15: get a16: get a17: get a18: get a19: get a20 OPEN# FOR WRITE SYS lesen 'in der Subroutine "lesen" wird die SMS augelesen CLOSE# GOSUB Ausgeben Return '-----------------ausgeben Print------------- #ausgeben Print "a",a Print "b",b Print "a1",a1,a1-48 Print "a2",a2,a2-48 Print "a3",a3,a3-48 Print "a4",a4,a4-48 Print "a5",a5,a5-48 Print "a6",a6,a6-48 Print "a7",a7,a7-48 Print "a8",a8,a8-48 Print "a9",a9,a9-48 Print "a10",a10,a10-48 Print "a11",a11,a11-48 Print "a12",a12,a12-48 Print "a13",a13,a13-48 Print "a14",a14,a14-48 Zahl=(a2-48)*10000+(a3-48)*1000+(a4-48)*100+(a5-48)*10+(a6-48) Print "0";Zahl Return SYSCODE "lesen.s19" ------------------------------------------------ Viele Grüße Klaus > Hallo, > > schau doch mal zu http://www.fernwirken.tk. Dort findest du unter Download ein kleines Assembler-Programm, mit dem Daten von RS232 in eine Datei geschrieben werden. > > Gruß Mario > > > Hallo Achim, > > > > danke für deine Antwort. Genauso hab ich das auch getan. Ich muss mit 9600 Baud arbeiten. Damit bekomme ich max. 10 Byte sauber heraus. Hier mein Progrämmchen. > > > > DEFINE zaehler byte > > DEFINE wert byte > > DEFINE response byte > > DEFINE FLAGS byte > > > > Flags = 0 > > > > #MAIN > > PAUSE 100 > > GOSUB auslesen > > PAUSE 100 > > GOSUB anzeigen > > PAUSE 100 > > GOTO MAIN > > > > #auslesen > > OPEN# FOR Write > > Print "_1" > > FOR zaehler = 1 TO 30 > > Get Wert > > PRINT# Wert > > NEXT > > CLOSE# > > > > > > '------------------------------------------- > > #anzeigen > > OPEN# FOR READ > > Print "_2" > > FOR zaehler = 1 TO 30 > > INPUT# response > > Print response > > IF EOF THEN zaehler = 30 > > NEXT > > CLOSE# > > > > OPEN# FOR Write > > FOR zaehler = 1 TO 30 > > PRINT# Flags > > NEXT > > CLOSE# > > > > Return > > > > Gruß > > Klaus > > > > > > > > wer kann mir weiterhelfen. Ich muss 32 Bytes hintereinander über die RS232 in die M-Unit 1.1 einlesen. Leider kann diese auf dem normalen Weg 8 Bytes (nur 8 Byte Buffer im Basic). > > > > Hat jemand dafür ein kleines Asemblerprogramm (S19), welches 100% tig funktioniert. Bitte mit Basic-Beispiel mit Einbindung des Asemblerprogramms. > > > > > > Ich habe leider kein Assemblerprogramm, aber die 8 Byte Puffer sind ja auch mit Basic solange kein Problem, wie Du die ankommenden Bytes schnell genug abholst. Mit welcher Baud-rate kommen die Bytes denn an? > > > > > > Hast Du mal ausprobiert, die Bytes im EEPROM zwischenzuspeichern? Etwa so: > > > > > > open# for write > > > for i=1 to 32 > > > get b > > > print# b > > > next > > > close# > > > > > > Gehen dabei Bytes verloren? > > > > > > HTH > > > > > > Bye > > > Achim |
| Antwort schreiben |