bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Beste
Ik ben bezig met een programmaatje te schrijven in Proton IDE maar ik zit met een klein probleempje.
Ik krijg van de pc een hele boel data aan. Ik dacht het zo op te splitsen. data1,data2,data3,... dus met een , een opsplitsing te maken. Maar nu is de vraag hoe splits ik die data in Proton IDE op bv naar een array.
Als jullie betere oplossingen hebben in verband het zenden van de data hoor ik het graag.
PS: Ter controle tel ik alle data op en verstuur dit getal mee en ik controleer bij de ontvanger of de data overeen komt met die check sum.
Bram
Progger
GMT+1
persoonlijk zou ik een (heel) simpele state machine maken.
"als startkarakter, dan positie=0, ontvang is waar"
"als ontvang==hoog, dan sla karakter op in array op positie"
"als ontvang==hoog karakter is scheidingteken, hoog positie op"
"als positie==max, dan bereken som en ontvang = onwaar"
bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Pseudo picbasic:
RxBuffer[Index] = Uart_Rx
Checksum = Checksum + RxBuffer[Index]
If Index = Max_characters Then
Uart_Tx(Checksum)
Index = 0
Checksum = 0
Else
Incr Index
End If
bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Picbasic heeft een functie HRSIN + men kan wachten op data met het volgende commando
HSerIn [Wait( "," ) , Str DataInput]maar het probleem hierbij is dat ik een hele boel data verstuur zo wel bin bit formaat als ook in double word formaat. Hierdoor moet ik moet ik een variabele aanmaken van het type double word. Maar omdat ik 59 elementen heb kom ik op deze manier niet meer toe met mijn geheugen.
Hoe kan ik dit anders oplossen?
hadv
Just find out what you like and let it kill you
59 doublewords is 236 byte.
Bit formaat lijkt me een beetje mal, de kleinste eenheid van transmissie is toch nog altijd een byte.
Je kunt natuurlijk de gegevens in het geheugen proppen met indirect addressing, maar dan moet je bij het uitlezen weer op de scheidingstekens letten.
Wat ben je van plan met die gegevens te doen, misschien kunnen we daar wat mee.
bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Ik ben van plan om een soort van scada systeem te maken. Ik heb net gekeken en ik heb
- Bit 3
- Byte 41
- Word 9
- Dword 1 is een soort checksum ik tel alle data bij elkaar op en ik verstuur deze som mee en ik contoleer in mijn µC of de waarde overeen komt met de ontvangen data
De bits zullen ook als aparte bytes verzonden woeden dus zijn er eigenlijk 44 bytes
Dus dit geeft een totaal van 66 bytes
Ik heb nu nog maar 117 bytes ruimte over dus alles in een doubel word zetten gaat niet lukken 
[Bericht gewijzigd door bramvr op (18%)]
Tommyboy
Zo goed als het vroeger was, is het nooit geweest.
Waarom zou je je bits, bytes en words dan ook in double words zetten? Dat kan namelijk respectievelijk 32x kleiner, 4x kleiner en 2 keer kleiner...
bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Omdat ik het eerst met deze functie wou maken
HSerIn [Wait( "," ) , Str DataInput]waardoor ik alles in een double word moet zetten omdat ik 1 variabele heb van het double word type.
Ik weet dat het anders kan maar ik weet niet hoe 
Ik zou iets moeten hebben waar ik de data kan splitsen bij een "," en deze in variabele zetten maar ik moet rekening houden met de verschillende formaten van data zodat ik deze data in een array kan zetten.
[Bericht gewijzigd door bramvr op (29%)]
bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
bramvr
Elektronica werkt op rook, als de rook er uit is werkt het niet meer!!!
Kun je niet je words en dwords bij de computer al opdelen in bytes? Als je in een bekende volgorde verzend kun je de bytes in je uc weer samenvoegen tot words en dwords.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Je kunt toch gewoon de binnenkomende bytes opbergen waar ze thuishoren? Als je weet dat er 4 bytes gaan komen die een dword vormen sla je die gewoon op:
(dit is mikrobasic, maar ik neem aan dat picbasic ook wel iets heeft om de bytes van een dword apart te adresseren)
HserIn (ByteRx)
Lo(MyDword) = ByteRx
HserIn (ByteRx)
Hi(MyDword) = ByteRx
...
...
