Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    87

    [vb.net]controllare una com

    ciao a tutti ho un problema sul controllo di una porta com.
    utilizzo una dll x vb.net che mi permette di inviare e ricevere una un file tramite protocollo zmodem.
    riesco a settare tutto tramite i suoi metodi ma per inviare un file devo collegarmi con il modem e chiamare un altro modem che riceve in zmodem.
    una volta avviata la dll mi blocca la porta com1 e quindi non posso più utilizzarla per fare la chiamata, esiste un modo per chiamare lo stesso senza bloccare il programma o chiamare prima e poi lasciare che la porta sia libera per la dll?
    la dll che utilizzo l'ho scaricata gratuitamente, il programma si chiama portcontroller.net
    potete aiutarmi?

    grazie

  2. #2
    Scusa ma perchè resta bloccata la porta Com? Quando ti colleghi al Modem si blocca?
    Hai provato con

    Application.DoEvents

    oppure

    Una gestione tramite Multi Threading?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    87
    il problema è questo: mi collego tranquillamente se voglio utilizzare solo il modem ma quando lancio il programma che mi setta la com1 a 9600 parity none etc... x la trasmissione zmodem, la porta resta in possesso della dll e non mi fa accedere per fare il numero di telefono per collegarmi.
    ho provato con applicationdoevent ma è la stessa cosa.
    non ho mai provato a gestire i Multi Threading, come posso fare, non so cosa siano, puoi darmi delle indicazioni o indirizzarmi a qualche documentazione? grazie

  4. #4
    Un accenno dalla guida MCAD:

    E' meglio effettuare chiamate Win32 Explicite, quindi, dichiarare la dll necessaria
    Cosi' fai un retreive del LastError della porta.
    codice:
    <DllImport("kernel32.dll")>
    Private Shared Function GetLastError()as Integer
    End Function
    Funzione IsPortAvaible
    ti dice se la porta puoi usarla ...
    codice:
    Try
       m_comport.port = ComPort
       m_comport.Open()
       m_comport.Close()
       Return True
    Catch
       Return False
    End Try
    Is Port a Modem?
    codice:
    m_comport.Port = comPort
    m_comport.Open()
    m_comport.Write(Encoding.Ascii.GetBytes("AT" & Chr(13)))
    System.Threading.Thread.Sleep(200)
    Application.DoEvents()
    Continua ...
    Se ricevi risposta la porta è un modem
    codice:
    Try
       Dim b as Byte
       m_comport.Read(1)
       m_comport.ClearInputBuffer()
       m_comport.CLose()
       Return True
    Catch exc as Exception
       m_comport.CLose
       Return False
    End Try
    I Dati ricevuti

    codice:
    While(m_comport.Read(1) <> -1)
       Debug.WriteLine(m_comport.InputStream(0),False)
    End While
    Segui queste indicazioni, non ti sto a scrivere tutto perchè la mia App è molto tosta ma la logica è questa ...

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.