Hallo iedereen,

Ik was in Bascom een programma aan het schrijven waarbij ik 5 poorten van een AVR uitlees en afzonderlijk in 5 bytes opsla. Nu moet ik deze 5 bytes achter elkaar in 1 string zetten maar het wil niet lukken. Iemand een idee?


Dim Mystr As String * 6
Dim Myvar(5) As Byte


Mystr = Str(myvar(1)) + Str(myvar(2)) + Str(myvar(3)) + Str(myvar(4)) + Str(myvar(5))

Let er wel op dat je bytes geen NUL (ascii 0) waarde bevatten aangezien dit voor Bascom de string terminator is en dus je string zal inkorten.

Waarom wil dit onderstaande niet werken. Ik krijg altijd de foutmelding "Number Parameter Expected". Waarschijnlijk gaat het om een stom foutje maar ik krijg het niet gevonden.

Dim Mystr As String * 35
Dim Myvar(5) As String * 8

Dim B As String * 8
Dim C As String * 8
Dim D As String * 8
Dim E As String * 8
Dim F As String * 8

Config Portb = Input
Config Portc = Input
Config Portd = Input
Config Porte = Input
Config Portf = Input

B = Bin(portb)
C = Bin(portc)
D = Bin(portd)
E = Bin(porte)
F = Bin(portf)

Mystr = Str(b(1)) + Str(c(2)) + Str(d(3)) + Str(e(4)) + Str(f(5))

end

Probeer het zo eens.

[code=Bascom]
Dim Mystr As String * 41

Dim Myvar(5) As String * 8

Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte

Config Portb = Input
Config Portc = Input
Config Portd = Input
Config Porte = Input
Config Portf = Input

'Pine = &B10001111 < - Zo Kun Je Het Testen

Mystr = Bin(pinb) + Bin(pinc) + Bin(pind) + Bin(pine) + Bin(pinf)

Print Mystr

[/code]

[Bericht gewijzigd door 2N3055 op (19%)]

inderdaad nu krijg ik het wel gecompileerd. Bedankt voor de snelle reactie!

Nog een vraagje als ik nu de variabele deze onderstaande (willekeurige) waarden geef dan krijg ik een decimale uitkomst als ik dit print.

B = "01010101"
C = "01010101"
D = "11111111"
E = "11111111"
F = "10101010"

Maar ik moet de binaire waarde hebben. Nu had ik al geprobeerd om met

Dim Mystr1 As String * 35
Mystr1 = Bin(mystr)

maar dan krijg ik weer de zelfde foutmelding als voordien.

Hieronder nog het volledige programma.

Dim Mystr As String * 35
Dim Mystr1 As String * 35

Dim Myvar(5) As String * 8

Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte

Config Portb = Input
Config Portc = Input
Config Portd = Input
Config Porte = Input
Config Portf = Input

B = "01010101"
C = "01010101"
D = "11111111"
E = "11111111"
F = "10101010"

Mystr = Str(b) + Str(c) + Str(d) + Str(e) + Str(f)

Mystr1 = Bin(mystr)

Print Mystr

End

Het is mij niet helemaal duidelijk wat je nu eigenlijk wilt doen, maar om de waarde van alle poorten binair te printen heb je hier genoeg aan. Rest v/d code kun je vergeten.


Print Bin(portb) ; Bin(portc); Bin(portd) ; Bin(porte) ; Bin(portf) 

Ja ik heb het misschien slecht omschreven, het printen van de Mystr was eigenlijk gewoon maar om te checken wat de uiteindelijke variabele zou zijn.

Het is de bedoeling dat ik van die 5 poorten 1 variabele maak. Zodat de 5 variabele eigenlijk aan elkaar worden geplakt. Bijvoorbeeld dat ik de variabele Mystr 0101010101010101111111111111111110101010" en deze dan kan uitfilteren met de MID fuctie. Elke pin v/d microcontroller stelt dan 1 bit voor.

Ps: het is de bedoeling om een programma voor een kabeltester te maken.

Weet niemand hier een oplossing voor??

Ik hoop dat ik je zo goed heb begrepen.
Dit zet in de string variable Mystr 40 enen of nullen.

[code=Bascom]
Dim Mystr As String * 41

Dim Myvar(5) As String * 8

Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte

Config Portb = Input
Config Portc = Input
Config Portd = Input
Config Porte = Input
Config Portf = Input

'Pine = &B10001111 < - Zo Kun Je Het Testen

Mystr = Bin(pinb) + Bin(pinc) + Bin(pind) + Bin(pine) + Bin(pinf)

Print Mystr

[/code]

Bedankt dit was idd wat ik moest hebben. Ik heb op school wel bascom gehad maar dat is al effe geleden. En door zo dingen te doen leer je altijd bij.