Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-01-2005, 15:46   #1
TheFuture
Senior Member
 
L'Avatar di TheFuture
 
Iscritto dal: Jun 2004
Città: Conegliano (Treviso)
Messaggi: 1009
[VB 6] Seriale

Ciao a tutti, devo realizzare un'applicazione in VB6 che mi riceva i dati provenienti da un PIC18F452 sulla seriale. Ho trovato qualche esempio, e sostanzialmente ho trovato due metodi:

1°Metodo
Codice:
Public Sub LeggeCOM1()
Dim InString As Variant
Dim dato As String
' Recupera tutti i dati disponibili.
Form1.MSComm1.InputMode = comInputModeBinary
Form1.MSComm1.InputLen = 0
' Controlla la presenza di dati.
If Form1.MSComm1.InBufferCount Then
    ' Legge i dati.
     n = Form1.MSComm1.InBufferCount
     InString = Form1.MSComm1.Input
   For i = 0 To n - 1
        dato = InString(i)
        Form1.List1.AddItem dato
    Next i
End If
End Sub
2°Metodo
Codice:
Dim RxBuffer$
Private Sub MSComm1_OnComm()
    Dim Pos As Integer
    Dim Rx$
    Dim Pacchetto$

    ' Estraggo i dati arrivati
    Rx$ = MSComm1.Input
    If Len(Rx$) = 0 Then Exit Sub

    ' Accodo i dati arrivati al buffer
    RxBuffer$ = RxBuffer$ & Rx$

    ' Mi assicuro di avere il buffer allineato ai pacchetti
    If Left$(RxBuffer$, 1) <> "(" Then
        ' Scarto tutto ciò che sta prima del primo carattere di START
        ' Questo capita quando si ricevono dei caratteri dovuti a disturbi sulla
        ' linea seriale, tutt'altro che rari! es: "ÿs2ÿÿ(12.7"
        ' oppure quando ho aperto la seriale (ed iniziato a bufferizzare i dati)
        ' a metà di un pacchetto dati in ricezione. es: "2.76)(13.16)"
        Pos = InStr(RxBuffer$, "(")
        RxBuffer$ = Mid$(RxBuffer$, Pos)
        If Len(RxBuffer$) = 0 Then
            ' se il buffer è vuoto, tanto vale uscire
            Exit Sub
        End If
    End If

    ' A questo punto controllo se sono arrivati dei pacchetti
    ' completi, li estraggo (tutti) e li elaboro
    Do
        Pos = InStr(RxBuffer$, ")")
        If Pos = 0 Then Exit Do ' nessun'altro pacchetto completo, esco dal loop

        ' Estraggo il pacchetto, togliendo i caratteri di START e di STOP
        Pacchetto$ = Mid$(RxBuffer$, 2, Pos - 2)
        ' Elimino il pacchetto dal buffer
        RxBuffer$ = Mid$(RxBuffer$, Pos + 1)
        ' a questo punto se il buffer conteneva "(12.76)(13.16)", 
        ' Pacchetto$="12.76" e RxBuffer$="(13,16)"

        ' Controllo se ci sono altri caratteri di START nel pacchetto.
        ' Infatti potrebbe capitare che un disturbo simuli un carattere
        ' di START ritrovando nel buffer qualcosa del tipo "(ÿ(12.75)"
        ' oppure un disturbo potrebbe aver eliminato un carattere di STOP,
        ' e quindi ritrovarci quancosa del tipo "(12.75ÿ(13.16) dove la "ÿ"
        ' sarebbe dovuta essere un ")" (in questo caso il primo pacchetto è perso)
        Pos = InStr(Pacchetto$, "(")
        If Pos Then
            ' esempio pacchetto contiene "12.75ÿ(13.16"
            Pacchetto$ = Mid$(Pacchetto$, Pos + 1)
            ' ora Pacchetto$="13.16"
        End If

        ' Il lavoro dello strato ISO/OSI di linea è compiuto,
        ' passo il pacchetto ricevuto al prossimo strato, che si preoccuperà di
        ' interpretare il significato dei dati ricevuti
        Call ElaboraPacchetto(Pacchetto$)
    Loop

End Sub
A questo punto che differenze ci sono nei due metodi di ricezione del pacchetto? Quale mi conviene usare?
__________________
Non ho paura di nulla, non temo nessuno. Avete ragione, certo, non so ancora chi saranno i miei nemici. Ma so molto bene chi sono io!!!
TheFuture è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2005, 06:23   #2
TheFuture
Senior Member
 
L'Avatar di TheFuture
 
Iscritto dal: Jun 2004
Città: Conegliano (Treviso)
Messaggi: 1009
up
__________________
Non ho paura di nulla, non temo nessuno. Avete ragione, certo, non so ancora chi saranno i miei nemici. Ma so molto bene chi sono io!!!
TheFuture è offline   Rispondi citando il messaggio o parte di esso
Old 30-01-2005, 12:09   #3
TheFuture
Senior Member
 
L'Avatar di TheFuture
 
Iscritto dal: Jun 2004
Città: Conegliano (Treviso)
Messaggi: 1009
uppete!
__________________
Non ho paura di nulla, non temo nessuno. Avete ragione, certo, non so ancora chi saranno i miei nemici. Ma so molto bene chi sono io!!!
TheFuture è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
Alcuni Galaxy S26 utilizzeranno il chip ...
Amazon, ecco i super sconti del weekend:...
Scovare un bug di sicurezza sui disposit...
Offerta Amazon su NordVPN: proteggi 10 d...
ECOVACS DEEBOT X8 PRO OMNI in offerta su...
Scope elettriche Tineco in offerta su Am...
Offerta Amazon sui robot EUREKA J15 Ultr...
Chrome disattiverà automaticament...
Tornano tutti e 4 i colori disponibili p...
Super sconto su iPhone 16: Amazon abbass...
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: 05:04.


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