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

    [VB6] gestione dispositivo seriale

    cioa , ho un vecchio dispositivo che ha un interfaccia seriale di circa 10 anni fa, l'ho utilizzato fino a circa 5 anni fa, poi ho cambiato PC e il software di gestione che era a corredo della periferica non funziona più sotto Windows XP, mi chiedevo se fosse possibile gestire tale dispositivo con VB6, ho a disposizione la documentazione che l'ingegnere che progettò il dispositivo mi diede, il dispositivo dovrebbe funzionare in questo modo:

    Invio un comando di 5 byte che può essere uno tra 00 AD FD AD FD 01 , 00 AD FD AD FD 02 ,00 AD FD AD FD 03 , 00 AD FD AD FD 04, 00 AD FD AD FD 05 e il dispositivo mi da in output un buffer 16 kbyte o di 32kbyte a seconda dei byte che ho dato in input, poi leggo anche altre informazioni tipo il "Device Speed: 9600" credo di riferisca alla velocità con cui devo settare la porta seriale.. E' molto complicato da gestire in VB6?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non e' complicato ... devi usare il controllo MSCOMM ...

  3. #3
    grazie oregon, stavo vedendo il controllo MSCOMM dalla guida di VB6, da quello che ho capito devo settare la porta prima di usarla, quindi ho creato un bottone "CONNETTI" con questo codice sull'evento click

    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,n,8,1"
    On Error Resume Next
    MSComm1.PortOpen = True
    If Err Then
    MsgBox "Errore nella apertura della COM" & MSComm1.CommPort
    End If
    On Error GoTo 0


    volevo mettere anche una combo per la selezione della com ma il soft lo devo usare sul mio pc e di porte ne ha solo una quindi l'ho ritenuto inutile.... ora però proprio non mi spiego come fare per dargli in input un buffer di byte, la seriale invia un byte alla volta, come faccio a mandarne 5 ? e stesso discorso per la ricezione... devo usare un timer forse? e come mi accorgo se e quando la periferica mi sta rispondendo?
    grazie 1000

  4. #4
    Ciao,
    se hai VB6 installato prova a lanciare il progetto "VBTERM.VBP" che si trova sotto:
    C:\Programmi\Microsoft Visual Studio\MSDN98\98VSa\1040\Samples\VB98\Mscomm\

    E' un esempio che viene rilasciato insieme all'ambiente VB6 e può esserti molto utile al fine di comprendere le modalità di utilizzo dell'oggetto MsComm.

    Spero di esserti stato utile.

    Ciao.

  5. #5
    codice:
    Dim strPeso As String
    Dim sngMemTime As Single
       
       'Invio quello che c'è tra gli apici "STRINGA" -> inserisci la tua stringa
       frmNomeForm!nomeOggettoMsComm.Output = "STRIGA" & vbCr
    
       'Genero un piccolo ritardo affinchè il device abbia il tempo di rispondere
       sngMemTime = Timer
       While Timer < sngMemTime + 500 '500 sono i millisecondi di attesa (dipende dal device)
          If Timer < sngMemTime Then sngMemTime = Timer
       Wend
    
       'Sulla variabile strPeso trovo la risposta del device...
       strPeso = frmNomeForm!nomeOggettoMsComm.Input


    Ciao.

  6. #6
    ciao TreMendo , grazie per l'interessamento , nel mio caso in realtà quella che do in ingresso alla periferica è un buffer di byte... non una stringa può funzionare ugualmente? la funzione .input se ho capito bene mi restituisce un solo byte alla volta, il device però mi restituisce i serie molti byte, devo ripetere
    strPeso = frmNomeForm!nomeOggettoMsComm.Input

    un numero di volte che mi consenta di prendere tutti i byte?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai provato ad inviare il tuo array di byte?

  8. #8
    si ma non funziona, non da alcun errore ma non invia... ho letto che l'evento OnComm viene generato in automatico, quindi se .input lo metto nell'evento OnComm non dovrei avere bisogno del timer credo.. cmq provo

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... devi usare l'evento OnComm ...

    Quali sono le regole del protocollo del tuo device?

  10. #10
    si infatti scusatemi non ho esposto bene il protocollo....praticamente nella documentazione dice che il programma invia un buffer di 2 byte in esadecimale 22 AA , se il device è pronto allora risponde con 2 byte di ack in esadecimale 22 03, a questo punto il programma può inviare un buffer di 5 byte indicanti la grandezza fisica che desidero misurare, il device riceve questi 5 byte e mi torna in output un buffer che può essere di 16kb o di 32 a seconda del tipo di grandezza che ho deciso di misurare

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.