Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve
Dopo quasi un mese di utilizzo quotidiano e un viaggio medio-lungo in autostrada, raccontiamo pregi e limiti della Geely EX5: comfort premium, batteria LFP da 60,22 kWh, autonomia fino a 430 km e un prezzo che parte da 38.900 €
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Complete è un robot aspirapolvere che coniuga un'aspirazione potente e un lavaggio con rullo a logica di intelligenza artificiale che guida al meglio nella pulizia di casa: rulli e spazzole estensibili a pulire gli angoli e una base di ricarica che lava e ripristina il robot al emglio delle sue funzionalità dopo ogni azione di pulizia
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-02-2003, 16:37   #61
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "leon84"

Cioè voglio dire perché shiftare ?
Ti faccio il caso in cui vogliamo sapere il valore dei 2 bit più significativi:

Il numero 134 è in binario 128+4+2...cioè 01 00 01 10...
Faccio l'and con 11 00 00 00 ed ottengo 01 00 00 00 che in decimale è 128 ma a me interessa avere il valore della cifra rappresentata da quei due bit (nel caso del messaggio il valore dell'ultimo byte) e per ottenerlo posso shiftare a destra di 6 bit ed ottengo che i due bit più significativi valgono 1 (per la rpecisione 01)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 16:37   #62
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Si ora è veramente chiaro . Toglimi una curiosità : le funzioni ReadFile,WriteFile sono tipizzate e ritornano tutte un valore Long . Come mai per esempio il valore long non viene utilizzato nel codice ad eccezione della CreateFile . Mi è capitato spesso in C++ di realizzare funzioni tipizzate . Il loro valore doveva per forza essere contenuto in una variaible . Non potevo cioè riciamarle come delle funzioni atipizzate (void) . Perché in VB questo è possibile ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 16:40   #63
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "leon84"

Il loro valore doveva per forza essere contenuto in una variaible . Non potevo cioè riciamarle come delle funzioni atipizzate (void) . Perché in VB questo è possibile ?
Nono in C e C++ si può tranquillamente fare

int f(int a)
{
....
}

Si può tranquillamente richiamare:

f(a);

senza usarne il risultato...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 16:46   #64
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
veramente ? lo sai che non lo sapevo ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 16:49   #65
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Nella chat che sto realizzando scambio messaggi di testo senza alcun problema : ora voglio inserire un menù che chiamo "Invia file" . Quando ci clicco si apre la finestra di dialogo che mi fa selezionare il file da inviare . Io lo seleziono e con tutte quelle procedure invio e ricevo il file . Il problema è : Come faccio a far capire all'altra applicazione che i dati che gli giungeranno sono i byte del file e non messaggi di testo ? Avevo pensato ad un identificatore per esempio "-99999999" . Quando riceve questo messaggio attiva la procedura di ricezione del file . Che ne pensi ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 17:34   #66
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Fai così...il numero di byte del messaggio invece di metterlo su un Long lo metti su un Integer (16 bit)...
Se lo metti a 16 bit devi togliere le due conversioni per i byte più alti...

tmp fallo di 3 invece di 4 e sul primo Byte ci metti un byte di controllo...

SendMsg diventerà così:
Codice:
Private Sub SendMsg(cmd As Byte, num As Integer, buf() As Byte) 
Dim tmp(3) As Byte
    Dim v As Variant 
    tmp(1) = cmd
    tmp(2) = (num And &HFF00) / &H100 
    tmp(3) = num And &HFF
Ti devi definire diverse costanti all'interno del programma:

