Şimdi Ara

'COM1' bağlantı noktasına erişim reddedildi.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir (1 Mobil) - 2 Masaüstü1 Mobil
5 sn
2
Cevap
0
Favori
3.924
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba;
    ISS kurup web yayını yaptığım bilgisayarın com portuna erişerek, cihaz kontrolü yapmak istiyorum. fakat aşağıda size gönderdiğim hatayı alıyorum.
    acaba ISS den güvenlik ayarlarımı yapmam gerekiyor.



    '/' Uygulamasında Sunucu Hatası.
    --------------------------------------------------------------------------------

    'COM1' bağlantı noktasına erişim reddedildi.
    Açıklama: Geçerli web isteği yürütülürken işlenmemiş özel durum oluştu. Lütfen hata ve kod içinde kaynaklandığı yer hakkında daha fazla bilgi almak için yığın izlemesini gözden geçirin.

    Özel Durum Ayrıntıları: System.UnauthorizedAccessException: 'COM1' bağlantı noktasına erişim reddedildi.

    ASP.NET, istenen kaynağa erişim yetkisine sahip değil. ASP.NET istek kimliğine kaynağa erişim hakkı vermeyi düşünün. ASP.NET, uygulama kimliğe bürünmüyorsa kullanılan bir temel işlem kimliğine (normal olarak, IIS 5 üzerinde {MAKİNE}\ASPNET veya IIS 6 ve IIS 7 üzerinde Ağ Hizmeti ve IIS 7.5 üzerinde yapılandırılmış uygulama havuzu kimliği) sahip. Uygulama ile kimliğe bürünüyorsa, kimlik anonim kullanıcı (normal olarak IUSR_MACHINENAME) veya kimliği doğrulanmış istek kullanıcısı.

    Dosyaya ASP.NET erişimi vermek için, Dosya Gezgini'nde dosyayı sağ tıklayın, "Özellikler"i ve sonra Güvenlik sekmesini seçin. Uygun kullanıcı veya grubu eklemek için "Ekle"yi tıklayın. ASP.NET hesabını vurgulayın ve istenen erişim için kutuları işaretleyin.

    Kaynak Hatası:

    Geçerli web isteği yürütülürken işlenmeyen bir özel durum üretildi. Özel durumun kaynağı ve konumuna ilişkin bilgiler aşağıdaki özel durum yığını izlemesi kullanılarak belirlenebilir.

    Yığın İzleme:

    [UnauthorizedAccessException: 'COM1' bağlantı noktasına erişim reddedildi.]
    System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str) +2165847
    System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace) +253
    System.IO.Ports.SerialPort.Open() +334
    ROLE.index.Button1_Click(Object sender, EventArgs e) in c:\Users\serdarsahin\Desktop\ROLE\ROLE\index.aspx.cs:39
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +155
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804







  • Selam arkadaşlar. Sorunları tamamen anladım ve çözdüm diyebilirim. Sizlere de faydası olur belki diye yazıyorum. Elinizdeki windows form ile yazılmış programları web tabanlı olarakta yazabilirsiniz.

    Benim yapmaya çalıştığımda bu zaten. Seri port ile iletişim kurabilen ve bu özelliğini kullanmak üzere windows form ile visual basic dilinde yazılmış bir programı web platformuna taşımaya çalışıyorum. Bundaki amaç program uzak erişimli hale geliyor. Yani cihazı evinizden bile ayarlayıp değerlerini takip edebileceksiniz.

    Şimdi konuya gelirsek başlangıçta çaresiz kaldık. Neden derseniz internette bilgi bulamadık bu konuda. yada biz bilemedik neyse.

    yeni boş bir web form yarattık VB dilinde. Seri port tanıttık. bu windows formdakinden farklı. Araç kutusundan direkt formun üzerine bırakmıyorsunuz.

    boş web sayfanızı oluşturduktan sonra çözüm gezgini içinde default.aspx veya webaplication.aspx her ne ise sağ tıklayarak bileşen tasarlayıcısını gör ü seçeceksiniz. daha sonra aktif olan araç kutusundan serialpor1 i ekleyeceksiniz.

    Programa gelince elinizdeki kod varsa birebir aynı öğelere taşıyacaksınız. yani buton1 öğesindeki kodları buton1 oluşturun içine yapıştırın. Eğer sıfırdan yazıyorsanız tabi direk buralara yazacaksınız.

    Yalnız kodlarda da malesef bir kısım değişiklikler gerekti. Aşağıdaki ilk bölümü eklememiz gerekti web form olarak. İkinci bir sorun tekbir buton içinde yazmamız gerekti seri port erişimini. Yani bir butonla portu açayım diğer butonda veri göneririm dediniz mi? 2 ay kadar bir süre 'COM1' bağlantı noktasına erişim reddedildi diye bir hata görüyorsunuz ve kodları hallaç pamuğu gibi atıyorsunuz olmuyor. Seri porta izin arıyorsunuz. İİS de port izni arıyorsunuz. veya oturum izini arıyorsunuz. anonim author vs. ama hiç biri ilgisi yok. Hata sizi yanlış yönlendiriyor.

    aşağıdaki web form için programa bakarsanız port açma veri yollama ve veriyi alma ve portu kapatma tek bir sub içinde. yinede alt program kullanabilirsiniz sub baglan() .............end (sub) gibi buda çaılıyor tabi.

    İkinci kod başarılı bir şekilde çalıştı. Şimdi programın diğer bölümlerini web forma taşıyorum.

    Uğraşan arkadaşlara başarılar. Yani VB programların web forma taşınmasında ki mantık bu şekilde. Çok alakasız bilgiler var arkadaşlar. zor bulunabiliyor bazı bilgiler.

    Herkeze başarılar.

    Bu arada önemli bir konu İİS de (internet information Server) web yayını yapacağınız klasöre yetki vermeyi unutmayın. klasörü sınayın ve kullanıcı adı ve şifresini yazarak yetkilendirin. Ayrıca klasör yetkili kullanıcılarına İİS yide eklemeniz gerekiyor.

    Bendeki kullanıcılar;

    Authenticated User;
    IUSR
    SYSTEM
    NETWORK
    XXXXXXXXXXXXXXX domain kullanıcı olarak kendim
    Administrators (kendim)
    Users (kendim)
    Network Configuation Operators
    IIS_IUSRS
    interactive

    Bu kullanıcılar yayın klasörüne tam erişim yetkisine sahip. Bunların hepsinin eklenmesi gerekmiyor. Sadece ben uğraşmak zorunda kaldığım için böyle fazla oldu. İİS ile ilgili yetkiler yeterlidir. Ayrıca İİS içindede kimlik dogrulama - anonim kimlik doğrulama (etkin) - sağ tıkla düzenle belirli kullanıcı ile giriş yapabilirsiniz. (yani klasöre erişim için yetkili kullanıcı izni verirsiniz. Klasör oluştururken daha doğrusu İİS ye yol gösterirken de aynı girişi yapmanız istenecektir.





    WEB FORM A EKLENEN KODLAR
    --------------------------------------
    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.IO.Ports



    WEB FORM A EKLENEN KODLAR
    --------------------------------------
    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.IO.Ports

    Public Class WebForm1

    Inherits System.Web.UI.Page
    Public SerialPort1 As SerialPort
    Public components As System.ComponentModel.IContainer

    Dim sent1 As String
    Dim veri(99) As Integer

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    InitializeComponent()

    End Sub

    Private Sub InitializeComponent()

    Me.components = New System.ComponentModel.Container()
    Me.SerialPort1 = New System.IO.Ports.SerialPort(Me.components)

    End Sub


    --------------------------------------------------------------------------------------------------------------------------------------------------------------
    VB FORM İLE YAZILI KODLAR

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    SerialPort1.Close() 'portun başlangıçta açık olma ihtimaline karşı kapatalım.

    SerialPort1.BaudRate() = 115200 'port ayarlarını yapalım.
    SerialPort1.Parity = IO.Ports.Parity.None

    SerialPort1.DataBits = 8
    SerialPort1.StopBits = IO.Ports.StopBits.One
    SerialPort1.Handshake = IO.Ports.Handshake.None

    SerialPort1.ReadTimeout = 3000
    SerialPort1.WriteTimeout = 5000

    SerialPort1.Open() 'portu açalım

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    Dim sent1 As String

    Dim veri(99) As Integer


    Try

    sent1 = "Merhaba" 'Bu veri sizin göndereceğiniz özel bilgidir. Protokolünüze göre değişkenlik gösterir.
    SerialPort1.WriteLine(sent1) 'seri porta verimizi gönderelim.

    For i = 1 To 63 'bizim döngümüz 63 sizin farklı olabilir. 1 den 63 e kadar veriyi sırayla alıyoruz

    veri(i) = SerialPort1.ReadByte() 'veri okuyoruz.

    TextBox1.Text = TextBox1.Text & " " & Convert.ToString(veri(i)) 'textBox'a okuduğumuz veriyi gösteriyoruz. okunanveri & sonraki veri ....

    Next


    Catch ex As TimeoutException
    TextBox1.Text = "hata1"

    Catch ex As InvalidOperationException
    TextBox1.Text = "hata2"

    Catch ex As UnauthorizedAccessException
    TextBox1.Text = "hata3"

    End Try

    SerialPort1.Close() 'işimiz bitti portu ayarladık - portu açtık - veri gönderdik - veri okuduk ve gösterdik - portu kapattık.


    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
    End Class
    -----------------------------------------------------------------------------------------------------------------------------------------------------------
    WEB FORM İLE YAZILI KODLAR

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.IO.Ports


    Public Class WebForm1

    Inherits System.Web.UI.Page
    Public SerialPort1 As SerialPort
    Public components As System.ComponentModel.IContainer


    Dim sent1 As String
    Dim veri(99) As Integer


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    InitializeComponent()

    End Sub

    Private Sub InitializeComponent()

    Me.components = New System.ComponentModel.Container()
    Me.SerialPort1 = New System.IO.Ports.SerialPort(Me.components)

    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click



    SerialPort1.BaudRate() = 115200
    SerialPort1.Parity = IO.Ports.Parity.None
    SerialPort1.DataBits = 8
    SerialPort1.StopBits = IO.Ports.StopBits.One
    SerialPort1.Handshake = IO.Ports.Handshake.None
    SerialPort1.ReadTimeout = 3000
    SerialPort1.WriteTimeout = 5000

    SerialPort1.Open()

    Response.Write(" COM1 PORT BAĞLANTISI SAĞLANDI ")
    Response.Write("")
    Response.Write("")


    sent1 = "Merhaba" 'Bu veri sizin göndereceğiniz özel bilgidir. Protokolünüze göre değişkenlik gösterir.

    SerialPort1.WriteLine(sent1)



    For i = 1 To 63
    veri(i) = SerialPort1.ReadByte()
    TextBox1.Text = TextBox1.Text & " " & Convert.ToString(veri(i))
    Next

    SerialPort1.Close()

    If SerialPort1.IsOpen = False Then Label1.Text = "Port Kapatıldı"


    End Sub


    End Class



    < Bu mesaj bu kişi tarafından değiştirildi yasesa -- 26 Aralık 2014; 11:23:24 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.