Campbell-scientific CR9000X Measurement and Control System Instrukcja Użytkownika Strona 142

  • Pobierz
  • Dodaj do moich podręczników
  • Drukuj
  • Strona
    / 442
  • Spis treści
  • BOOKMARKI
  • Oceniono. / 5. Na podstawie oceny klientów
Przeglądanie stron 141
Section 4. CRBasic – Native Language Programming
EXAMPLE 4.2.4-3. Programming with Bool8 and a bit-shift operator.
Public Alarm(32)
Public Flags As Long
Public FlagsBool8(4) As Long
DataTable (Bol8Data,True,-1)
DataInterval (0,1,Sec,10)
Sample(2,FlagsBool8(1),Bool8) 'store bits 1 through 16 in columns 1 through 16 of data file
Sample(2,FlagsBool8(3),Bool8) 'store bits 17 through 32 in columns 17 through 32 of data file
EndTable
BeginProg
Scan (1,Sec,3,0)
'Reset all bits each pass before setting bits selectively
'Set bits selectively. Hex used to save space.
'Logical OR bitwise comparison
'If bit in OR bit in The result
'Flags Is Bin/Hex Is Is
'---------- ---------- ----------
'0 0 0
'0 1 1
'1 0 1
'1 1 1
' Binary equivalent of Hex:
If Alarm(1) Then Flags = Flags OR &h1 ' &b1
If Alarm(2) Then Flags = Flags OR &h2 ' &b10
If Alarm(3) Then Flags = Flags OR &h4 ' &b100
If Alarm(4) Then Flags = Flags OR &h8 ' &b1000
If Alarm(5) Then Flags = Flags OR &h10 ' &b10000
If Alarm(6) Then Flags = Flags OR &h20 ' &b100000
If Alarm(7) Then Flags = Flags OR &h40 ' &b1000000
If Alarm(8) Then Flags = Flags OR &h80 ' &b10000000
If Alarm(9) Then Flags = Flags OR &h100 ' &b100000000
If Alarm(10) Then Flags = Flags OR &h200 ' &b1000000000
If Alarm(11) Then Flags = Flags OR &h400 ' &b10000000000
If Alarm(12) Then Flags = Flags OR &h800 ' &b100000000000
If Alarm(13) Then Flags = Flags OR &h1000 ' &b1000000000000
If Alarm(14) Then Flags = Flags OR &h2000 ' &b10000000000000
If Alarm(15) Then Flags = Flags OR &h4000 ' &b100000000000000
If Alarm(16) Then Flags = Flags OR &h8000 ' &b1000000000000000
If Alarm(17) Then Flags = Flags OR &h10000 ' &b10000000000000000
If Alarm(18) Then Flags = Flags OR &h20000 ' &b100000000000000000
If Alarm(19) Then Flags = Flags OR &h40000 ' &b1000000000000000000
If Alarm(20) Then Flags = Flags OR &h80000 ' &b10000000000000000000
If Alarm(21) Then Flags = Flags OR &h100000 ' &b100000000000000000000
If Alarm(22) Then Flags = Flags OR &h200000 ' &b1000000000000000000000
If Alarm(23) Then Flags = Flags OR &h400000 ' &b10000000000000000000000
If Alarm(24) Then Flags = Flags OR &h800000 ' &b100000000000000000000000
If Alarm(25) Then Flags = Flags OR &h1000000 ' &b1000000000000000000000000
If Alarm(26) Then Flags = Flags OR &h2000000 ' &b10000000000000000000000000
If Alarm(27) Then Flags = Flags OR &h4000000 ' &b100000000000000000000000000
If Alarm(28) Then Flags = Flags OR &h8000000 ' &b1000000000000000000000000000
If Alarm(29) Then Flags = Flags OR &h10000000 ' &b10000000000000000000000000000
If Alarm(30) Then Flags = Flags OR &h20000000 ' &b100000000000000000000000000000
If Alarm(31) Then Flags = Flags OR &h40000000 ' &b1000000000000000000000000000000
If Alarm(32) Then Flags = Flags OR &h80000000 '&b10000000000000000000000000000000
'Note: &HFF = &B11111111. By shifting at 8 bit increments along 32-bit ‘Flags’ (Long data
type)
'the first 8 bits in the four Longs FlagsBool8(4) are loaded with alarm states. Only the
first
'8 bits of each Long ‘FlagsBool8’ are stored when converted to Bool8.
'Logical AND bitwise comparison
'If bit in OR bit in The result
'Flags Is Bin/Hex Is Is
'---------- ---------- ----------
'0 0 0
'0 1 0
'1 0 0
'1 1 1
FlagsBool8(1) = Flags AND &HFF 'AND 1st 8 bits of "Flags" & 11111111
FlagsBool8(2) = (Flags >> 8) AND &HFF 'AND 2nd 8 bits of "Flags" & 11111111
FlagsBool8(3) = (Flags >> 16) AND &HFF 'AND 3rd 8 bits of "Flags" & 11111111
FlagsBool8(4) = (Flags >> 24) AND &HFF 'AND 4th 8 bits of "Flags" & 11111111
CallTable(Bol8Data)
NextScan
EndProg
4-14
Przeglądanie stron 141
1 2 ... 137 138 139 140 141 142 143 144 145 146 147 ... 441 442

Komentarze do niniejszej Instrukcji

Brak uwag