|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Questa:
Codice:
Private Sub SendMsg(num As Long, buf() As Byte)
Dim tmp(4) As Byte, I As Long
Dim v As Variant
tmp(1) = (num And &HFF000000) / &H1000000
tmp(2) = (num And &HFF0000) / &H10000
tmp(3) = (num And &HFF00) / &H100
tmp(4) = num And &HFF
v = tmp
mscomm1.Output = v
'Non so se buf vada ridimensionato comunque lo faccio uguale
ReDim Preserve buf(num)
v = buf
mscomm1.Output = v
End Sub
|
|
|
|
|
|
#22 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Non capisco il perché di queste divisioni
|
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Sai cosa significa fare un AND bit a bit e uno shift (ho utilizzato la divisione al posto dello shift perchè in VB non sapevo come fare) ? |
|
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Se non sbaglio AND bit a bit significa che restituisce 1 se entrambi i bit sono 1 e 0 altrimenti giusto ? Lo shift è uno scambio ..... uno spostamento di elementi all'interno del vettore o di una lista dinamica ecc .... se ricordo bene . Ma cmq ancora non riesco a capire perché scomporre i 4 byte . Abbiamo detto che l'invio avviene su di un certo numero di byte , allora perché scomporli . Forse sarò tosto ma proprio non riesco a capirlo
|
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perchè ho letto che vengono inviati o stringhe o array di byte...ma non un intero e visto che non è convertibile direttamente in un vettore di byte allora lo converto io in un vettore di byte...
Prova a vedere se invia anche l'intero senza metterlo in un vettore di byte... |
|
|
|
|
|
#26 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Un'altra cosa . Perché inviare prima la dimensione del pacchetto ? A cosa mi serve ?
|
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Su un'altra cosa non mi trovo :
Codice:
Do
ReadFile f, buffer(1), BYTE_PER_MSG, read, ByVal 0&
'Ora richiamo la Sub che invia i dati
Loop While read > 0
|
|
|
|
|
|
#30 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Quote:
|
||
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Ah scusa ho capito queste istruzioni commettevo io l'errore . Ma non sarebbe meglio fare così la condizione di uscita ? Così risparmierei un cilco ti trovi ? Quanto alla CreateFile si ho capito , scusami . Poi un'altra cosa , come stanno le cose e siccome l'integer è di 4 byte non posso inviare un file superiore a 32 K ?
Codice:
Do
ReadFile f, buffer(1), BYTE_PER_MSG, read, ByVal 0&
'Ora richiamo la Sub che invia i dati
Loop While read <BYTE_PER_MSG
|
|
|
|
|
|
#32 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
La ReadFile cerca di leggere BYTE_PER_MSG byte dal file... Il numero di byte letti finisce in read... La posizione da cui si andrà a leggere dopo è quella successiva all'ultimo byte letto...quindi se il file ha una qualsiasi dimensione prima o poi read varrà zero (cioè nel ciclo successivo dopo che hai letto gli utlimi byte presenti nel file)... |
|
|
|
|
|
|
#33 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Inoltre è utile inviare anche un messaggio di lunghezza zero epr far capire al programma che sta dall'altra parte che il file è finito |
|
|
|
|
|
|
#34 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Se lo vuoi fare così lo devi scrivere in questo modo : Codice:
Do
ReadFile f, buffer(1), BYTE_PER_MSG, read, ByVal 0&
'Ora richiamo la Sub che invia i dati
Loop Until read <BYTE_PER_MSG
|
|
|
|
|
|
|
#35 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Si scusa ho dimenticato la funzione SendMsg read,buffer . Così andrebbe bene ?
Codice:
Do
ReadFile f, buffer(1), BYTE_PER_MSG, read, ByVal 0&
'Ora richiamo la Sub che invia i dati
SendMsg read, buffer
Loop While read < BYTE_PER_MSG
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No serve Until al posto di While... Inoltre come ho già detto dovresti inviare anche un messaggio di lunghezza zero per far capire al programma che riceve il file che il file è terminato...
|
|
|
|
|
|
#37 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
|
|
|
|
|
#38 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Serve per covertire dal tipo Byte al tipo Integer.... |
|
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Si ma implicitamente avviene quella conversione giusto ? Cmq guarda il codice che ho modificato della SendMSg
Codice:
Private Sub SendMsg(num As Long, buf() As Byte)
Dim tmp(4) As Byte, I As Long
Dim v As Variant
tmp(1) = (num And &HFF000000) / &H1000000
tmp(2) = (num And &HFF0000) / &H10000
tmp(3) = (num And &HFF00) / &H100
tmp(4) = num And &HFF
v = tmp
MSComm1.CommPort = 1
MSComm1.PortOpen = True
MSComm1.Output = v
'Non so se buf vada ridimensionato comunque lo faccio uguale
v = buf
MSComm1.Output = v
MSComm1.PortOpen = False
End Sub
|
|
|
|
|
|
#40 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Ah cionci , mi spieghi nel dettaglio l'operazioni si scomposizione dell'intero in 4 byte differenti ? Ci tengo particolarmente .
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:09.



















