Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    VB6, PIC e RS232

    Salve a tutti

    Ho realizzato un piccolo circuito con microcontrollore PIC che comunica via RS232 con il pc. Prer comunicare ho scritto un piccolo programma in VB6. Il problema che mi si presenta è questo: se invio dei byte alla scheda, la scheda deve compiere alcune azioni (e questo lo fa). Tra questi comandi ci sono delle interrogazioni a cui il micro deve rispondere con un messaggio. Qui mi si ferma tutto, perché il micro risponde ma il programma non mi mostra nella text box i messaggi. Il fatto è che se chiudo la porta e la riapro, a questo punto tutti i messaggi inviati dal micro mi compaiono nella text box, ma non quelli successivi (in pratica non lavora in tempo reale).
    Il codice in VB6 è quello che oramai si trova ovunque in rete:

    Private Sub Form_Load()
    MSComm1.CommPort = 2
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True
    End Sub

    Private Sub MSComm1_OnComm()
    Dim Rx$
    Rx$ = MSComm1.Input
    If Len(Rx$) Then
    Text2.Text = Text2.Text & Rx$
    End If
    End Sub

    Quello che voglio capire è se manca qualche bit alla comunicazione inviata dal micro o se sbaglio qualche cosa nel programma sul pc o serve qualche ponte sulla seriale
    Una precisazione: sono un elettronico, non un informatico. Mastico discretamente l'assembler ma il VB6 lo sto imparando prevalentemente da queste pagine.
    Grazie a tutti per la disponibilità

  2. #2

    Re: VB6, PIC e RS232

    Il codice in VB6 è quello che oramai si trova ovunque in rete:
    Il codice che hai postato non mi sembra sufficiente per scovare l'inghippo...
    Perchè dici di chiudere e riaprire la seriale?
    Che messaggi invia il micro? Non è che ci sono dei caratteri non visualizzabili?

    (ah, mi sa che hai sbagliato sezione)

  3. #3
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Qui ce un esempio dellevento OnComm e di come gestire gli eventi, credo che tu non lo gestisca bene.
    Per gli Spartani e Sparta usa spartan Il mio github

  4. #4
    Originariamente inviato da linoma
    credo che tu non lo gestisca bene.
    Ah, vero, bisogna discriminare cosa ha "generato" l'evento.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dai un'occhiata al progetto con il PIC16F628 e VB6 di questo

    http://www.visual-basic.it/articoli/agvbhw3.htm

    articolo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Non c'è molto codice da postare, a parte quello del pulsante che chiude e riapre la comunicazione:

    Private Sub Command8_Click()
    MSComm1.PortOpen = False
    MSComm1.PortOpen = True
    End Sub

    Per quello che riguarda la specifica sul tipo di evento.... sono in alto mare

    Ho provato il programma loopback.exe (un piccolo software per testare la porta seriale che invia dei caratteri e mostra cosa riceve). In ricezione, quando il circuito interpretava correttamente il comando, inviava la risposta adatta. I messaggi sono tipo "Reset in corso" oppure "RS232 ready" o cose simili.

    Per quello che riguarda la sezione dove ho postato il quesito, me ne sono accorto che era finito in quella sbagliata, l'ho anche eliminata immediatamente e postata sotto quella del Visual Basic, ma qui c'e rimasta.

  7. #7
    Ma hai dato un'occhiata al link che hanno postato? Ti basta un semplice controllo nell'evento OnComm:

    Select Case MSComm1.CommEvent
    Case comEvReceive
    ...

    Comunque io eviterei di chiudere e riaprire la porta seriale, a che serve?

  8. #8
    Porta pazienza ESSE-EFFE
    Come ho scritto all'inizio, non sono un informatico, quindi ci provo, ci provo e ci provo ancora.
    Per quello che riguarda il tuo link, l'ho guardato. Per quanto mi sia sembrato criptico, ho capito che gestiva i segnali RTS, CTS ecc... tutti segnali che non posso gestire perché ho terminato i piedini sul micro.

    Invece quello che mi suggerisci

    Select Case MSComm1.CommEvent
    Case comEvReceive

    mi sa che devi portare pazienza e spiegarmi cosa serve e come lo devo usare.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Manfre
    Porta pazienza ESSE-EFFE
    Hai dato un'occhiata all'articolo che ti ho proposto ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Ok Oregon, ho terminato di guardare il link che mi hai suggerito
    però non ho ben chiaro l'utilizzo del codice

    If MSC.CommEvent = comEvReceive Then
    RSRBuff = RSRBuff & MSC.Input
    End If

    Credo che sia quello che mi interessa.
    Cosa dovrei farci, inserirlo in un loop di attesa dati? Oppure lo metto sotto la sub "Sub MSComm1_OnComm()"?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.