Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
1001
Tıklama
0
Öne Çıkarma
ASP.NET Programlama ile VB formları yönetme
Y
11 yıl
Yüzbaşı
Konu Sahibi

Arkadaşlar siz ustalara bir sorum olacak; Mümkünse tabii;

Selam; Eğer mümkünse hiç bir yerde bulamadığım bir konuyu sormak istiyorum.

Sorum; visual basic 2010 ile yazılmış formları ve kontrolleri olan bir program var ve PC de çalışıyor. İsteğimiz bu programın kontrollerinin asp.net ile yazılmış web formları tarafından yönetmek. Mesela bir vb programı var. başlat butonu veya butona basınca labele yazı yardıran bir program. basit bir örnek. Şimdi bir web form oluştursak ve burada bir başlat butonu oluştursak ve buna basınca visual basic programdaki başlat butonuna basılsa ve labele yazı yazsa.

Amaç vbasicle yazılmış basit bir formu uzaktan yönetilebilir yapmak. Yani güzel yazılmış bir pc yazılımımız var. Ben buna bir web form ara yüzü yazmak istiyorum. Ağdaki herhangi bir pc den yayındaki bu web forma browser den erişilecek. bu formda kontroller olacak. Bu kontroller yayının yapıldığı pc deki programın kontrollerini çalıştıracak. Daha ilerisinde bu kontroller vasıtası ile gelen veriler web form ile alınarak gösterilecek.

Malesef ASP ile web talepleri karşılayan programlar yazılabiliyor. Komutlarda buna göre ve kısıtlı. Bizdeki program vb form ile oluşturulmuş bir seri port cihazla konuşuyor ve onu yönetiyor. Eğer programı web arayüzü ile yönetebilirsek uzaktan erişilebilir ve yönetilebilir kılacağız. Tabii bilgi edine bilirsek.

Teşekkürler.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



Y
11 yıl
Yüzbaşı
Konu Sahibi

yok mu bi cevap. Nasıl bulacağız bu konuyu ???





< Bu mesaj bu kişi tarafından değiştirildi yasesa -- 12 Kasım 2014; 16:16:47 >

V
11 yıl
Yüzbaşı

Eger bu bahsettigin programin acik kaynak kodlari yoksa isin zor ancak acik kaynak kodlari varsa bu dedigin olabilir. Ancak datalar uzerinde bi kontrol saglayacagim diyorsan eger, ayni veri tabanini kullanmak sarti ile sistem uzerine web form olusturulabilir.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
Y
11 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: veli_0300

Eger bu bahsettigin programin acik kaynak kodlari yoksa isin zor ancak acik kaynak kodlari varsa bu dedigin olabilir. Ancak datalar uzerinde bi kontrol saglayacagim diyorsan eger, ayni veri tabanini kullanmak sarti ile sistem uzerine web form olusturulabilir.

Selam Veli;

Öncelikle cevabın için teşekkür ederim. Programın kaynak kodu var. Tamamı bizim tarafımın dan yazıldı. Aslında program üzerinde fazla bir şey yok. bir adet bağlan butonu, cihazdan kayıt indir (txt), Cihaz saatini ayarla ve seçilen cihaz ayarlarını yükle butonları.

ben şöyle bir kod olursa bu mantığı uygularım diye düşünüyorum. VB form ile bir buton ve basıldığında merhaba yazan bir label etiketi.

Şimdi öyle bir şey yapsak ki bir VB asp.net form sayfası açsak ve buraya bir buton yerleştirsek. şimdi aynı pc üzerinde yayın yapan bir web form var. ve üzerinde de sadece bir buton. Aynı pc de çalışan bir vb basic form ile oluşturulmuş yukarıdaki dediğim labele merhaba yazdıran program.

Nasıl olabilir acaba; VB.net web form ile VB form program arasında bir bağlantı olacak. Öyle bir kod yazılacak veya ilişkilendirilecek ki; web form daki butona tıklayınca vb formdaki buton aktif olup label merhabaya dönecek.

Sadece bunun tek bir mantık örneğini görsem gerisini benzer şekilde yapabilirim diye düşünüyorum.

Yardımınız için şimdiden teşekkürler.



V
11 yıl
Yüzbaşı

Kaynak kodlari varsa olur bu bast bak simdi Bir web projesi olustur ve bu projeler arasinda iletisim kuran bir dll olustur eger wcf kullanmayacaksan ancak fotmlar yuklendigi anda ofline olduklari icin arka tarafta kutuphaneni refreshlryecek bir mekanizma olistur en basitinden timer bu sekilde isini halledersin masaustunden webi kontrol ederken ajax kullanman lazim webdende masaustunu kontrol ederken timer kullan bu sayede degisiklikleri canli tutmus olursun



< Bu ileti mini sürüm kullanılarak atıldı >

V
11 yıl
Yüzbaşı

Ben vb den. Fazla anlamam ama istersen c# ile yapariz bu dedigini



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
A
11 yıl
Yarbay

Veritabanı veyahut xml gibi bir yapı olustur yada web servis yaz masa üstü uygulaması ile sürekli dinle oradan, event tetikle asp.net ile servisi sürekli dinlediğin için gelen dataya göre istediğini yaparsın.


Bu mesaja 1 cevap geldi.
Y
11 yıl
Yüzbaşı
Konu Sahibi

Son durumuda bir söyleyeyim.

programın kaynak kodu var. söylemiştim.


windows formdaki kodları alarak web olarak açılan visual basic fomlara yapıştırdık. mesela oluşturulmuş bir butona yazılmış vb kodları (windows formda) .aspx bir boş web formda buton oluşturarak kodları bu butonun içine yapıştırdık.

öncel olmaz diye düşümüştük. ancak 2 adet buton bir adet label ve seri port iletişimi ekledik. ve vb formdaki kodlar çalıştı. Ancak başka bir sorun çıktı ve aşamıyoruz.

programda bir adet bağlan butonu 1 adet veri gönder butonu var. bir adette label var. label seri porta gönderilen bilgi sonucu dönen bilgiyi gösteriyor. Tabi gerek windows formda ve gerekse web formda seri port komponentini sürükleyip kod sayfasının altında görmelisiniz. afedersiniz web formda başka türlü. çözüm explorerde .aspx sayfanın sağ tık özelliklerinde bileşen ekleme şeklindeydi şanırım.

aslen program çalıştı.

windows formdaki gibi. ancak bilgisayar seri porta erişim izni vermiyor. Daha doğru şekilde çalışan programı İİS ile yürütünce asp.net in seri porta erişim izni vermediğini gördük. Veya asp.net seri port erişim kodlarını yürütünce bir şekilde engelleniyor.

izin konusunu epey irdeledik. otantikauthor identity anonim velhasıl full yerkili kullanıcılar tanımlasakta hala seri port erişimi reddedildi deniyor. çıkamadık işin içinden. program hata vermiyor. cath ile tanımlanan hatayı fırlatıyor ki buda zaten aynı nokta yaNİ seri port erişim hatası.

İSS de bir takım ayarlar gerekiyor veya bilgisayar seri port erişim izinleri gibi bir özellik var seri portta. Aslen web formda böyle bir izin gerekmiyor. erişim direk gerçekleşiyor. Sorun web sayfasındaki programın (aspx) işletilmesi olunca olmuyor. Acaba browser ayarı falan olabilir mi ki?

basit bir ayardır ayardır muhtemelen ama bilmeyince haftalar.


Bu mesaja 1 cevap geldi.
Y
11 yıl
Yüzbaşı
Konu Sahibi

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 port erişimi engellendi 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

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" b]'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; 10:15:30 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.