Italian [SOLVED] Type con bytes e null pointer... (aiuto!)

Straker

Active Member
Licensed User
Longtime User
Scusate ma non riesco proprio a venirne fuori.

Sto facendo un programma che scambia dati col PC attraverso un socket e AsyncStream. Tutto funziona bene finché mi limito a cose semplici.

Le cose si fanno incasinate quando inizio a metterci in mezzo dei protocolli. Mi spiego meglio:

Il codice è questo

B4X:
    Type HeaderType(Stx1 As Byte, Stx2 As Byte, Orig As Byte, Dest As Byte, cmd As Byte, length As Byte, Addr As Long, chkSum As Byte,)
        Type RxBuffType(Header as HeaderType, Dati(127) As Byte, chkDati As Byte)
    Dim RxBuff As RxBuffType

Tramite AsyncStream io ricevo un buffer di bytes. I bytes da 0 a 10 rappresentano l'header, dal byte 11 iniziano i dati veri e propri

DOMANDA 1: esiste un metodo per prendere i primi 11 bytes del buffer e copiarli nell'header (tipo memcopy e varPtr in visual basic per intenderci)?

DOMANDA 2: come faccio a copiare i bytes da buffer(11) in poi dentro rxBuff.Dati(0) in poi?

Per la copia dei bytes ho provato le seguenti soluzioni, tutte mi fanno Null Pointer Exception
B4X:
   dim b as byte   
   rxBuff.Stx1=Buffer(0)    ' FUNZIONA! solo per dimostrare che si può assegnare
   b=Buffer(0)
   rxBuff.Stx1=b            'FUNZIONA! e fino qui è ovvio...
   
  rxBuff.Dati(0) =Buffer(0) 'CRASH 
 
  b=Buffer(0)
  rxBuff.Dati(0)=b       'CRASH

   dim bc as ByteConverter
   bc.ArrayCopy(Buffer, 0, RxBuff.Dati, 1)    'CRASH
 

Straker

Active Member
Licensed User
Longtime User
Ok, bastava fare RxBuff.initialize

Non sapevo che i type andassero inizializzati. Cladsico errore da newbie.
 
Top