slavezero
07.06.2012, 16:11
Hallo,
ganz einfach gefragt: wie bekomme ich Zeichen aus einem String in ein Array?
Ich mache zur zZ folgendes.
$regfile = "m2561def.dat"
$crystal = 8000000
$hwstack = 256
$swstack = 256
$framesize = 256
$lib "I2C_TWI.LBX"
Config Twi = 400000
$baud = 57600
$baud1 = 57600
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
Spiinit
Dim Rxd_sgn As Byte
Dim Rxd_stat As Byte
Dim Rxd_buffer As String * 130
Dim Values(40) As Byte
Dim Rxdbuffer(130) As Byte
Dim Debugstr As String * 130
Dim A_str As String * 130
Dim B_str As String * 130
Dim C_str As String * 130
Dim L_str As Byte
On Urxc Record ' isr rxd (com1)
Rxd_stat = 0
Open "com2:" For Binary As #1
'-------------------------------------------------------------------------------
'main
Do
If Rxd_stat = 2 Then
If Left(rxd_buffer , 2) = "#a" Then A_str = Rxd_buffer
If Left(rxd_buffer , 2) = "#b" Then B_str = Rxd_buffer
If Left(rxd_buffer , 2) = "#c" Then C_str = Rxd_buffer
Rxd_stat = 0
L_str = 0
Rxd_buffer = ""
Enable Interrupts ' interrupts freigeben
Enable Urxc
End If
'(
' nur für test:
Print #1 , A_str;
Print #1 , Len(a_str)
Print #1 , B_str;
Print #1 , Len(b_str)
Print #1 , C_str;
Print #1 , Len(c_str)
')
Loop
Close #1
End
'-------------------------------------------------------------------------------
Record:
Rxd_sgn = Udr0 ' von uart register nach zeichen
If Rxd_sgn = &H23 Then Rxd_stat = 1 ' < # > empfangen
If Rxd_stat = 1 Then Rxd_buffer = Rxd_buffer + Chr(rxd_sgn) ' von zeichen nach string
If Rxd_sgn = &H0D Then
Rxd_stat = 2 ' < CR > empfangen. string ende
Disable Interrupts ' interrupts sperren
Disable Urxc
L_str = Len(rxd_buffer)
End If
Return
'-------------------------------------------------------------------------------
In der Int.routine < record: > wird jedes empfangene Zeichen in einen String < rxd_buffer > geschoben.
(Ende ist erreicht wenn &H0D empfangen worden ist)
dann verschiebe ich den empfangen String, je nach zweitem Zeichen in einen anderen String. Zb. nach <A_Strg>
nun bräuchte ich aber die Zeichen in einem Array, hier bei mir < Rxdbuffer > um sie weiter verarbeiten zu können.
Wie bekomme ich die Zeichen da hin?
sz
ganz einfach gefragt: wie bekomme ich Zeichen aus einem String in ein Array?
Ich mache zur zZ folgendes.
$regfile = "m2561def.dat"
$crystal = 8000000
$hwstack = 256
$swstack = 256
$framesize = 256
$lib "I2C_TWI.LBX"
Config Twi = 400000
$baud = 57600
$baud1 = 57600
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
Spiinit
Dim Rxd_sgn As Byte
Dim Rxd_stat As Byte
Dim Rxd_buffer As String * 130
Dim Values(40) As Byte
Dim Rxdbuffer(130) As Byte
Dim Debugstr As String * 130
Dim A_str As String * 130
Dim B_str As String * 130
Dim C_str As String * 130
Dim L_str As Byte
On Urxc Record ' isr rxd (com1)
Rxd_stat = 0
Open "com2:" For Binary As #1
'-------------------------------------------------------------------------------
'main
Do
If Rxd_stat = 2 Then
If Left(rxd_buffer , 2) = "#a" Then A_str = Rxd_buffer
If Left(rxd_buffer , 2) = "#b" Then B_str = Rxd_buffer
If Left(rxd_buffer , 2) = "#c" Then C_str = Rxd_buffer
Rxd_stat = 0
L_str = 0
Rxd_buffer = ""
Enable Interrupts ' interrupts freigeben
Enable Urxc
End If
'(
' nur für test:
Print #1 , A_str;
Print #1 , Len(a_str)
Print #1 , B_str;
Print #1 , Len(b_str)
Print #1 , C_str;
Print #1 , Len(c_str)
')
Loop
Close #1
End
'-------------------------------------------------------------------------------
Record:
Rxd_sgn = Udr0 ' von uart register nach zeichen
If Rxd_sgn = &H23 Then Rxd_stat = 1 ' < # > empfangen
If Rxd_stat = 1 Then Rxd_buffer = Rxd_buffer + Chr(rxd_sgn) ' von zeichen nach string
If Rxd_sgn = &H0D Then
Rxd_stat = 2 ' < CR > empfangen. string ende
Disable Interrupts ' interrupts sperren
Disable Urxc
L_str = Len(rxd_buffer)
End If
Return
'-------------------------------------------------------------------------------
In der Int.routine < record: > wird jedes empfangene Zeichen in einen String < rxd_buffer > geschoben.
(Ende ist erreicht wenn &H0D empfangen worden ist)
dann verschiebe ich den empfangen String, je nach zweitem Zeichen in einen anderen String. Zb. nach <A_Strg>
nun bräuchte ich aber die Zeichen in einem Array, hier bei mir < Rxdbuffer > um sie weiter verarbeiten zu können.
Wie bekomme ich die Zeichen da hin?
sz