[Bascom] Mehrere Namen in Array

OP #2478723
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
Angehängte Dateien:
#2479082
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
Gast #2479785
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
Beitrag #5572167 wurde von einem Moderator gelöscht.
Beitrag #5572168 wurde von einem Moderator gelöscht.
Beitrag #5574272 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren