- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Absturz bei seriellem Empfang

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Anzeige

    E-Bike
    Hi,
    also mit makeint sollte das so funktionieren, es sei denn, in deinem Array steht nichts drin.
    Habe es gerade mal im Simulator laufen lassen.
    Code:
    $sim
    $regfile = "m8def.dat"
    $crystal = 16000000
    
    Dim Empfang(10) As Byte
    Dim A As Integer
    
    Empfang(8) = &H4E                                           'Hex 4E20 = Dec 20000
    Empfang(7) = &H20
    
    Cls
       A = Makeint(empfang(7) , Empfang(8))                     'LSB,MSB
       Locate 2 , 1
       Lcd A                                                    'Zeigt 20000 auf dem LCD an
    End

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Ich denke schon, dass die beiden Werte ankommen. Nur stehen die da jetzt nicht als 20000 sondern als zwei Bytes, die dies Zahl darstellen.
    Angenommen, du hast die 11 Bytes so übertragen, wie oben angegeben und liest den UDR fortlaufend in ein Empfang-Array ein, dann könnte das so aussehen

    Dim Empfang(11) as Byte
    Dim Strom As Byte At Empfang(5) Overlay
    Dim Spannung As Word At Empfang(7) Overlay

    dann kannst du nach dem Empfang des letzten Zeichens die Daten jetzt so auf die SD schreiben:
    Print "#S1:" ; Strom ; ";" ; Spannung ; ";;X"

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    In Byte 7&8 schreibe ich ja die 2te Zahl rein (also meine 20000)
    Leider ist das Ergebnis immer 0
    Wie schreibst du das denn genau rein? (code)
    Ich denke schon, dass die beiden Werte ankommen. Nur stehen die da jetzt nicht als 20000 sondern als zwei Bytes, die dies Zahl darstellen.
    Also sollte im MSB eine (Hex) 4E und im LSB eine (Hex) 20 drinstehen.
    Irgendwas geht da schief.
    Wenn er mit makeint als Ergebniss 0 rauskriegt, stehen in den zwei Bytes nur Nullen drin.

    Gruß
    Christopher

  4. #24
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Hallo,
    war gestern wohl schon zu spät für mich

    Nun läuft der CodeTeil für die serielle Übertragung - vielen Dank!
    Code:
    DO
    ...
    'RS232 Empfang
    If Zaehler > 9 Then
       S1_rs = Str(strom) + ";" + Str(spannung) 'String wird für die SD geschrieben
       Zaehler = 0
    End If
    ...
    LOOP
    
    ...
    'RS232 - Empfang
    Onrxd:
    Incr Zaehler
    Empfang(zaehler) = Udr
    Return
    Leider ist die Speicherung auf der Karte schneller als der Empfang über die serielle Schnittstelle. Dadurch werden falsche bzw. keine Werte(d.h. Wert=SR_RS) aufgezeichnet:
    Code:
    #Lognummer: 65535 (Log 10x / sek)
    000001;201;20000
    000002;S1_RS
    000003;S1_RS
    000004;201;20000
    000005;201;20000
    000006;32;21283
    000007;49;15305
    000008;S1_RS
    000009;201;20000
    000010;35;14897
    000011;49;15305
    000012;S1_RS
    000013;201;20000
    000014;201;20000
    000015;35;14897
    000016;49;15305
    000017;S1_RS
    000018;32;21283
    000019;35;14897
    000020;49;15305
    000021;201;20000
    000022;32;21283
    000023;35;14897
    000024;49;15305
    000025;201;20000
    000026;32;21283
    000027;35;9038
    000028;78;12627
    000029;58;8251
    000030;S1_RS
    000031;201;20000
    000032;32;21283
    000033;49;15305
    000034;S1_RS
    000035;201;20000
    000036;32;21283
    000037;201;20000
    000038;35;14897
    000039;49;15305
    000040;S1_RS
    000041;32;21283
    000042;35;14897
    000043;49;15305
    000044;201;20000
    000045;32;21283
    000046;35;14897
    000047;49;15305
    000048;201;20000
    Habe ich das so richtig programmiert oder ist im Programm ein Fehler?

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    oh dummer Fehler...
    If Zaehler > 9 Then
    muss natürlich
    If Zaehler => 8 Then
    heißen

    aber ein paar Fehler sind noch drinn:

    Code:
    #Lognummer: 1 (Log 10x / sek)
    000001;201;20000 - richtig
    000002;S1_RS - kein Wert
    000003;35;14897 - falscher Wert
    000004;83;51514 - falscher Wert
    000005;49;15305 - falscher Wert
    000006;201;20000 - richtiger Wert
    000007;201;20000
    000008;201;20000
    000009;201;20000
    000010;201;20000
    000011;201;20000
    000012;201;20000
    000013;201;20000
    000014;201;20000
    000015;201;20000
    000016;201;20000
    000017;201;20000
    000018;201;20000
    000019;201;20000
    000020;201;20000
    000021;201;20000
    000022;201;20000
    000023;201;20000
    000024;201;20000
    000025;201;20000
    000026;201;20000
    000027;201;20000
    000028;201;20000
    000029;201;20000
    000030;201;20000
    000031;201;20000
    000032;201;20000
    000033;201;20000
    000034;201;20000
    000035;59;9038
    000036;32;21283
    000037;35;14897
    000038;83;51514
    000039;49;15305
    000040;201;20000
    000041;201;20000
    000042;201;20000
    000043;201;20000
    000044;201;20000
    000045;201;20000
    000046;201;20000
    000047;201;20000
    000048;201;20000
    000049;201;20000
    000050;201;20000
    000051;201;20000
    000052;201;20000
    000053;201;20000
    000054;201;20000
    000055;201;20000
    000056;201;20000
    000057;201;20000
    000058;35;14897
    000059;83;51514
    000060;59;9038
    000061;32;21283
    000062;78;12627
    000063;83;51514
    000064;49;15305
    000065;58;8251
    000066;201;20000
    000067;201;20000
    000068;201;20000
    000069;201;20000
    000070;201;20000
    000071;201;20000
    000072;201;20000
    000073;201;20000
    000074;201;20000
    000075;201;20000
    000076;201;20000
    000077;201;20000
    000078;201;20000
    000079;201;20000
    000080;201;20000
    000081;201;20000
    000082;201;20000
    000083;78;12627
    000084;35;14897
    000085;49;15305
    000086;58;8251
    000087;201;20000
    000088;201;20000
    000089;201;20000
    000090;201;20000
    000091;201;20000
    000092;201;20000
    000093;201;20000
    000094;201;20000
    000095;201;20000
    000096;201;20000
    000097;201;20000
    000098;201;20000
    000099;201;20000
    000100;201;20000
    000101;201;20000
    000102;201;20000
    000103;201;20000
    000104;201;20000
    könnte natürlich genau dann sein, wenn die Daten auf die SD geschrieben werden.

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test