Const FILE_NAME &H04
Indica che ilpacchetto contiene un nome di un file (ad esempio per trasferire un file dall'altra parte e dargli lo stesso nome che dalla parte di chi lo manda)

Const FILE_DATA &H02
Indica che il pacchetto contiene i dati di un file

Const TEXT_DATA &H01
Indica che il pacchetto contiene i dati di un messaggio di testo

Const END_OF_DATA &H08
Questo può servire sia per indicare la fine di un nome di file, dei dati di un file e di un messaggio di testo

Const END_OF_CONNECTION &H80
Questo ti può servire per fare la disconnessione...magari l'altro PC dovrà risponderti con un altro apcchetto di END_OF_CONNECTION

Ad esempio l'invio del file diventerà così :
Codice:
        Do 
            ReadFile f, buffer(1), BYTE_PER_MSG, read, ByVal 0& 
            'Ora richiamo la Sub che invia i dati 
            If read < BYTE_PER_MSG Then
                SendMsg read, buffer,  FILE_DATA Or END_OF_DATA
            Else
                SendMsg read, buffer,  FILE_DATA
            End If
        Loop Until read < BYTE_PER_MSG 
        CloseHandle f
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 17:37   #67
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Durante la ricezione...per testare se hai un tipo o un altro di dati basta fare :
Codice:
If (tmp(1) And FILE_NAME) > 0 Then
...
ElseIf (tmp(1) And TEXT_DATA) > 0 Then
...
End If

'Per testare l'END_OF_DATA usi lo stesso metodo
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 18:27   #68
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Ora faccio una cosa . Siccome ho creato un progetto a parte per il solo invio del file , domani a scuola lo provo . Se funziona e non mi dà alcun problema allora passo alla parte riguardante quelle costanti . Ah ... una cosa .... ma quelle costanti li definisco io o già esistono ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 18:32   #69
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Nono...le definisci te...
E' importante che ognuna rappresenti un bit del byte cmd...
Ah...aspetta...in SendMsg ho messo in cima cmd, mentre quando l'ho usato l'ho messo in fondo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 18:34   #70
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Si me ne sono accorto ma non ti preoccupare
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 18:42   #71
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Insomma, in poche parole ampliando il numero di byte per cmd puoi farci qualsiasi cosa... Come ad esempio controllare un PC in remoto...ricevere la lista delle directory...la lista dei file nelle directory...cambiare directory remota e qualsiasi altra cosa che ti viene in mente
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 18:48   #72
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Quote:
Originally posted by "cionci"

Insomma, in poche parole ampliando il numero di byte per cmd puoi farci qualsiasi cosa... Come ad esempio controllare un PC in remoto...ricevere la lista delle directory...la lista dei file nelle directory...cambiare directory remota e qualsiasi altra cosa che ti viene in mente
veramente ? in che senso scusa ? Mettiamo che voglio conoscere il contenuto dell'hard disk del computer a cui mi connetto . Come faccio ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 19:06   #73
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Andiamo per gradi...
Metti che cmd sia un integer e non un byte...

Puoi definire altre costanti (fino a 16)...

Ad esempio puoi definire altre costanti DIR_LIST_QUERY, DIR_LIST_RESPONSE e un altra che genera una condizione di errore (significa che il ricevente non può eseguire il comando inviato) che chiamo CMD_ERROR...

SendMsg 9, "C:\CICCIO", DIR_LIST_QUERY Or END_OF_DATA

Mettiamo che nel disco C: ci siano 3 directory: PIPPO, PLUTO, TOPOLINO.
Il ricevente con un ciclo risponderà con una serie di messaggi contenti le varie directory:

SendMsg 5, "Pippo", DIR_LIST_RESPONSE
SendMsg 5, "Pluto", DIR_LIST_RESPONSE
SendMsg 8, "Topolino", DIR_LIST_RESPONSE Or END_OF_DATA

Poi se definisci anche FILE_LIST_QUERY e FILE_LIST_RESPONSE:

SendMsg 9, "C:\CICCIO", DIR_LIST_QUERY Or END_OF_DATA

Ed ovviamente il ricevente risponderà con i file contenuti nella directory Ciccio...

Poi chi più ne ha più ne metta... Cancellare i file...copiarli in un'altra posizione...rinominarli (si può usare anche la copia non c'è bisogno di ridefinire altre costanti)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 19:12   #74
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Quote:
Originally posted by "cionci"

Andiamo per gradi...
Metti che cmd sia un integer e non un byte...

Puoi definire altre costanti (fino a 16)...

Ad esempio puoi definire altre costanti DIR_LIST_QUERY, DIR_LIST_RESPONSE e un altra che genera una condizione di errore (significa che il ricevente non può eseguire il comando inviato) che chiamo CMD_ERROR...

