Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Access to the port 'com1' is denied

    Salve,ho fatto un programma in visual basic 2008 per leggere dati da uno strumento di misura ogni tot minuti, lo strumento è collegato alla porta RS-232.

    Ora il mio problema è che quando vado ad eseguire il programma, mi da questo errore:

    UnauthorizedAccessExceptions was unhandled
    Access to the port 'com1' is denied.
    A first chance exception of type 'System.UnauthorizedAccessException' occurred in System.dll

    potrebbe essere un errore nel codice, o c'è qualcosa che non va nella mia porta?
    Grazie a tutti x l'aiuto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Le cause possono essere ...

    il tuo codice ha già aperto la porta e non l'ha chiusa;

    un altro processo utilizza la porta.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    hai ragione...ho notato solo ora che avevo aperto la porta con un button, e poi all'interno dello stesso button avevo richiamato una funzione (la funzione per leggere i dati dalla porta) nella quale già c'era ancora il comando di aprire la porta...provo a rivedere il codice grazie XD

  4. #4
    niente da fare, provo a postarvi il codice, particamente quello che gli dico di fare è, leggi i dati dalla porta, scrivili in una richtextbox e poi scrivi il richtextbox.text nel file frequency.txt

    Imports System
    Imports System.IO.Ports

    Public Class Form1
    'Inizializzo l'array contenente le porte disponibili
    Dim myPort As Array
    'Inizializzo le variabili che mi serviranno per la creazione e scrittura del file txt
    'sul quale scriverò i dati ricevuti dalla porta
    Dim disco As System.IO.File
    Dim scrivi As System.IO.StreamWriter
    'Inizializzo la stringa restituita dalla funzione ReceiveSerialData()
    Dim returnStr As String = ""

    Public Function ReceiveSerialData() As String
    'Dico quale porta dovrà restituirmi la stringa
    Using com3 As IO.Ports.SerialPort = _
    My.Computer.Ports.OpenSerialPort("com3")
    'Faccio un ciclo Do per dirgli di leggere finchè la porta da stringhe non vuote
    Do
    Dim incoming As String = com3.ReadLine()
    If incoming Is Nothing Then
    Exit Do
    Else
    returnStr &= incoming & vbCrLf
    End If
    Loop
    End Using
    Return returnStr
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'setta SerialPort1 come porta COM selezionata all'avvio
    SerialPort1.PortName = ComboBox1.Text
    'setta il baud rate al valore selezionato nella combobox2
    SerialPort1.BaudRate = ComboBox2.Text
    'Altre proprietà della serial port
    SerialPort1.Parity = IO.Ports.Parity.None
    SerialPort1.StopBits = IO.Ports.StopBits.One
    SerialPort1.DataBits = 8
    SerialPort1.Open()
    'ora che siamo connessi disabilita "Connect" e abilita "Disconnect"
    Button1.Enabled = False
    Button2.Enabled = True
    'Richiamo la funzione per la lettura dei dati da seriale
    Call ReceiveSerialData()
    'Scrivi sulla RichtextBox1 i dati arrivati dalla seriale
    RichTextBox1.Text = returnStr
    'scrivi e salva il contenuto della richtextbox1 su un file txt
    scrivi = disco.AppendText("C:\frequency.txt")
    scrivi.WriteLine(RichTextBox1.Text)
    scrivi.Close()
    End Sub

  5. #5
    risolto, c'erano 2 righe che facevano conflitto:

    1) SerialPort1.Open()
    2) My.Computer.Ports.OpenSerialPort("com3")

    la funziona apriva la porta che pero' era gia aperta dalla riga 1) -.-

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.