Forum: Mikrocontroller und Digitale Elektronik [Bascom] Mehrere Namen in Array


von Lutze53 E. (lutze53)


Angehängte Dateien:

Lesenswert?

Nabend

hab mom ein kleines Problem und komme da nicht weiter :(
da ja in Bascom kein mehrdimensionales Array geht komme ich hier nicht 
weiter.
habe momentan 2 ds1820 am 1wire hängen, ich wollte jetzt die ID der 
DS1820 abspeichern und den einen Namen geben, so das ich sie später 
immer wieder aufrufen kann.
hab hier erstmal den code wo ich sie auslesen und anzeigen lassen kann, 
aber komme nicht weiter mit dem abspeichern. wobei hier noch ein problem 
ist da der name "ID" und der hex als string abgespeichert wird, was mir 
nix bringt.
1
'-------------------------------------------'
2
'     Mikrocontroller/Chip                  '
3
'-------------------------------------------'
4
$regfile = "m32def.dat"                                     'ATMEGA32 Registerdatei
5
$crystal = 8000000                                          'Externer Quarz 8Mhz
6
$hwstack = 40                                               'HardwareStack
7
$swstack = 16                                               'SoftwareStack
8
$framesize = 32                                             'Framesize
9
$baud = 9600                                                'Baudrate
10
11
'-------------------------------------------'
12
'     LCD Konfiguration                     '
13
'-------------------------------------------'
14
'Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , _
15
'                 Db7 = Portb.7 , E = Portb.0 , Rs = Portb.1
16
'Config Lcd = 16 * 2
17
18
19
'-------------------------------------------'
20
'     1Wire Konfiguration                   '
21
'-------------------------------------------'
22
Config 1wire = Porta.1
23
24
25
'-------------------------------------------'
26
'     Deklarationen                         '
27
'-------------------------------------------'
28
Declare Sub Sensorsuche()
29
30
Declare Sub Sensorinfo()
31
32
'-------------------------------------------'
33
'     Variablen                             '
34
'-------------------------------------------'
35
36
Dim Ds_id(8) As Byte
37
Dim Index(16) As String * 16
38
Dim I As Byte
39
Dim Anzahl As Word
40
Dim Sensor As Byte
41
42
43
'-------------------------------------------'
44
'     Main                                  '
45
'-------------------------------------------'
46
Call Sensorinfo()
47
Wait 2
48
Call Sensorsuche()
49
Call Sensorinfo()
50
51
Do
52
    nop
53
Loop
54
55
End
56
57
58
'******************************************************************************'
59
60
'-------------------------------------------'
61
'     Subroutinen                   '
62
'-------------------------------------------'
63
64
Sub Sensorsuche()
65
   1wreset
66
   Anzahl = 1wirecount()
67
   Ds_id(1) = 1wsearchfirst()
68
   For I = 1 To 8
69
      Index(1) = Index(1) + Hex(ds_id(i))
70
   Next I
71
72
   For Sensor = 2 To Anzahl
73
      Ds_id(1) = 1wsearchnext()
74
      For I = 1 To 8
75
      Index(sensor) = Index(sensor) + Hex(ds_id(i))
76
      Next
77
   Next Sensor
78
End Sub
79
80
Sub Sensorinfo()
81
   If Anzahl = 0 Then
82
   Print "Keine Sensoren gefunden, suche..."
83
   Exit Sub
84
   End If
85
86
   Print "Sensoren: " ; Anzahl
87
   For I = 1 To Anzahl
88
   Print "Sensor " ; I ; ": " ; Index(i)
89
   Next I
90
End Sub


und verstehe nicht wenn ich es in putty anzeigen lasse kommt die 
sensorinfo am anfang immer doppelt. ka wieso

von Peter R. (peterfido)


Lesenswert?

Wenn Du Variablen mit Namen ansprechen möchtest, geht das z.B. per 
Overlay und Alias
1
$regfile = "M8def.dat"                                      '.dat-file ATmega8'
2
$crystal = 8000000                                          'Taktfrequenz 8MHz'
3
$hwstack = 350                                              'Größe Hardwarestack'
4
$swstack = 350                                              'Größe Softwarestack'
5
$framesize = 200                                            'Größe Frame'
6
7
8
$baud = 19200                                               'Baudrate UART
9
10
Dim Ds_id(8) As Byte
11
Dim Ds1 As Byte At Ds_id(1) Overlay
12
Dim Ds2 As Byte At Ds_id(2) Overlay
13
Dim Ds3 As Byte At Ds_id(3) Overlay
14
Dim Ds4 As Byte At Ds_id(4) Overlay
15
Dim Ds5 As Byte At Ds_id(5) Overlay
16
Dim Ds6 As Byte At Ds_id(6) Overlay
17
Dim Ds7 As Byte At Ds_id(7) Overlay
18
Dim Ds8 As Byte At Ds_id(8) Overlay
19
20
Ds_1 Alias Ds_id(1)
21
Ds_2 Alias Ds_id(2)
22
Ds_3 Alias Ds_id(3)
23
Ds_4 Alias Ds_id(4)
24
Ds_5 Alias Ds_id(5)
25
Ds_6 Alias Ds_id(6)
26
Ds_7 Alias Ds_id(7)
27
Ds_8 Alias Ds_id(8)
28
29
30
31
32
33
Dim B As Byte
34
35
For B = 1 To 8
36
   Ds_id(b) = B
37
Next B
38
39
Print Ds1
40
Print Ds2
41
Print Ds3
42
Print Ds4
43
Print Ds5
44
Print Ds6
45
Print Ds7
46
Print Ds8
47
48
Print Ds_1
49
Print Ds_2
50
Print Ds_3
51
Print Ds_4
52
Print Ds_5
53
Print Ds_6
54
Print Ds_7
55
Print Ds_8
56
57
Do
58
59
Loop
60
End

von Lutze53 E. (lutze53)


Lesenswert?

aso overlay da habe ich was drüber gelesen, thx werde ich mir mal 
anschauen.
hatte auch gerade was gefunden, die ids ins eeprom zu schreiben und von 
da immer auslesen.

von ich da (Gast)


Lesenswert?

Kann man auch so machen,

ID1(1) = &H10 : ID1(2) = &H06 : ID1(3) = &HFB : ID1(4) = &H98 : ID1(5) = 
&H01 : ID1(6) = &H08 : ID1(7) = &H00 : ID1(8) = &HBF

mit ID2(x) = &H xx usw, entsprechend weiter.
entsprechend mit Komentaren versehen wie,
'ID1 ist Sensor Wohnzimmer mit ID 1006FB98010800BF
'ID2 ist Sensor Aussen mit ID 104587FE01002E usw

von Gerhard (Gast)


Lesenswert?

Lutze53 E. schrieb:
> da ja in Bascom kein mehrdimensionales Array geht komme ich hier nicht
> weiter

kennst den schon?
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=9675&highlight=array

Beitrag #5572167 wurde von einem Moderator gelöscht.
Beitrag #5572168 wurde von einem Moderator gelöscht.
Beitrag #5574272 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.