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
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
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