SendMsg 9, "C:\CICCIO", DIR_LIST_QUERY Or END_OF_DATA

Mettiamo che nel disco C: ci siano 3 directory: PIPPO, PLUTO, TOPOLINO.
Il ricevente con un ciclo risponderà con una serie di messaggi contenti le varie directory:

SendMsg 5, "Pippo", DIR_LIST_RESPONSE
SendMsg 5, "Pluto", DIR_LIST_RESPONSE
SendMsg 8, "Topolino", DIR_LIST_RESPONSE Or END_OF_DATA
Scusa non ti seguo . Abbiamo detto che cmd è un byte di controllo . Ora fammi capire DIR_LIST_QUERY e le altre sono costanti che devo sempre dichiarare a mio piacere ? Poi un'altra cosa : cosa significa quando alla funzione SendMSg invii come parametro DIR_LIST_RESPONSE Or END_OF_DATA . Cioè voglio capire quell'or che funzione ha ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 19:27   #75
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Cmd lo puoi ampliare a tuo piacere....e a tuo piacere puoi definire anche quelle costanti...

END_OF_DATA abbiamo detto che significa che il messaggio corrente è l'ultimo della serie... Mettere un Or significa che quando fai il test con l'And per verificare se una costante è settata (in qualche messaggio sopra ti avevo detto che per fare i test per vedere se una costante è settata bisogna fare un OR, ma avevo sbagliot a scrivere...ci vuole l'And) ti rende un numero > zero (questo perchè abbiamo detto che ogni costante è un bit distinto di cmd)...
Nota che questo è il metodo che usano praticamente tutte le funzioni delle API di Windows... Ad esempio in CreateFile se volevi che il file aperto potesse essere sia letto che scritto da altri mentre è aperto da te basta mettere FILE_SHARE_WRITE Or FILE_SHARE_READ...
Oppure se vuoi aprire un file sia in lettura che in scrittura basta combinare le due opzioni GENERIC_READ e GENERIC_WRITE con l'Or...

In pratica usando l'Or setti a 1 il bit di cmd corrispondente alla costante usata...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 19:30   #76
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Inizio a non capirci più . Forse perché ho passato tutto il giorno a capire il resto .
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2003, 14:28   #77
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Allora stamattina ho provato ma sfortunatamente ecco presentarsi i problemi . Quando dichiaro la matrice tmp(4) , dopo mi impedisce di fare :
MSCOMM1.output = tmp . Ed anche quando leggo , facendo tmp = MSCOMM1.input mi da problemi . Come si può ovviare ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2003, 18:08   #78
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Come avevo fatto io...devi assegnare tmp ad un variant...e poi il variant alla output...
Stessa cosa per la input...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2003, 18:13   #79
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Quote:
Originally posted by "cionci"

Come avevo fatto io...devi assegnare tmp ad un variant...e poi il variant alla output...
Stessa cosa per la input...
Allora : per quanto riguarda l'output ok lo assgno al variant . Ma quando leggo come faccio ? Leggo in un variant ? e poi ? come faccio ad assegnare a tmp(1) il primo byte a tmp(2) il secondo e così via ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2003, 18:23   #80
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sinceramente non lo so, prova ad assegnare il variant a tmp...
Semplicemente tmp = v...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
LG presenta ThinQ Claw, il chatbot per l...
Anthropic avvisa di furto di sessioni su...
The Elder Scrolls 6: Asha Sharma 'svia' ...
Niente RGB, più attenzione alle l...
LUMI-AI, l'Europa investe 387,8 milioni ...
CXMT pronta a entrare nella storia delle...
Google Maps ha cambiato il nome a uno de...
Bitcoin, la prima transazione resistente...
GTA 6 è in sviluppo dal 2015, ma ...
BYD vola all'estero: l'export a +68%, e ...
Corretta falla grave sulla distribuzione...
Windows 11, l'aggiornamento KB5120998 po...
PC spariti e almeno tre studio derubati ...
SK hynix guarda al Giappone: allo studio...
Lucid e "rischio incendio": il...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v