Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: z - 30 Mayıs 2012, 08:19:05

Başlık: Aceminin C# sorulari
Gönderen: z - 30 Mayıs 2012, 08:19:05
1) Form tipinde program yazarken sprintf tarzi C komutlari kullanabiliyormuyuz? Yoksa bu komutlar sadece konsol uygulamalarinda mi kullanilabiliyor?
Kullanimina ve include edilen dosyalarin tanimlarina ornek verirmisiniz?

2) Text box icine hex sayi girilsin. Bunu int degiskene atayan komut satirini yazarmisiniz?

3) Textbox icindeki verileri char elemanlarindan olusan bir array icine atan kodu yazarmisiniz?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: NecroCapo - 30 Mayıs 2012, 09:50:26
2)  C# 'ı Linux ve diğer platformlarda kullandığım için, Microsoft'un .Net'i üzerinden değil de Mono üzerinden yazıyorum tüm kodlarımı C# ile, bu yüzden arayüz tarafı biraz farklı Microsoft'a göre, textbox'dan nasıl alınacağını ezbere bilmiyorum (büyük ihtimalle Text1.Text gibi birşeydir).  Ondan sonrası kolay. Mesela;

int degisken = System.Convert.ToInt32( "FF", 16);
Başlık: Ynt: Aceminin C# sorulari
Gönderen: NecroCapo - 30 Mayıs 2012, 10:00:27
3) char[] dizi = ("ahmet").ToCharArray();

ya da  char[] dizi = Text1.Text.ToCharArray();

1) sprintf 'e gerek kalmıyor C#'da.

Eğer amaç iki string i birleştirmekse;
        string degisken = "Ahmet";
        Text1.Text = "Merhaba" + degisken;

String ile ilgili bir format işlemi yapılacaksa;
   int sayi1 = 26;
        double sayi2 =  3.14;
        Text1.Text = String.Format( "En sevdiğim sayı {0} ve {1:f} dir.", sayi1, sayi2  );

Formatla ilgili karakterler için : http://www.csharpnedir.com/articles/read/?id=486&title=String.Format%20Fonksiyonu (http://www.csharpnedir.com/articles/read/?id=486&title=String.Format%20Fonksiyonu)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: arslan74 - 30 Mayıs 2012, 10:11:54
Merhaba,

Aradığını sorunları Microsoft tun MSDN sitesinde bulabilirsiniz.

http://msdn.microsoft.com/en-us/library/bb397679 (http://msdn.microsoft.com/en-us/library/bb397679)

Bu site .Net cilerin ana sayfası niteliğinde, takıldıklarında ilk önce bu siteyi ziyaret ederler.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: dhan000 - 30 Mayıs 2012, 11:21:53
@NecroCapo hocam bu mono dediğiniz http://monodevelop.com (http://monodevelop.com) oluyor değilmi... sormak istediğim windowsda  hazırlanan bir projeyi linuxta hiç bir değişiklik yapmadan çalıştırabiliyormuyuz veya tam tersi...
bunu sorma sebebim windowsla mac osx arasında gidip geliyorum herhangi birinde yazacağım kodları sorunsuzca diğerinde çalıştırabilecekmiyim...
selametle.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 30 Mayıs 2012, 12:21:33
Evde yazmaya başladığım kodların bulunduğu klasörü  işyerindeki makinamda desktopa kopyaladım.

Ancak programı derlemeye kalktığımda evdeki makinadaki klasör yolunu aramaya kalkıyor. Bu vaziyette işyerinde programda bazı değişiklikler yaptım. Derlediğimde 19 tane hata veriyor sonra bir anda tüm hatalar yok oluyor ve 0 hataya dönüyor. Bazı satırlara breakpoint koyduğumda programı çalıştırdığımda breakpointler etkisiz hale geliyor.

Bu hatalardan nasıl kurtulabilirim? Evdeki çalışmaları işyerine nasıl sorunsuz taşırım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: esensoy - 30 Mayıs 2012, 12:28:43
ben bu konuda şöyle bir yontem kullanıyorum,
dropbox diye bir program var, web de ücretsiz 2 gb alan veriyor size,
Ben evde ki, işyerimde ki pc lerin hepsine bu programı kurdum,
programın klasörünü de tüm pclerde aynı olacak şekilde (D:\My Dropbox) ayarladım,
Program o klasöre dosya attığınızda anında web de ki alana da kaydediyor,
Sildiğinizde de web de ki alandan siliyor,
Diğer pcler açıldığında program otomatik çalşıyor ve web de ki alanın son güncel halini kendi yerel klasörüyle eşliyor.
Artık usb bellek bile taşıma gereğini yalnızca büyük boyutlu dosyalarda hissediyorum,
Evde akşam derlediğim ya da çalıştığım programı / dosyayı hiç taşımadan ertesi gün işyerimde aynen çalıştırabiliyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 30 Mayıs 2012, 13:01:22
1) String.Format("{0} {1}....", a, b);
include islemi, referans ekleme ile yapiliyor. program derlenirken dahil edilen dll'ler parametre olarak gonderiliyor.
using kismi c++'daki using namespace kismina denk geliyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 31 Mayıs 2012, 13:39:48
64 bytlık bir array tanımladım.

Amacım bu arrayden sıra ile byte değerleri okumak ve textbox da listelemek.

Basit örnek olması açısından arrayda herhangi bir yerdeki değer o yerin index numarası olsun.

Bu durumda text box da görmek istediğim görüntü aşağıdaki gibi olacak.

00: 00 01 02 03 04 05 06 07
08: 08 09 0A 0B 0C 0D 0E 0F
10: 10 11 12 13 14 15 16 17
....
....

şeklinde.

Verilerin hex olarak gösterildiğini ve en solda o satırın adresininde gösterildiğini gözönüne alarak bu kodlamayı yaparsanız benim için çok güzel bir örnek olacak.

Başlık: Ynt: Aceminin C# sorulari
Gönderen: yamak - 31 Mayıs 2012, 14:19:53
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace deneme1_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int[] f = new int[64];

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (int deger in f)
            {
                if (deger % 8 == 0)
                    richTextBox1.Text += "\n" + (deger.ToString("X2"))+":";
                richTextBox1.Text += " " + (deger.ToString("X2"));

            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 64; i++)
            {
                f[i] = i;
            }
        }
    }
}

Hocam aradığınız şey bu şekilde bir şey heralde. Ekran çıktısı şu:
Alıntı Yap00: 00 01 02 03 04 05 06 07
08: 08 09 0A 0B 0C 0D 0E 0F
10: 10 11 12 13 14 15 16 17
18: 18 19 1A 1B 1C 1D 1E 1F
20: 20 21 22 23 24 25 26 27
28: 28 29 2A 2B 2C 2D 2E 2F
30: 30 31 32 33 34 35 36 37
38: 38 39 3A 3B 3C 3D 3E 3F
butona basıldığında ekrana sayıları yazıyo.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 31 Mayıs 2012, 14:21:07
Soruyu soralı kaç dakika oldu tık yok kimsede? Delphide isteseydiniz hemen yazar yollardım size.


Edit: teşekkürler.

TextBox ı çok satırlı hale getirdim. Mesela 4.satıra bir text yerleştirmek istesem bunu nasıl yaparım?

TextBox1.Lines[4]=S gibi bir şeyler yapmak istedim ama yemedi.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: yamak - 31 Mayıs 2012, 14:22:37
Hocam cevap verdim ya.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 31 Mayıs 2012, 14:53:54
Yok mesajlar çakıştı.  Cevap için sağolasın. Richtext yerine textbox da bu iş nasıl yapılır. Daha doğrusu textboxda herhangi bir satıra string yazma işini merak ettim.

Başlık: Ynt: Aceminin C# sorulari
Gönderen: yamak - 31 Mayıs 2012, 15:06:34
Hocam forma bi textbox koyduğumuzda üstünde bi tane ok işareti var o işarete tıklayıp ordan multiline ı seçiyoruz sonra bir alt satıra geçmek için "\r\n" gönderiyoruz. Yani kodun yeni hali:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace deneme1_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int[] f = new int[64];
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (int deger in f)
            {
                if (deger % 8 == 0)
                    textBox1.Text += "\r\n" + (deger.ToString("X2"))+":";
                textBox1.Text += " " + (deger.ToString("X2"));

            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 64; i++)
            {
                f[i] = i;
            }
        }
    }
}
Başlık: Ynt: Aceminin C# sorulari
Gönderen: musty007 - 31 Mayıs 2012, 15:09:20
merhaba hocam basic ve pascal ve dbase programları biliyorum ama epeydir bişey yazmıyorum lakin geçenlerde bit pazarını gezerken 5 cd li BORLAND C++ BUİLDER 6 kodlu programı buldum winxp prf ve office 2003 kullanıyorum bu programı kursam zararı olurmu ve neler yapabilirim bu programla...öğrenmek istiyorum tabii sizin sitenizin sayesinde..çünkü borland programlarını seviyorum ve program yazmak istiyorum...ayrıca nesneye dayalı oyun programları yazmam yada üzerinde değişiklikler yapmak istiyorum...bu oyunların editörleri ile çok güzel haritalar hazırlayabiliyorum..ilginize şimdiden teşekkürler çpk iyi desen ve resimde yapıyorum..emekliyim...saygılar...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 31 Mayıs 2012, 15:31:43
Daha önce görsel dillerden birisi ile çalışdıysanız işiniz çok zor değil. Fakat ilk kez görsel bir dil öğrenecekseniz hatta daha önce herhangi bir dilde program yazmadıysanız bizzat bir kursa gitmeniz öğrenme sürecini hızlandırır.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 31 Mayıs 2012, 17:07:33
@Yamak

Bir sorum daha olacak. Textbox da aşağıdaki gibi hex veriler dizili olsun.
Mouse ile bunlardan istediğimin üstüne gelip değiştirebilirim. Ancak eğer tıkladığım yer rakamlar arasındaki boşluk ise değişime izin vermesin isterim.

Örneğin 13 de 1 üzerine gelip 245 yazdığımda 13 verisi 24'e değişsin yada 45'e fakat boşluğa veri girmesin.
Keza aynı şekilde en solda adres gösteren 08: gibi veriler de editlenemesin.

Amacım kullanıcının hex verileri girmesi için bir yapı oluşturmak. Fakat yöntemin bu şekilde olmasını istiyorum. Bu örneği hem kullanacağım hem de C# çalışmalarımda çok öğretici ip uçları içeriyor. İlgilenirsen sevinirim.

00: 00 01 02 03 04 05 06 07
08: 08 09 0A 0B 0C 0D 0E 0F
10: 10 11 12 13 14 15 16 17
18: 18 19 1A 1B 1C 1D 1E 1F
20: 20 21 22 23 24 25 26 27
28: 28 29 2A 2B 2C 2D 2E 2F
30: 30 31 32 33 34 35 36 37
38: 38 39 3A 3B 3C 3D 3E 3F

Aslında yöntemi biliyorum fakat C# kodlaması için biraz daha pratik yapmam lazım. Yöntem textboxın keypress tarzındaki eventlerini yakalayan fonksiyonda basılan tuşun hex veri yazmaya elverişli tuş olup olmadığın sınamak ve daha önemlisi tıklanan noktanın altındaki karakterin ne olduğuna bakmak.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 31 Mayıs 2012, 19:46:56
Birisi cevap yazsa da okusam diye sürekli kontrol ediyorum ama cevap yok.

Sorum: Textbox içinde bir string olsun. Mouse ile textbox içindeki stringin herhangi bir karakterini tıklamış olayım.
Tıkladığım karakter en soldan itibaren kaçıncı karakterdir?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: yamak - 31 Mayıs 2012, 20:27:25
Hocam kusura bakmayın her zaman online olamıyorum bu aralar finallerim var da
hocam textbox ın selectionstart diye bi özelliği var belki o işinize yarayabilir.
mesela  textBox1 ve texBox2 diye 2 tane text box olsun.
textBox1'DE herhangi br yere tıklayıp onun soldan kaçıncı karakter olduğunu textBox2 ye yazdırmak istersek.
textBox2.text=textBox1.SelectionStart.ToString();
komutunu kullanabiliriz
Tabi bunları textBox1 in click eventi içinde yapmamız gerekiyo.

private void textBox1_Click(object sender, EventArgs e)
{
    textBox2.Text = textBox1.SelectionStart.ToString();
}
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 31 Mayıs 2012, 22:47:35
Alıntı yapılan: z - 31 Mayıs 2012, 17:07:33
@Yamak

Bir sorum daha olacak. Textbox da aşağıdaki gibi hex veriler dizili olsun.
Mouse ile bunlardan istediğimin üstüne gelip değiştirebilirim. Ancak eğer tıkladığım yer rakamlar arasındaki boşluk ise değişime izin vermesin isterim.

Örneğin 13 de 1 üzerine gelip 245 yazdığımda 13 verisi 24'e değişsin yada 45'e fakat boşluğa veri girmesin.
Keza aynı şekilde en solda adres gösteren 08: gibi veriler de editlenemesin.

Amacım kullanıcının hex verileri girmesi için bir yapı oluşturmak. Fakat yöntemin bu şekilde olmasını istiyorum. Bu örneği hem kullanacağım hem de C# çalışmalarımda çok öğretici ip uçları içeriyor. İlgilenirsen sevinirim.

00: 00 01 02 03 04 05 06 07
08: 08 09 0A 0B 0C 0D 0E 0F
10: 10 11 12 13 14 15 16 17
18: 18 19 1A 1B 1C 1D 1E 1F
20: 20 21 22 23 24 25 26 27
28: 28 29 2A 2B 2C 2D 2E 2F
30: 30 31 32 33 34 35 36 37
38: 38 39 3A 3B 3C 3D 3E 3F

Aslında yöntemi biliyorum fakat C# kodlaması için biraz daha pratik yapmam lazım. Yöntem textboxın keypress tarzındaki eventlerini yakalayan fonksiyonda basılan tuşun hex veri yazmaya elverişli tuş olup olmadığın sınamak ve daha önemlisi tıklanan noktanın altındaki karakterin ne olduğuna bakmak.

Bu gibi editor tarzı işlemlerde DataGridView kullanmak en mantıklısı.
GridView üzerinde daha önce hiç çalışmışlığın oldu mu?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 31 Mayıs 2012, 22:49:44
grid bu iş için pek uygun değildir. (string manipulasyon yapılmak isteniyor diye düşünüyorum)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 31 Mayıs 2012, 22:56:28
Alıntı yapılan: muhittin_kaplan - 31 Mayıs 2012, 22:49:44
grid bu iş için pek uygun değildir. (string manipulasyon yapılmak isteniyor diye düşünüyorum)

HEX Editor yazılımları genellikle GridView kullanır, o yüzden söyledim.
Ancak illa da TextBox ile yapılmasını istiyorum diyorsa, bilemiyeceğim.
Onun için de çözüm yollarını bulmaya çalışırız.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 01 Haziran 2012, 00:19:21
Istedigim kodlari yazdim ama hic yakisikli olmadi. Eminim yapmak istedigim ara isler icin hazir fonskiyonlar vardir.

Adi Display2 olan ve readonly olarak ayarlanan Textbox icine daha once verdigim sablon veriler istedigim gibi editlenebiliyor

s == "\r"  r den once slash  var.

       private void Display2_KeyPress(object sender, KeyPressEventArgs e)
        {
            byte d;
            string s;

            d=(byte)e.KeyChar;
            if (((d < '0') || (d > '9')) && ((d < 'A') || (d > 'F')) && ((d < 'a') || (d > 'f')))
            {
                e.KeyChar = (char)0;
                YazmaIzni = false;
            }
            if (YazmaIzni == false) e.KeyChar = (char)0;
            else
            {
                if ((d >= 'a') && (d <= 'f')) e.KeyChar = (char)((byte)e.KeyChar & 0x4F);
                s = ""; s += e.KeyChar;
                Display2.SelectedText = s;
                Display2.Select(Display2.SelectionStart, 1);
                s = Display2.SelectedText;
                if (s == " ")
                {
                    Display2.SelectionStart++;
                    Display2.Select(Display2.SelectionStart, 1);
                    s = Display2.SelectedText;
                }


                if ((s == " ") || (s == "") || (s == "\r")) YazmaIzni = false;
                else YazmaIzni = true;
            }
        }

       
        private void Display2_MouseUp(object sender, MouseEventArgs e)
        {
            string s;
            Display2.Select(Display2.SelectionStart, 1);
            s = Display2.SelectedText;
            if (s == " ")
            {
                Display2.SelectionStart++;
                Display2.Select(Display2.SelectionStart, 1);
                s = Display2.SelectedText;
            }

            if ((s == "") || (s == "\r")) YazmaIzni = false;
            else
            {
                Display2.Select(Display2.SelectionStart, 3);
                s = Display2.SelectedText;
                if ((s[0] == ':') || (s[1] == ':') || (s[2] == ':'))
                {
                    if (s[0] == ':') Display2.SelectionStart = Display2.SelectionStart + 2;
                    if (s[1] == ':') Display2.SelectionStart = Display2.SelectionStart + 3;
                    if (s[2] == ':') Display2.SelectionStart = Display2.SelectionStart + 4;
                }
                Display2.Select(Display2.SelectionStart, 1);
                YazmaIzni = true;
            }
        }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 01 Haziran 2012, 01:03:52
Kodları az önce denedim ve çok kararsız çalışıyor.
Bunun çaresine bakmak lazım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 01 Haziran 2012, 01:14:55
Programi tekrar islettim, eger 0..9 A..F haricinde bir tusa basarsaniz program istendigi gibi bunlari kullanmadan cope atiyor. Fakat ardindan 0..9 A..F tuslarina bassaniz bile bunlar da cope gidiyor. Taaa ki tuslarin isleme alinmasi icin mouse ile yeni bastan yer secimi yapana dek. Bu sorunu  hallederim halletmesine de  sizlerden C# cilara yakisir bir kod bekliyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 01 Haziran 2012, 01:32:55
hocam, maskedtextbox kullansaniz olur sanki burda. girilecek deger icin bir maske belirliyosunuz, ornegin tel no, email en cok karsilastiklarimiz. sizin durumunuzda 0-9 A-F araligi maske belirleyebilirsiniz. araya bosluklari koyarsiniz. gerisini o halleder diye dusunuyorum.

Edit: maske belirleme olayi baya ilkelmis. ben RegEx benzeri maske belirleyebiliyoruz diye hatirliyodum. yanilmisim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 01 Haziran 2012, 01:41:31
Hemen dediginizi deneyecegim. Fakat bu soruyu sormamdaki amac, hem isim gorulsun hem de C# da istedigim kod istedigim sartlarda nasil yaziliri gormek.

Yeni baslayan birisi icin yazacaginiz kod ornekleri inanilmaz ipuclari veriyor. Su anda sistematik ogrenme yoluna gitmedigim icin vereceginiz kod ornekleri ilerlemem acisindan son derece faydali.

Mesela 0..9  A..F secimini uzun uzun kod yazarak yaptim muhakkak bu isi yapan bir fonksiyon vardir. Keza uppercase donusumu de uzun uzun kodladim. Bunun da hazir fonksiyonu vardir. Bu fonksiyonlar nedir nerede bulunur adi nedir bilmiyorum.

EDIT:

Display2 adli textbox readonly=true olmak kaydiyla asagidaki kodlar sorunsuz hale geldi.
cicjoe nin kodlarindaki ipuclari sayesinde kodlar da kisaldi.

        private void Display2_KeyPress(object sender, KeyPressEventArgs e)
        {
            byte d;
            string s;

            e.KeyChar = char.ToUpper(e.KeyChar);
            d = (byte)e.KeyChar;

            if (((char.IsDigit(e.KeyChar)) || ((d >= 'A') && (d <= 'F'))) && YazmaIzni)
            {
               Display2.SelectedText = char.ToString(e.KeyChar);
               Display2.Select(Display2.SelectionStart, 1);
               s = Display2.SelectedText;
               if (s == " ") Display2.SelectionStart++;
               if (s == "r") YazmaIzni = false; else YazmaIzni = true;
            }
        }

       
        private void Display2_MouseUp(object sender, MouseEventArgs e)
        {
            string s;
            Display2.Select(Display2.SelectionStart, 1);
            s = Display2.SelectedText;
            if ((s != "r")&&(s != ""))
            {
                YazmaIzni = true;
                if (s == " ") Display2.SelectionStart++;
                else
                {
                    Display2.Select(Display2.SelectionStart, 3);
                    s = Display2.SelectedText;
                    if      (s[0] == ':') Display2.SelectionStart += 2;
                    else if (s[1] == ':') Display2.SelectionStart += 3;
                    else if (s[2] == ':') Display2.SelectionStart += 4;
                    Display2.Select(Display2.SelectionStart, 1);
                }
            }
            else YazmaIzni = false;
        }

Kodlar istedigimi tam olarak yapiyor ancak hosuma gitmeyen tek durum verilerin A...F karakterler icermesi durumunda Hex Editor ekranindaki  rakamlar ordusunun asker gibi durmamasi. 0..9 verilerinde rakamlar hizada ancak A..F isi bozuyor. Terminal karakterlerini kullansam sorun cozulecek fakat yok. Asker gibi hizali duran yapi icin oneriniz varmi?

Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 01 Haziran 2012, 02:16:53
Hocam textbox'tan kalitim alarak bir sinif yazdim. sanirim is gorur gibi. bir inceleyin olmadi.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
class HexBox : TextBox
{
public HexBox()
{
string line = String.Empty;
for (int i = 0; i < 8; i++)
line += " 00";
for (int i = 0; i < 8; i++)
this.Text += i.ToString("00") + ":" + line + " " + Environment.NewLine;
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
char c = Char.ToUpper(e.KeyChar);

if (((this.SelectionStart - 3) % 3 == 0 && e.KeyChar == ' ') ||
((this.SelectionStart - 3) % 3 != 0) &&
((c >= 'A' && c <= 'F') || (c >= '0' && c <= '9')))
{
e.KeyChar = Char.ToUpper(e.KeyChar);
int current = this.SelectionStart;
this.Text = this.Text.Remove(current, 1);
this.SelectionStart = current;
base.OnKeyPress(e);
}
else
{
e.Handled = true;
}
}
}
}

Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 01 Haziran 2012, 02:37:19
Hocam  birseylerden yeni birsey uretmek nasil oluyor diye merak eder dururdum. Bu ornek bu bakimdan da cok guzel oldu.

Yalniz bunu kullanmam bu asamada  imkansiz cunku cok acemiyim IDE yi bile daha tam kesfedemedim. Yarin verdiginiz bu ornegi nasil kullanacagimizi da aciklarsaniz minnettar kalirim. Yada programin kodlarini ziplayip yukleyebilirseniz daha da iyi olur.



Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 01 Haziran 2012, 02:45:40
Edit: https://rapidshare.com/files/1850601825/WindowsFormsApplication1.rar

Hocam, 1 tane .cs uzantili dosya ekleyip projeye kodlari yapistirdiktan sonra 1 kez derleyin. Daha sonra form tasarim ekraninda toolbox'ta HexBox belirecektir. Istediginiz kadar surukleyip birakarak kullanabilirsiniz. Tabiki biraz modifiye ettikten sonra =) gozume carpan, mod 3 almadan once 3 cikarmisim, sanki etkisi olcakmis gibi =) ve her satirin ilk 3 karakteri degistirilemez, onu da kontrol etmemisim misal. Ama her satirdaki karakter sayisi belli oldugu icin kolay hesaplanir zaten o.

Iyi calismalar.

Edit: kodlari guncelledim. satir basi ve satir sonu kontrollerini ekledim.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsFormsApplication1
{
class HexBox : TextBox
{
public HexBox()
{
//olusturulurken icinin doldurulmasi
string line = String.Empty;
for (int i = 0; i < 8; i++) //her satir 8 byte
line += " 00";
for (int i = 0; i < 8; i++) //8 satir
this.Text += Convert.ToString((byte)(i*8), 16).ComplateDigit(2) + ":" + line + " " + Environment.NewLine;

//coklu satir
this.Multiline = true;
//ilk boyut
this.Size = new Size(100,60);
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
e.KeyChar = Char.ToUpper(e.KeyChar); //basilan tusu buyuk harf yap

if ((this.SelectionStart % 3 == 0 && e.KeyChar == ' ') || //eger araya denk gelirse bosluk tusu kabul
(this.SelectionStart % 3 != 0) && //eger bosluga denk gelmezse, basilan tus uygun mu diye bakmaliyiz
(e.KeyChar.IsHex()) && //0-9 A-F arasi
(this.SelectionStart % (this.Lines[0].Length+2) > 3) && //her satirin ilk 3 karakteri olmamali
(this.SelectionStart % (this.Lines[0].Length+2) < this.Lines[0].Length)) //satir sonundaki bos yer olmamali
{
int current = this.SelectionStart; //tusun basildigi yeri al
this.Text = this.Text.Remove(current, 1); //ordaki karakteri sil
this.SelectionStart = current; //pozisyonu tekrar oraya gotur
base.OnKeyPress(e); //oraya tus basilmasina izin ver
}
else
{
e.Handled = true;
}
}
}

static class Ext
{
//char nesnesine metod ekle
public static bool IsHex(this char c)
{
c = Char.ToUpper(c);
return (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9');
}

//string nesnesine metod ekle
public static string ComplateDigit(this string s, int digitCount)
{
return new String('0', digitCount-s.Length) + s;
}
}
}

Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 01 Haziran 2012, 20:36:45
Alıntı YapHocam, 1 tane .cs uzantili dosya ekleyip projeye kodlari yapistirdiktan sonra 1 kez derleyin. Daha sonra form tasarim ekraninda toolbox'ta HexBox belirecektir. Istediginiz kadar surukleyip birakarak kullanabilirsiniz
Bu olayı C deki kütüphanelere benzetebilirsiniz hocam.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 01 Haziran 2012, 23:11:09
@cicjoe

Hocam eline saglik. 0..9 rakamlar ayni genislikte fakat A..F farkli genislikte. Bu durumda 0..9 A..F lerden olusan hex veriler duzgun gorunmuyor hizalamalar kayiyor. Buna bir cozum uretebilirmiyiz?

Edit:Courier New fontu ile sorun cozuldu.

Hocam astronot gibi adammissin. C# ile bu seviyede kod yazacak hale ne kadar zamanda geldin? Asil mesleginiz yazilimmi?

HexBox'in davranisinda bir durumdan rahatsizim ve kodlarinizi oynayarak bunu duzeltmem zor gibi.

Sorun;

Diyelimki 00 verisinde ilk 0'i sectim ve klavyeden 12 yazdim. Kursor boslukta duruyor. Bu esnada 34 yazmak istesem bosluga denk gelindigi icin basilan tuslar cope gidiyor.
Halbuki 12 yazdiktan sonra kursor bir sagdaki hex sayinin ilk karakterine tasinsa surekli olarak space yada sag ok tusuna basmak gerekmez. Bu da veri girisini cok kolaylastirir.

Hatta satir sonuna gelindiginde otomatik olarak bir alt satirin en sol alanina ziplatabilirmisin?


Hexbox'i toolboxa kalici bir eleman olarak gommek mumkun degilmi? Yeni bir proje acip toolboxdan secip kullanamazmiyim?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 01 Haziran 2012, 23:33:07
Hocam aceminin c# soruları deyince bende daha 3 günlük bir c# öğrencisi olarak şunu sormak istiyorum seriport uygulaması lazımdı uğraştım biraz yazdım sonunda fakat alma işlemini tam olarak beceremedim bana alma rutinini yazabilirmisiniz acaba bir mesaj kutusunda bunu görüntülebilmem için yada hernerde olursa :) illa koda gerek yok gele veriyi görüntüleyeyim ve bu işlem için butona basmak zorunda kalmayayım. Nasıl bir yol izlemem lazım. Şimdiden teşekkürler yarın programı koyacam şimdi telden girdim foruma herkese kolay gelsin :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 01 Haziran 2012, 23:59:21
Evet hocam yazilim. Elektorik ogrenmeye calisiyorum.
HexBox'a su metod'u eklerseniz sanirim istedigin davranisi elde edersiniz.

Edit: Tabi o zaman KeyPress'teki bosluk tusunun kontrolu de anlamsiz kaliyor, silinebilir. Ben araya geldigi zaman bosluk tusu basilirsa sonraki cifte gecsin diye yazmistim.

protected override void OnTextChanged(EventArgs e)
{
if (this.SelectionStart % 3 == 0)
this.SelectionStart++;
if (this.Lines.Length != 0 &&
(this.SelectionStart % (this.Lines[0].Length+2) == (this.Lines[0].Length)) &&
(this.SelectionStart < (this.Text.Length - 7)))
this.SelectionStart += 6;

base.OnTextChanged(e);
}


Ayrica constructer'da sabit olarak 8 satir 8 byte yazdim ama, oranin da daha dinamik hale getirilmesi uygun olabilir. Property tanimlayarak set oldugunda degisecek sekilde.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 00:15:05
Alıntı yapılan: serhat1990 - 01 Haziran 2012, 23:33:07
Hocam aceminin c# soruları deyince bende daha 3 günlük bir c# öğrencisi olarak şunu sormak istiyorum seriport uygulaması lazımdı uğraştım biraz yazdım sonunda fakat alma işlemini tam olarak beceremedim bana alma rutinini yazabilirmisiniz acaba bir mesaj kutusunda bunu görüntülebilmem için yada hernerde olursa :) illa koda gerek yok gele veriyi görüntüleyeyim ve bu işlem için butona basmak zorunda kalmayayım. Nasıl bir yol izlemem lazım. Şimdiden teşekkürler yarın programı koyacam şimdi telden girdim foruma herkese kolay gelsin :)

Küçük bir yazılım hazırladım, onu inceleyebilirsin...

https://rapidshare.com/files/3125668450/SerialPortApp.zip (https://rapidshare.com/files/3125668450/SerialPortApp.zip)


Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 00:38:37
Alıntı yapılan: serhat1990 - 01 Haziran 2012, 23:33:07
Hocam aceminin c# soruları deyince bende daha 3 günlük bir c# öğrencisi olarak şunu sormak istiyorum seriport uygulaması lazımdı uğraştım biraz yazdım sonunda fakat alma işlemini tam olarak beceremedim bana alma rutinini yazabilirmisiniz acaba bir mesaj kutusunda bunu görüntülebilmem için yada hernerde olursa :) illa koda gerek yok gele veriyi görüntüleyeyim ve bu işlem için butona basmak zorunda kalmayayım. Nasıl bir yol izlemem lazım. Şimdiden teşekkürler yarın programı koyacam şimdi telden girdim foruma herkese kolay gelsin :)

Hocam, forumda c# ve seri port ile ilgili cok tartisma ve paylasim olmustu. Sanirim isinize yarar. Arama yaparsaniz cikacaktir.
Iyi calismalar. =)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 00:48:28
Buldugum bir programi degistirerek istedigim sekle sokmus,bu programda kullandigim  HexBox icin de kendi yazdigim kodlari kullaniyordum. Simdi Cicjoe nin HexBox kodlarini kullanarak devam etmek istiyorum.

Ancak neyi nereye yapistiracagimi kestiremedim. Cicjoenin kodlarini kendi programima tasimak bana daha az problemli olacak gorunuyor. Bu isi nasil yapacagim?

Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 00:49:44
Alıntı yapılan: z - 01 Haziran 2012, 23:11:09
Hexbox'i toolboxa kalici bir eleman olarak gommek mumkun değilmi? Yeni bir proje acip toolboxdan secip kullanamazmiyim?

Hocam, HexBox.cs dosyasini yeni bir Class Library projesi acarak derleyin, size 1 .dll dosyasi verecektir. Diger projelerinizde o dll'i ekleyip kullanabilirisiniz. HexBox'in kendine has ayarlarinin da Property Window'da cikmasi icin tanimlarsaniz, bir daha koda girmeden davranislarini degistirebilirsiniz. Ornegin public int Byte { get; set; }, public int Row { get; set; } gibi Property'ler tanimlarsaniz, tasarim ekranindan ayarlayabilirsiniz. Actiginiz her yeni projede HexBox'i iceren dll'in ekli gelmesini istiyorsaniz, 1 tane Windows Form uygulamasi actiktan sonra dll'i ekleyin, sonra File->Export Template->Project Template seclinde devam edin. Ilerde proje acarken Windows Form Application yerine sablonunuza verdiginiz isimi secerek acabilir, boylece hazir ayarlarda bir proje baslatabilirsiniz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 00:57:09
Alıntı yapılan: z - 02 Haziran 2012, 00:48:28
Buldugum bir programi degistirerek istedigim sekle sokmus,  HexBox icin de kendi yazdigim kodlari kullaniyordum. Simdi Cicjoe nin HexBox kodlarini kullanarak devam etmek istiyorum.

Ancak neyi nereye yapistiracagimi kestiremedim. Cicjoenin kodlarini kendi programima tasimak bana daha az problemli olacak gorunuyor. Bu isi nasil yapacagim?

Tam olarak sorunu anlayamadım.
Arkadaşın özel denetimini, Toolbox'a mı taşıyıp denetim olarak kullanmak mı istiyorsun yoksa kendi kodunun içine direk mi atmak istiyorsun?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 01:04:03
Internetten USB ile ilgili bir program buldum. Buna pek cok eklenti yapip belli bir kivama getirdim. Icinde Hexbox lar da var ve bunlari kendim yazmistim. Acemi oldugumu dusunursek program benim icin bir hayli karmasik yapida. (DLL vs de kullaniyor)

Ote yandan Cicjoe hosuma giden bir HexBox gelistirdi, Simdi kendi yazdigim HexBoxlari kaldirip atacak ve yerine cicjoenin gelistirdigi HexBox kodlarini kullanacagim.

Gene acemi oldugumu dusunursek hem usb tarafidaki kodlar hemde cicjoe nin yazdigi kodlar gozumde corba gibi gorunuyor. Birini birine tasimaliyimki kodlamaya devam edebileyim.

Niyetim cicjoenin kodlarini usb programinin icine tasimak.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 01:11:10
İsterse yüzbinlerce işlem olsun.
Eğer işlemlerini güzelce sınıflar haline getirirsen, inanılmaz kolaylık sağlarsın.
Çok daha hızlı bir şekilde yazılım geliştirirsin.
Keza factoring yapacağın zaman da işin çok kolaylaşır.

Eğer bahsettiğin yazılımda bu hex editor işlemini gerçekleştirecek 5-10 tane textbox var ise;
cicjoe'nun kodlarını, her bir textboxa uyarlamak zorunda kalırsın ki hiç güzel bir yöntem değil bence.
Bahsettiğin yazılımda bir tane class (cs) dosyası aç.
İçine cicjoe'nun kodlarını yapıştır, eklemek istediğin yerlere kendi kodunu da ekle sonra derle.
Oluşan yeni özel HexBox textboxını, yazılımında kullanmak istediğin yerlerde kullan.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 01:15:29
Hocam, usb programina hexbox'i yerlestirmek daha kolay gibi gorunuyor. Solution Explorer'dan projeye sag tiklayarak Add->New Class diyin. Dosya ismine HexBox.cs ismini verin ve acilan dosyanin icine HexBox kodlarini yapistirin. Daha sonra toolbox'tan surukleyerek formunuza ekleyin hexbox'lari. Daha onceden yazmis oldugunuz kodlardan aktarmak istediklerinizi, HexBox dosyasi icine degil de, gene daha once textbox'lara nasil eklediyseniz oyle ekleyin. Ornegin 1 hexbox'in icerigi degistiginde kod calistiriyorsaniz, onu hexbox dosyasinin icine yazmayin. Programa eklenmis hexbox'in textchanged event'ine giderek yazin. Cunku eger hexbox'a yazarsaniz, eklediginiz butun hexbox'larda ayni kod calisir. Ancak eklediklerinizde yazarsaniz, her biri icin ayri yazabilme sansiniz var.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 01:17:56
Elbette, tekrarlanan ortak işlemleri HexBox içerisine eklesin.
Opsiyonel işlemleri ise senin dediğin gibi form içine eklesin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 01:26:48
Bu arada kodu birkac kez edit'lemistim, umarim en guncel versiyonu koplayalamissinizdir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 01:28:15
Sorun değil, tekrar kodlarinizi indiririm. Simdilik en son istedigim otomatik space gecis ve satir sonunda otomatik alta gecis var ve memnunum.

Ekranimda form1.cs* varken

Solution Explorer'dan projeye sag tiklayip add sectigimde bana New project ve Existing project olmak uzere 2 seceneki sunuyor,

Add->New Class gelmedi.

Anlasilmaz bir durumdaysam ekran goruntulerimi vereyim.

Edit:


Pardon bir alt satirdaki iconun ustunde sag click yapinca add class gordum sanirim devam edebilirim,
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 01:31:00
Alıntı yapılan: z - 02 Haziran 2012, 01:28:15
Sorun değil, tekrar kodlarinizi indiririm. Simdilik en son istedigim otomatik space gecis ve satir sonunda otomatik alta gecis var ve memnunum.

Ekranimda form1.cs* varken

Solution Explorer'dan projeye sag tiklayip add sectigimde bana New project ve Existing project olmak uzere 2 seceneki sunuyor,

Add->New Class gelmedi.

Anlasilmaz bir durumdaysam ekran goruntulerimi vereyim.

Sen projeye değil de solution üzerine sağ tıklıyorsundur.
Zira solution üzerine sağ tıklayınca Add menüsünde dediğin seçenekler belirir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 01:43:21
Hocam tamam dediklerinizi uyguladim ve  kendi programimda Toolboxda Hexbox i alip surukleyip usb programindaki foruma tasiyabiliyorum.

Ancak tam koydugum esnada hata veriyor.

Fakat bu duruma asinayim. Cunku verdiginiz orjinal kodlarinizda forma 2. bir Hexbox koymak istedigimde ayni hatayi almistim. Cozum olarak zaten form uzerine koydugunuz HexBoxu copy ile alip past ile yapistirarak ikinci bir hexbox olusturmustum.

Bu durumda sorun nedir?

Mesajin ilk iki satiri su sekilde

Failed to create component 'HexBox'. This error message follows:
'System.IndexOutOfRangeException: Index was outside the bounds of the array'
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 01:48:59
HexBox denetiminde bir sorun var.
HexBox.cs dosyasının içeriğini tümden buraya eklersen sevinirim.
Code etiketi içinde ekleyin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 01:54:37
Problem icerik bosken de satirlara erismeye calismasindan kaynaklaniyodu. O nedenle en guncel halini kopyalayin demistim =)
this.Lines.Length != 0 kontrolunu ekledim. Son halini tumden tekrar yapistiriyim.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsFormsApplication1
{
class HexBox : TextBox
{
public int Byte { get; set; }

public HexBox()
{
//olusturulurken icinin doldurulmasi
string line = String.Empty;
for (int i = 0; i < 8; i++) //her satir 8 byte
line += " 00";
for (int i = 0; i < 8; i++) //8 satir
this.Text += Convert.ToString((i*8), 16).ComplateDigit(2) + ":" + line + " " + Environment.NewLine;

//coklu satir
this.Multiline = true;
//ilk boyut
this.Size = new Size(100, 60);

this.SelectionStart = 4;
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
e.KeyChar = Char.ToUpper(e.KeyChar); //basilan tusu buyuk harf yap

if ((this.SelectionStart % 3 == 0 && e.KeyChar == ' ') || //eger araya denk gelirse bosluk tusu kabul
(this.SelectionStart % 3 != 0) && //eger bosluga denk gelmezse, basilan tus uygun mu diye bakmaliyiz
(e.KeyChar.IsHex()) && //0-9 A-F arasi
(this.SelectionStart % (this.Lines[0].Length+2) > 3) && //her satirin ilk 3 karakteri olmamali
(this.SelectionStart % (this.Lines[0].Length+2) < this.Lines[0].Length)) //satir sonundaki bos yer olmamali
{
int current = this.SelectionStart; //tusun basildigi yeri al
this.Text = this.Text.Remove(current, 1); //ordaki karakteri sil
this.SelectionStart = current; //pozisyonu tekrar oraya gotur
base.OnKeyPress(e); //oraya tus basilmasina izin ver
}
else
{
e.Handled = true;
}
}

protected override void OnTextChanged(EventArgs e)
{
if (this.SelectionStart % 3 == 0)
this.SelectionStart++;
if (this.Lines.Length != 0 &&
(this.SelectionStart % (this.Lines[0].Length+2) == (this.Lines[0].Length)) &&
(this.SelectionStart < (this.Text.Length - 7)))
this.SelectionStart += 6;

base.OnTextChanged(e);
}
}

static class Ext
{
//char nesnesine metod ekle
public static bool IsHex(this char c)
{
c = Char.ToUpper(c);
return (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9');
}

//string nesnesine metod ekle
public static string ComplateDigit(this string s, int digitCount)
{
return new String('0', digitCount-s.Length) + s;
}
}
}
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 01:59:42
Denedim, ellerine sağlık cicjoe, tam da z'nin istediği gibi olmuş. :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 02:01:53
Sagolun sorun bitti.

Umarim herikinizin de vereceginiz kurs sayesinde C# da belli bir seviyeye geliriz.

Tesekkurler.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 02:04:14
Ben hiç yardımcı olamadım bu sefer. :)
cicjoe iyi iş çıkarttı.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 02:05:29
Tesekkur ederim, iyi calismalar =)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 15:00:54
Delphide kullandigimiz JEDI yi bir sekilde C# da kullanmanin caresi varmidir?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: t2 - 02 Haziran 2012, 15:53:12
Jedi'nin beğendiğin  taraflarından activex nesnesi veya başka dll yaparsın. C#'da kullanırsın
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 16:06:44
Boyle bir calisman oldumu? C# de sen ne kullaniyorsun? umng.dll i hic begenmedim yada bunu tam kesfedemedim. Alternatif ariyorum. umng.dll i kim yazmis dokumantasyonu yapilmismi bilgin varmi?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 16:08:04
Alıntı yapılan: z - 02 Haziran 2012, 16:06:44
Boyle bir calisman oldumu? C# de sen ne kullaniyorsun? umng.dll i hic begenmedim yada bunu tam kesfedemedim. Alternatif ariyorum. umng.dll i kim yazmis dokumantasyonu yapilmismi bilgin varmi?

Eve geçtiğimde bu USB konusunda sana yardımcı olmaya çalışacağım...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: t2 - 02 Haziran 2012, 16:17:54

Alıntı YapBoyle bir calisman oldumu? C# de sen ne kullaniyorsun?

Ben delphide beğendiğim her hangi güzel fonksiyonu activex denetimine çevirebiliyorum. Zor bişey değil. Bunu yaptıktan sonra c#'da kullanabiliyorsun.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 19:13:27

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin

        for i:=0 to $7FFF do
          begin
             Label1.Caption:=inttostr(i);
             Label1.refresh;
          end;

end;


Yukaridaki kod Delphi'ye ait.
Asagidakiler de C#'a

Her ikisini de calistirdim ve sasirdim. Birisi digerine nal toplatiyor. Kim kime toplatiyor dersiniz?

       
        private void button1_Click(object sender, EventArgs e)
        {
          int i;
          for (i = 0; i < 0x7FFF; i++)
          {
              label1.Text = i.ToString();
              label1.Refresh();
          }
        }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 19:31:02
Programlardan birisi calismayi 23 (yirmi uc) sn de bitirdi.

Digeri sadece 4 (dort) sn de.

Kodlarin kostugu makina: P4, 2.2Ghz, 2GByte Ram, XP,  Intel82845G li basit bir VGA karti
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 02 Haziran 2012, 19:41:29
cevap veriyorum C# 23 sn :(
Başlık: Ynt: Aceminin C# sorulari
Gönderen: desman - 02 Haziran 2012, 19:50:53
Bencede hocam yavaş olan C#'tır. ::)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ByTEK - 02 Haziran 2012, 19:53:33
Derleyip Çalıştırma Konusunda Delphi çok hızlıdır. Zamanında bir program yazdım dünya kadar satır kod vardı. görsel komponentler filan maksimum 5sn sürmüştü derleyip çalıştırması.. Delphi gerçekten hızlı..

1 seneyi geçti delphi kullanmayalı.. Özendim sizden şimdi :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 02 Haziran 2012, 19:53:53
test edildi onaylandı...  C# 23 sn.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Klein - 02 Haziran 2012, 19:57:34
delphi 7   = 9sn
delphi 2010 = 13sn
c# = 20sn
Başlık: Ynt: Aceminin C# sorulari
Gönderen: mozkan87 - 02 Haziran 2012, 19:58:27
c++ builder 2010 -> 13 sn
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 20:01:34
Yukarida bahsi gecen sureler kodlarin derlenme sureleri degil. Calisma sureleri.

Gerbay bastan uyarmisti da  bu kadar basit bir kodda sonucun bu kadar farkedecegini dusunememistim.

Kutuphaneleri zengin falan olabilir ama benim icin C# konusu kapandi. C# Amerikan oyunu.

Başlık: Ynt: Aceminin C# sorulari
Gönderen: cetinkaya - 02 Haziran 2012, 20:02:53
yani biraktinizmi simdi C# hocam ?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: desman - 02 Haziran 2012, 20:03:29
VB 2010 10 sn'de bitirdi..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 20:06:03
Alıntı yapılan: rck8942 - 02 Haziran 2012, 20:02:53
yani biraktinizmi simdi C# hocam ?

Benim isimi gormez hocam. Zaten kotu kodlama yapiyorum ustune ustluk kodlarda boyle yavas kosarsa yazacagim hic bir programdan hayir gelmez. Delphi ye devam fakat gerbay builder dan bahsediyordu birde ona bakilabilir.

Bu arada C# olayina https://www.picproje.org/index.php/topic,39532.msg289755.html#msg289755 (https://www.picproje.org/index.php/topic,39532.msg289755.html#msg289755) konusundan takildim. Aslan74 hocayi bulursam dovecegim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: mozkan87 - 02 Haziran 2012, 20:06:44
Sanal XP üzerinde kurulu olan c++ builder 6 ile test ettim 8 sn tamamlanıyor işlem. Buda demek oluyor ki her zaman son versiyonu kullanmamak gerekiyormuş.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 20:08:41
Alıntı yapılan: mozkan87 - 02 Haziran 2012, 20:06:44
Sanal XP üzerinde kurulu olan c++ builder 6 ile test ettim 8 sn tamamlanıyor işlem. Buda demek oluyor ki her zaman son versiyonu kullanmamak gerekiyormuş.

Bu sonucu makinanizin hizi ve ekran karti da belirler. Kendi makinanizda birde delphiye bakabilirmisiniz?

Eger Delphi C++ dan da hizliysa vaycanina diyecegim. Bu arada benim versiyon Delphi6.

Bu arada isletim sisteminin de kodun isletilme suresinde buyuk payi olabilir. Ben XP de calisiyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: mozkan87 - 02 Haziran 2012, 20:20:58
Delphi kurulu değil ve kurulum dosyalarıda elimde yok ancak sonuç muhtemelen c++ ile aynı çıkacaktır.
Bilgisayar core2duo 2GHz çift çekirdek(Laptop) 2GB ram sanal makinanın rami 512 MB, çekirdeklerden biri sanal makinaya atanmış durumda, asıl işletim sistemi windows 7 64 bit.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: t2 - 02 Haziran 2012, 20:28:45
Bu kıyaslamalar bana göre yanlış olmuş.

Döngü içinde label1.Refresh var. BU nedir? görüntüyü güzelleştir, bize göster demek.
c# görüntüye fazla ağırlık vermiş olabilir. CPU zamanlamasından görüntü için daha fazla % alıyor olabilir.

Ama ayrı thread yapıp öyle döndürsek eminim ikisi de eşit çıkacak.   c# ın fazlası var eksiği yok gibi.  Ben de delphi kullanıyorum ama bir iki tane ufak c#  programı yapmıştım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 20:34:47
Mantik belli. It ite it kuyruguna buyuruyor.

C# da programimiz daha alt katmana derdini anlatacak, alt katman derdi anlayacak fonksiyonu cagiracak olme esegim olme.

Hani hizlar arasindaki  oran 0.9 falan olsa anlayacagim da 0.17.  El insaf.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ByTEK - 02 Haziran 2012, 20:36:49
Alıntı yapılan: z - 02 Haziran 2012, 20:34:47
Mantik belli. It ite it kuyruguna buyuruyor.

C# da programimiz daha alt katmana derdini anlatacak, alt katman derdi anlayacak fonksiyonu cagiracak olme esegim olme.

Hani hizlar arasindaki  oran 0.9 falan olsa anlayacagim da 0.17.  El insaf.

Bülent Hocam; birde lazarus(free pascal) ile deneyin.. Sonuç şaşırtıcı..

http://sourceforge.net/projects/lazarus/files/latest/download?source=files (http://sourceforge.net/projects/lazarus/files/latest/download?source=files)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 20:42:58
Sasirtici derken? Lazarusun urettigi kodlar ne kadar surede kostu?

Programi yukletip kurdurmayla falan ugrastirma simdi. Delphideki kodlari aynen lazarusda derleyebiliyormuyuz?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ByTEK - 02 Haziran 2012, 20:45:55
Alıntı yapılan: z - 02 Haziran 2012, 20:42:58
Sasirtici derken? Lazarusun urettigi kodlar ne kadar surede kostu?

Programi yukletip kurdurmayla falan ugrastirma simdi. Delphideki kodlari aynen lazarusda derleyebiliyormuyuz?

Az sonra Delphi 2010 ve Lazarus ile derleyip yükleyeceğim deneyin..

Lazarusta label1.refresh; komutu çalışmıyor sanırım.. Sayarken göstermiyor direkt sonucu gösteriyor. Belki ondan kısa sürdü. Lazarus ile delphi kodlarının çoğunu derleyebilirsiniz.. ama delphi için yazılan elemanlarda sıkıntı çıkartabilir..

http://www.dosya.tc/server17/2cRmjt/Deneme.rar.html (http://www.dosya.tc/server17/2cRmjt/Deneme.rar.html)

Başlık: Ynt: Aceminin C# sorulari
Gönderen: t2 - 02 Haziran 2012, 20:53:02
thread yapmadıysanız ne yapsanız boş. kıyaslama yanlış. sebebi kendi beceriksizliğiniz. Böyle ağır işler thread içinde yapılır. yoksa program kitlenir, dütlenir.  kitleneceği yoksa da kitlenir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 20:58:29
Tamam sen thread ile yaz sonucu da bize duyur. Fakat her ekrana bastigin karakter ardindan karakteri ekranda goreyim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: t2 - 02 Haziran 2012, 21:01:45
ekranı fazla takma. ekran kullanıcı için. asıl işi arka planda thread içinde yapmalısın. 100 iş yap, birini göster.  kullanıcı bunu anlamaz. gerekirse gösterirsin. kum sâti çıksın. threat içinde olup biteni dışarı  bildirmek için çeşitli mekanizmalar kullanılıyor. 
Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 21:06:17
3L3CTRO programi indirdim ve denemeyi yaptim. Fakat label1.refresh de uckagit yapiyor ve refresh yapmiyor. Kod calisti ve en son degeri ekrana yazdi. 2 sn de bitirdi. her sayim ardindan refresh yapmadigi icin bu sonuca bakip bir sey demek mumkun degil.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ByTEK - 02 Haziran 2012, 21:07:52
Alıntı yapılan: z - 02 Haziran 2012, 21:06:17
3L3CTRO programi indirdim ve denemeyi yaptim. Fakat label1.refresh de uckagit yapiyor ve refresh yapmiyor. Kod calisti ve en son degeri ekrana yazdi.

Bende ona baktım.. O yüzden az çıkmış olabilir Hocam.. ikisinlede aynı kod ile Timerla aynı zamanda saydırınca delphi ile aynı çıkıyor. 7sn çıkıyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 21:11:34
Delphi = 4sn
C# = 8sn

Gozume carpan, delphi'de label yanip sonuyor, c#'da cok net cikiyor sayilar. microsoft .net 4.0 ile %40 performans artisi sagladigini duyurmustu. bazi kodlarda c++'dan daha hizli calistigini bizzat gordum. ancak boyle bir sonuca ulasmak mumkun değil. yani diyemem ki c# c++'dan daha hizli. bu yaniltici olur. bu tarz testler icin uygulanan bazi algoritmalar var. yani bence 1 for ile sonuca varmayin. isin icinden gorseli cikarinca farkin baya azlacagini dusunuyorum.

Edit: ornek bir karsilastirma (hangi .net versiyonu kullanildigini goremedim)
http://www.biomedcentral.com/1471-2105/9/82 (http://www.biomedcentral.com/1471-2105/9/82)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 02 Haziran 2012, 21:27:10
Cidden inanamıyorum.
Yazılım geliştirme dünyasını resmen altüst ettiniz...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Klein - 02 Haziran 2012, 21:42:19
        private void button1_Click(object sender, EventArgs e)
        {
            int i;
            j = 0;
            label1.Text = DateTime.Now.ToString();
            for (i = 0; i < 0x7FFFFFF; i++)
            {
                j += Math.Sin(i % 360 )*10;
            }
            label3.Text = j.ToString();
            label2.Text = DateTime.Now.ToString();
        }


procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
        j:=0;
        label1.Caption := timetostr(now);
        for i:=0 to $7FFFFFF do
          begin
            j := j+ Sin(i mod 360 )*10;
          end;
        label3.Caption := floattostr(j);
        label2.Caption := timetostr(now);

end;



Başlık: Ynt: Aceminin C# sorulari
Gönderen: z - 02 Haziran 2012, 21:49:41
@Cicjoe

C# da Textboxdan turettip HexBox adini verdigin component olusturma isini cok sevdim. Ayni islemi Delphi basligi altinda bir de delphi icin yapip gerekli aciklamalari yaparsan cok sevinirim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ByTEK - 02 Haziran 2012, 22:03:11
Klein hocamın verdiği kodu lazarus ile derledim..



https://rapidshare.com/files/2473414385/lazarus_deneme.rar (https://rapidshare.com/files/2473414385/lazarus_deneme.rar)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 02 Haziran 2012, 22:07:03
@z
Hocam delphi ile aram pek iyi degil. Sadece ders olarak aldim. Sivilde acmisligim, kullanmisligim yok. =) Bu konuda iyi olan arkadaslara pas atayim.
C# bana her zaman yeterli gelmistir. C/C++ kodlarini da cagirma imkani oldugu icin performans gerektiren uygulamalarda da tercih edilebilir bence.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 02 Haziran 2012, 23:16:09
Alıntı yapılan: YARARMAN - 02 Haziran 2012, 00:15:05
Küçük bir yazılım hazırladım, onu inceleyebilirsin...

https://rapidshare.com/files/3125668450/SerialPortApp.zip (https://rapidshare.com/files/3125668450/SerialPortApp.zip)


(Resim gizlendi görmek için tıklayın.)

Teşekkürler Hocam... :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 06 Haziran 2012, 10:11:28
Alıntı yapılan: YARARMAN - 02 Haziran 2012, 00:15:05
Küçük bir yazılım hazırladım, onu inceleyebilirsin...

https://rapidshare.com/files/3125668450/SerialPortApp.zip (https://rapidshare.com/files/3125668450/SerialPortApp.zip)


(Resim gizlendi görmek için tıklayın.)

Hocam Benim bir sorum var. Göndermiş olduğunuz yazılımı denedim fakat bir sorun var. Veri alma işlemi yapıyor fakat benim elektronik deneme kartım ilk açılışta hazır olduğuna dair mesaj gönderiyor bu mesajı görüntüleyemiyorum. Diğer mesajlar görüntüleniyor fakat diğerlerini göremiyorum. Devremi başka terminal programlarında denemiştim . Fakat bunda ilk açılış mesajını görüntüleyemiyorum...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 06 Haziran 2012, 11:14:35
Alıntı yapılan: serhat1990 - 06 Haziran 2012, 10:11:28
Hocam Benim bir sorum var. Göndermiş olduğunuz yazılımı denedim fakat bir sorun var. Veri alma işlemi yapıyor fakat benim elektronik deneme kartım ilk açılışta hazır olduğuna dair mesaj gönderiyor bu mesajı görüntüleyemiyorum. Diğer mesajlar görüntüleniyor fakat diğerlerini göremiyorum. Devremi başka terminal programlarında denemiştim . Fakat bunda ilk açılış mesajını görüntüleyemiyorum...

Programda port açılmadan, devren gönderiyorsa, programda onu göremezsin...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 06 Haziran 2012, 11:16:19
Alıntı yapılan: YARARMAN - 06 Haziran 2012, 11:14:35
Programda port açılmadan, devren gönderiyorsa, programda onu göremezsin...

Portu aktif ediyorum devremi sonradan devreye alıyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 06 Haziran 2012, 11:19:19
Alıntı yapılan: serhat1990 - 06 Haziran 2012, 11:16:19
Portu aktif ediyorum devremi sonradan devreye alıyorum.

Devrede enerji yokken seri porta bağla.
Yazılımı aç sonra da portu aç.
Son olarak da devreye enerji ver.

Bu şekilde mi yapıyorsun?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 06 Haziran 2012, 11:51:25
Evet ,
Başlık: Ynt: Aceminin C# sorulari
Gönderen: YARARMAN - 06 Haziran 2012, 12:10:04
Alıntı yapılan: serhat1990 - 06 Haziran 2012, 11:51:25
Evet ,

Şuanlık aklıma başka bir çözüm gelmiyor.
Kaçırdığımız bir nokta olabilir...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 13:58:43
Arkadaşlar C# ile Seri portta veri alıp göndermek için seri portu nasıl kurmam gerekiyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 14:01:07
Alıntı yapılan: Mucit23 - 06 Haziran 2012, 13:58:43
Arkadaşlar C# ile Seri portta veri alıp göndermek için seri portu nasıl kurmam gerekiyor.

Şu mesajımdaki yazılımı inceledin mi?
https://www.picproje.org/index.php/topic,39677.msg291514.html#msg291514 (https://www.picproje.org/index.php/topic,39677.msg291514.html#msg291514)
Devrede kullandığın BaudRate değeri ile aynı değeri kullanmalısın.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 14:06:33
Hocam seri portu ilk defa kullanacağım. Bu yüzden seri portun parametrelerinin yazılımsal olarak nasıl ayarlanacağını bilmiyorum.
Mesaj derken hangi mesajınızdan behsettiniz.

İnternette bazı kısa bilgiler buldum ama pek aklıma yatmadı. Tam bir kod görsem anlıyacağım. Hepsi komut tabanlı anlatılmış.

edit;Yeni gördüm mesajınızı
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 14:12:28
Alıntı yapılan: Mucit23 - 06 Haziran 2012, 14:06:33
Hocam seri portu ilk defa kullanacağım. Bu yüzden seri portun parametrelerinin yazılımsal olarak nasıl ayarlanacağını bilmiyorum.
Mesaj derken hangi mesajınızdan behsettiniz.

İnternette bazı kısa bilgiler buldum ama pek aklıma yatmadı. Tam bir kod görsem anlıyacağım. Hepsi komut tabanlı anlatılmış.

edit;Yeni gördüm mesajınızı

SerialPort denetimini ister tasarım zamanında (design-time) Toolbox'dan forma yerleştirip kullanabilirsin.
İstersen de çalışma zamanında (run-time) genel olarak tanımlayıp kullanabilirsin.
Anlamadığın noktalar olursa, sorabilirsin...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 15:47:52
Hocam biraz baktım. Ama her nedense sizin çalışmanızı çalıştıramadım. İlginç bir hata veriyor benim PC'de.
Bazı komutlar anlaşılıyor ama kodun genelini incelediğimde çok kafam karışıyor.

Vaktiniz varsa eğer Adım adım yapılması gerekenleri göstererek anlatabilirmisiniz?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 06 Haziran 2012, 16:21:07
Programı çalıştır. Comport'u seç. Baudrate 9600 ayarlı programda kendi devreni yada seriport yazılımını kendi devrendeki baudrate 'e göre ayarla başlata tıkla çalışıyor. Yalnız alma kısmında sıkıntı vardı. İyi çalışmalar..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 16:49:55
Sanırım yaptım :)
Ama programın çalışıp çalışmadığını nasıl test edebilirim. Dizüstü bilgisayarım var USB seri dönüştürücüde var. Acaba isiste pic için bir program yazsam isisteki virtual terminal ile Programı haberleştirebilirmiyim. Virtual terminal tek başına sanal bir port oluşturmuyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 06 Haziran 2012, 16:56:45
Bir devre kur boarda :) Ben ilk yazdığım seri haberleşme programını denemek için devre bile bastım :) basit bir devre üzerinde led falan var birde rf modül var. 2 tane bastım veri alma işleminide tam yaparsam karsılıklı konusacam :) Evde arkadaşla deneyecem. Hazır terminal programlarında denedim sıkıntı yok. C# 'ta veri gönderme tamam . Almada biterse kendi haberleşme aracımı yapacam :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 16:59:34
Alıntı yapılan: Mucit23 - 06 Haziran 2012, 16:49:55
Sanırım yaptım :)
Ama programın çalışıp çalışmadığını nasıl test edebilirim. Dizüstü bilgisayarım var USB seri dönüştürücüde var. Acaba isiste pic için bir program yazsam isisteki virtual terminal ile Programı haberleştirebilirmiyim. Virtual terminal tek başına sanal bir port oluşturmuyor.

Çok zor değil. :)
Bir tane PIC'in TX-RX uçlarına ST232'li ya da MAX232'li bir devre bağla onu da RS232 konnektörüne bağla.
USB-RS232 çeviri de var mış zaten.
Onu da bağladın mı test edebilirsin.
Şimdiye kadar Protues ile donanımsal olarak hiç UART işlemi yapmadım, bilmiyorum da var mı öyle bir şey. :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 17:02:28
Aynı şekilde bende çalışıyorum. Daha Bu C# ile ikinci uygulamam. Çevre uygulamalara bakıyorum.

Şöyle bir kod yazdım seri iletişim için.
Bu şekilde anlaşılırmi bilmiyorum ama bir bakın isterseniz. Belki mantıken ters giden şeyler vardır.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
            comboBox1.Text = "1200";
            comboBox2.Text = "Com1";
        }

        string veri,gelen;
        private void button1_Click_1(object sender, EventArgs e)
        {
            int baud;
            veri = textBox1.Text;

            switch(comboBox1.SelectedIndex)
            {
                case 1:
                    baud = 1200;
                    break;
                case 2:
                    baud = 2400;
                    break;
                case 3:
                    baud = 4800;
                    break;
                case 4:
                    baud = 9600;
                    break;
                case 5:
                    baud = 19200;
                    break;
                case 6:
                    baud = 38400;
                    break;
                case 7:
                    baud = 57600;
                    break;
                case 8:
                    baud = 115200;
                    break;
            }

            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }

            serialPort1.PortName = comboBox2.SelectedItem.ToString();
            serialPort1.BaudRate = 9600;
            serialPort1.Open();
            serialPort1.Write("deneme");
       
         }


        private void Form1_Load(object sender, EventArgs e)
        {

            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }

            foreach (string ComPorts in SerialPort.GetPortNames())
                comboBox1.Items.Add(ComPorts);
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            gelen = serialPort1.ReadExisting();
        }
           
    }

}


Birde USB seri dönüştürücülerde çıkan daha bilgisayarda olduğu gibi +-10V genliktemi yoksa TTL midir. Max232 devresi gerekirmi?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 17:16:47
Benim yazdığım projedeki gibi delegate kullan.
Gelen veriyi o şekilde al.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 06 Haziran 2012, 17:33:02
Sizin seriport devrenizi denedim sorun yok çalışıyor. elimde usb>485 çevirici var onun ile test ettim. yalnız tek sıkıntı çok uzun olmasada alma işleminde 'biraz' bekleme yapıyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 17:38:21
Alıntı yapılan: subram - 06 Haziran 2012, 17:33:02Birde sizin seriport devrenizi denedim sorun yok çalışıyor. elimde usb>485 çevirici var onun ile test ettim. yalnız tek sıkıntı çok uzun olmasada alma işleminde 'biraz' bekleme yapıyor.

Ben SD kartlı bir devremden veri alışverişi yapıyorum.
Alma konusunda gecikme gibi bir sıkıntı yaşamadım şimdiye kadar.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 17:39:40
Programı nasıl test ediyorsunuz?

Ben ulaganın hazırlamış olduğu programı çalıştırmaya kalktığımda resimdeki gibi bir hata veriyor.
(http://postimg.cc/)
picture hosting (http://postimg.cc/)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 17:44:46
Mucit23, senin Project ya da Solution ayarlarında bir sorun oluşmuş.
Kaynak dosyayı bulamıyor.
Benim bilgiyarımdaki yolu gösteriyor. :)
Ben normalde bu projeyi ofisteki bilgisayara indirip denedim, sorun çıkmadı...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 17:46:18
Hocam sizin proje masaüstünde. Daha önce salt okunur dosya problemleri ile karşılaşmıştım. Sanırım open project diyip açsam daha iyi olacak.

Olmuyor. Bu hatayı nasıl önlerim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 06 Haziran 2012, 17:50:27
"Birde USB seri dönüştürücülerde çıkan daha bilgisayarda olduğu gibi +-10V genliktemi yoksa TTL midir. Max232 devresi gerekirmi?"

Usb seri dönüştürücüleri benim kullandığım için konuşuyorum TTL değildir. :) max232 devresi gerekir. Oda hiç birşey ya 4 tane kondansatör. Birde güç kaynağın yoksa 5v regülatör tamamdır. :) Kolay gelsin...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 17:53:11
Alıntı yapılan: Mucit23 - 06 Haziran 2012, 17:46:18
Hocam sizin proje masaüstünde. Daha önce salt okunur dosya problemleri ile karşılaşmıştım. Sanırım open project diyip açsam daha iyi olacak.

Olmuyor. Bu hatayı nasıl önlerim.

Bir de şunu dene bakalım:
http://s2.dosya.tc/server14/sYD2Pn/SerialPortApp.zip.html (http://s2.dosya.tc/server14/sYD2Pn/SerialPortApp.zip.html)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 17:58:52
Alıntı yapılan: ULAGA - 06 Haziran 2012, 17:53:11
Bir de şunu dene bakalım:
http://s2.dosya.tc/server14/sYD2Pn/SerialPortApp.zip.html (http://s2.dosya.tc/server14/sYD2Pn/SerialPortApp.zip.html)


Hocam son verdiğiniz dosyada aynı hatayı veriyor. Bi önceki mesajda verdiğim hata mesajına tamam diyip çıkınca ardından aşağıdaki gibi bir uyarı veriyor.
(http://postimg.cc/image/3rkyryqn7/full/)
image host (http://postimg.cc/)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 22:31:46
Anladım gösterdiğin resimde açıklık meydana gelmiş.
Bilgisayarında o anda port bulamadığı için combobox dolmuyor.
Dolmadığı için de index seçimi yapamıyor.
Sen hata veren o satırın başına çift taksim koy. ( // diye)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 23:27:02
Dediğiniz gibi yapınca oldu. Ama sizin programdada eksiklik var gibi. Mesela ListCOM içeriği boş görünüyor. Neyse Ben birazdaha çalışayım. Yarın bu yaptığım seri port uygulaması deneyeceğim. İşten vakit bulursam aklımda bir iki uygulama daha var onlar üzerindede çalışırım.

Peki Benim verdiğim programın Genel olarak çalışmasında bir problem olurmu?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 06 Haziran 2012, 23:35:36
Alıntı yapılan: Mucit23 - 06 Haziran 2012, 23:27:02
Dediğiniz gibi yapınca oldu. Ama sizin programdada eksiklik var gibi. Mesela ListCOM içeriği boş görünüyor. Neyse Ben birazdaha çalışayım. Yarın bu yaptığım seri port uygulaması deneyeceğim. İşten vakit bulursam aklımda bir iki uygulama daha var onlar üzerindede çalışırım.

Peki Benim verdiğim programın Genel olarak çalışmasında bir problem olurmu?

Programın çalışmasında eksiklik yok.
Ancak deminki gibi açıklıklar olabilir.
ListCOM denetiminin içinin boş görünmesinin sebebi;
O an bilgisayarda tanımlı hiçbir port olmamasıdır.
Senin gönderdiğin kodda delegate kullanılmamış.
O yüzden ver alımında sorun çıkacaktır.
Benim gönderdiğim yazılım, temel alma-gönderme için eksiksiz bir yazılım.
Niye onu kullanmıyorsun?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 06 Haziran 2012, 23:47:59
Hocam açıkçası sizin kod biraz karmaşık geldi. Bende zaten başka yerlerden kopyalarayak yapmaya çalıştım. Veri gönderirse sorun yok. Ama madem bu işe girdik bari tam anlamıyla öğrenelim.

Boş bir vaktinizde vaktinizde seri port kullanımını ve temel veri alma gönderme işlemlerini, anlatırsanız gerçekten çok sevinirim. 
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 07 Haziran 2012, 12:50:31
Alıntı yapılan: Mucit23 - 06 Haziran 2012, 23:47:59
Hocam açıkçası sizin kod biraz karmaşık geldi. Bende zaten başka yerlerden kopyalarayak yapmaya çalıştım. Veri gönderirse sorun yok. Ama madem bu işe girdik bari tam anlamıyla öğrenelim.

Boş bir vaktinizde vaktinizde seri port kullanımını ve temel veri alma gönderme işlemlerini, anlatırsanız gerçekten çok sevinirim.

Katılıyorum...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 07 Haziran 2012, 17:18:06
Bir sorum daha var.

Mesela bir değişkenin değerine göre form üzerinde bir butonun Taban rengini ve yazı rengini değiştirmek istiyorum. Nasıl yapabilirim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: desman - 07 Haziran 2012, 17:30:07
Alıntı YapBir sorum daha var.

Mesela bir değişkenin değerine göre form üzerinde bir butonun Taban rengini ve yazı rengini değiştirmek istiyorum. Nasıl yapabilirim.
private void button1_Click(object sender, EventArgs e)
        {
            int a = 5;
            if (a == 5) {
                button1.BackColor=System.Drawing.Color.Aqua;
                button1.ForeColor = System.Drawing.Color.Red;
            }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 07 Haziran 2012, 17:35:51
Evet dediğiniz gibi oluyor.
Fakat butonun dış sınırları aynı renkte kalıyor. Tümüyle rengini değiştiremezmiyiz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 07 Haziran 2012, 17:57:41
Normal bir butonun dış rengi değişmez.
Ancak bir butonun FlatStyle özelliğini Flat olarak seçip, kodda da;


button1.FlatAppearance.BorderColor = System.Drawing.Color.Red;

yazarsanız, dış rengini değiştirebilirsiniz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 07 Haziran 2012, 18:55:58
Hocam sizin kod çalışmadı nedense
        private void button1_Click(object sender, EventArgs e)
        {
            button1.BackColor = System.Drawing.Color.Red;
            button1.FlatAppearance.BorderColor = Color.Red;
        }
olduğu gibi yazıyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 07 Haziran 2012, 19:07:14
Butonun özelliklerinden FlatStyle'i Flat olarak değiştirdin mi?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: desman - 07 Haziran 2012, 19:36:32
Hocam rengi kullanıcı seçsin istiyosanız.Bi tane colordialog ekleyin projeye ve şöyle yazın;
      private void button1_Click(object sender, EventArgs e)

        {
            colorDialog1.ShowDialog();
            button1.BackColor = colorDialog1.Color;
        }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 08 Haziran 2012, 16:57:52
Hocam dediğiniz gibi buton FlatStyle i Flat olarak seçmemişim. Renk Değiştirme işini anladım.
Çalışmalarım devam ediyor.

Şimdi bir sorum daha var.

Diyelim form üzerinde bir butona klavyeden bir tuşu atamak istiyoruz.  Yani örneğin hem mause ile hemde kavyeden istediğim tuş ile butonun yaptığı işlemi yapabileyim. Biraz araştırdım. Normalde butonun yaptığı işlemi fonksiyon olarak tanımladım. Butona basıldığında o fonksiyonu çağırıp işlemi yaptırıyorum. Sıra geldi klavyeden iştiğim tuşun basıldığını anlamaya. Bunu nasıl yaparım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 08 Haziran 2012, 18:14:23
Alıntı yapılan: Mucit23 - 08 Haziran 2012, 16:57:52
Hocam dediğiniz gibi buton FlatStyle i Flat olarak seçmemişim. Renk Değiştirme işini anladım.
Çalışmalarım devam ediyor.

Şimdi bir sorum daha var.

Diyelim form üzerinde bir butona klavyeden bir tuşu atamak istiyoruz.  Yani örneğin hem mause ile hemde kavyeden istediğim tuş ile butonun yaptığı işlemi yapabileyim. Biraz araştırdım. Normalde butonun yaptığı işlemi fonksiyon olarak tanımladım. Butona basıldığında o fonksiyonu çağırıp işlemi yaptırıyorum. Sıra geldi klavyeden iştiğim tuşun basıldığını anlamaya. Bunu nasıl yaparım.

Şu geliştirdiğim örneği incele:
https://rapidshare.com/files/1600640681/WindowsFormsApplication1.zip (https://rapidshare.com/files/1600640681/WindowsFormsApplication1.zip)

Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 08 Haziran 2012, 19:02:09
Hocam Sağolun. Akşam inceleyeyim.

Birde seri port işini çözdüm. Artık istediğim gibi data alıp gönderebiliyorum. Dediğiniz gibi data almak için delegate kullandım. Son gaz çalışıyorum.  ;D
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 08 Haziran 2012, 19:06:33
Alıntı yapılan: Mucit23 - 08 Haziran 2012, 19:02:09
Hocam Sağolun. Akşam inceleyeyim.

Birde seri port işini çözdüm. Artık istediğim gibi data alıp gönderebiliyorum. Dediğiniz gibi data almak için delegate kullandım. Son gaz çalışıyorum.  ;D

Ellerine sağlık, sevindim...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 09 Haziran 2012, 01:08:10
hocam verdiğiniz klavye uygulamasına baktım.

programda iş yapan kısım şurası anladığım kadarı ile. yalnız küçük harf yazmak istediğimde kabul etmedi. neden acaba. bu komut yapısını biraz anlatabilir misiniz.

private void frmKey_KeyPress(object sender, KeyPressEventArgs e)
{
char ch = Char.ToUpper(e.KeyChar);

            if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'z') )
{
e.Handled = true;
}
else
{
txtDisplay.Text += ch.ToString();
}
}


edit;
buldum galiba ToUpper dan kaynaklanıyor.

edit; istediğim buydu ;

char ch =(e.KeyChar);

            if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z'))
{
e.Handled = true;
}
else
{
txtDisplay.Text += ch.ToString();
}
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 09 Haziran 2012, 01:33:59
Char.IsLetterOrDigit(ch) veya !Char.IsLetterOrDigit(ch) seklinde de kullanilabilir
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 09 Haziran 2012, 01:51:20
Cicjoe dediğini yapamadım ama klavyedeki tüm karakterleri yazdırmanın yolunu buldum sanırım :) çok zevkli bu C# ya.

private void frmKey_KeyPress(object sender, KeyPressEventArgs e)
{
char  ch =(e.KeyChar);

            if ((ch < 0 || ch > 255) )
{
e.Handled = true;
}
else
{
             
               
txtDisplay.Text = ch.ToString();
}
}
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 09 Haziran 2012, 01:56:21
Alıntı yapılan: cicjoe - 09 Haziran 2012, 01:33:59
Char.IsLetterOrDigit(ch) veya !Char.IsLetterOrDigit(ch) seklinde de kullanilabilir

Evet, onu da kullanabilirdim.
Ancak A<>F sınırlaması yapmak istedim. :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 09 Haziran 2012, 01:59:47
Char.IsLetterOrDigit(ch) veya !Char.IsLetterOrDigit(ch)
nasıl kullanılır bu iki komut çözemedim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 09 Haziran 2012, 02:07:40
Alıntı yapılan: subram - 09 Haziran 2012, 01:59:47
Char.IsLetterOrDigit(ch) veya !Char.IsLetterOrDigit(ch)
nasıl kullanılır bu iki komut çözemedim.

İlki ch değişkeni harf ya da rakamsa.
İkicisi ise ch değişkeni harf ya da rakam değilse.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: cicjoe - 09 Haziran 2012, 02:11:39
=) o amacla soylemedim hocam, yani niye kullanmadiniz gibisinden, yoksa ayni isi yapinca farkmaz. kodda 0-9 a-z A-Z gorunce birden aklima geldi =)

@subram
c#'da char 2 byte. yani 0-255 araligini tasiyor. unicode destegi icin. ama noktalama isaretlerini iptal etmek isterseniz mesela soyle kullanabilirsiniz.


if (Char.IsLetterOrDigit(ch))
    txtDisplay.Text += ch.ToString();
else
    e.Handled = true;
Başlık: Ynt: Aceminin C# sorulari
Gönderen: subram - 09 Haziran 2012, 04:32:38
güzelmiş. sağolun. bu arada şu kurs işini nasıl hızlandırabiliriz :D
Başlık: Ynt: Aceminin C# sorulari
Gönderen: desman - 09 Haziran 2012, 14:41:06
Hocam peki iki tuşa aynı anda basılması gerekiyorsa nasıl yaparız.
Mesala 'a' ve 'w'ye aynı anda basıldıgında messageBox açılsın istiyorum, nasıl yaparız bunu. ???
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ULAGA - 09 Haziran 2012, 15:53:28
Alıntı yapılan: desman - 09 Haziran 2012, 14:41:06
Hocam peki iki tuşa aynı anda basılması gerekiyorsa nasıl yaparız.
Mesala 'a' ve 'w'ye aynı anda basıldıgında messageBox açılsın istiyorum, nasıl yaparız bunu. ???

Şunu bir dene:
https://rapidshare.com/files/1406654267/WindowsFormsApplication1.zip
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Temmuz 2012, 15:20:36
Arkadaşlar tekrar merhaba.
Bugün işlerin hafiflemesiyle birlikte yine C#üzerinde çalışmaya başladım. Birkaç sorum olacak.
C# üzerinde kullanılabilir sanal seri portları(Com1,Com2,Com3....)öğrenip combobox içerisinde listelemek istiyorum. Bunu nasıl yaparım?
Diğer bir sorum ise şudur.
Seri port terminal benzeri birşey yazıyorum. Programda en son ayarladığım değerleri( Baud Değeri, Com noktası vs) Kayıt edip Formu tekrar çalıştırdığımda bu değerleri alıp combobox içerisine yerleştirmek istiyorum. Yani en sonki ayarlar değiştirlmediği sürece kalacak. Bunu nasıl yaparım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: justice_for_all - 11 Temmuz 2012, 15:26:35
System.IO.Ports.SerialPort.GetPortNames ile yapabilirsin.diğer sorunun cevabı ise buyuk ihtimal dosyadan okuma ile olur gibi dusunuyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Temmuz 2012, 16:02:40
En iyisi şöyle yapayım kayıt işlemini.
Forumdan çıkarken bir txt dosyası açıp. Bu dosya üzerine sonki değerleri yazıp. Form yüklenirken ise txt dosyasını okuyup bu değerleri tekrar combobox içerisine yerleştireyim. Bunu yapayım sonra kullanılabilir portları öğrenme işine bakıcağım...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: justice_for_all - 11 Temmuz 2012, 16:07:33
kullanılabilir portları ögrenme olayında hiç bir şey yok sadece daha önce verdiğim kodu kullanacaksın.o sana string dizisi verir o diziyide direkt olarak combo box a atabilirsin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 11 Temmuz 2012, 16:19:00
Şöyle yapabilirsiniz hocam:

private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.DataSource = System.IO.Ports.SerialPort.GetPortNames();
            comboBox1.SelectedItem = 1;
        }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Temmuz 2012, 16:30:44
Sağolun arkadaşlar. Çok Teşekkür Ederim.
Dosya kayıt işlemini başardım.(Biraz kopya çektim aslında  ::))
Şimdi  kullanılabilir portlara bakalım..

mesaj birleştirme:: 11 Temmuz 2012, 16:35:07

Birde şöyle bir problem var anlam veremiyorum.

Form ilk çalıştırıldığında işletilen events hangisidir. İnternette bakıyorum hep private void Form1_Load(object sender, EventArgs e)
evets içerisine yazılıyor. Ama ben buraya kodlarımı yazdığımda çalıştırılmıyor. Bunun yerine public Form1() events içerisine yazıyorum çalıştırılıyor. Buna hakikaten anlam veremiyorum yazdığım kodlar şunlar. Bi inceleyebilirmisiniz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using Microsoft.Win32;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int baud = 1200;

        public Form1()
        {
            InitializeComponent();

            FileStream Srw;
            StreamReader Sr;

            Srw = new FileStream("Old_Value.txt", FileMode.Open, FileAccess.Read);
            Sr = new StreamReader(Srw);
            comboBox1.Text = Sr.ReadLine();
            Sr.Close();
            comboBox2.Text = "Com1";
            connect.Text = "Bağlan";
            connect.BackColor = Color.Green;
            connect.ForeColor = Color.White;
            connect.Text = "Baslat";

        }

        private void Form1_Load(object sender, EventArgs e)
        {


            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
            serialPort1 = new SerialPort();
          //  serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataRecived);

        }

        public void Rs232SendData()
        {
            if (serialPort1.IsOpen == false)
            {
                MessageBox.Show("Bağlantı kurulmadı", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    serialPort1.Write(textBox1.Text.ToString());/* Datayı seri olarak gönder*/
                }
                catch (Exception)
                {
                    MessageBox.Show(this,"Bir Hata algılandı. Lütfen Daha sonra Tekrar deneyin", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        public void Baud_value()
       {
           switch (comboBox1.SelectedIndex)
           {
               case 0:
                   baud = 1200;
                   break;
               case 1:
                   baud = 2400;
                   break;
               case 2:
                   baud = 4800;
                   break;
               case 3:
                   baud = 9600;
                   break;
               case 4:
                   baud = 1920;
                   break;
               case 5:
                   baud = 38400;
                   break;
               case 6:
                   baud = 57600;
                   break;
               case 7:
                   baud = 115200;
                   break;
           } 
       }

        private void dataSend_Click(object sender, EventArgs e)
        {
            Rs232SendData();
        }

        private void connect_Click(object sender, EventArgs e)
        {

            if (serialPort1.IsOpen == false)
            {
                Baud_value();
                   
                serialPort1.PortName = comboBox2.SelectedItem.ToString();
                serialPort1.BaudRate = baud;

                try
                {
                    serialPort1.Open();
                    connect.BackColor = Color.Red;
                    connect.ForeColor = Color.White;
                    connect.Text = "Durdur";
                    //serialPort1.DiscardInBuffer();
                    //serialPort1.DiscardOutBuffer();
                }
                catch (Exception)
                {
                    MessageBox.Show(this, "Bir Hata algılandı. Lütfen Daha sonra Tekrar deneyin", "Hata!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                serialPort1.Close();
                connect.BackColor = Color.Green;
                connect.ForeColor = Color.White;
                connect.Text = "Baslat";

            }

        }

        public delegate void delegateG();

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
           RxText.BeginInvoke(new delegateG(guncelle));         
        }
        public void guncelle()
        {
            int yeni=0;
            int recived = serialPort1.ReadByte();

            if (recived != yeni)
            {
                yeni = recived;
                RxText.Text += recived.ToString();
            }
       
            if (RxText.TextLength==100)
            {
               RxText.Text="";
            }
        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                Rs232SendData();
            }
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Baud_value();
            StreamWriter SW;
                SW=File.CreateText("Old_Value.txt");
                SW.WriteLine (baud.ToString());
                SW.Close();

        }

    }

}


Program orasıyla burasıya oynaya oynaya arap şaçına döndü :D Böyle böyle olacak..

Kullanılabilir port işinide öğrendim. Vitruvius un verdiği kod çalışıyor. Teşekkür ederim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ArGeMaNiA - 11 Temmuz 2012, 17:46:57
Tasarım penceresinde Form'a sağ tıklayıp Properties dedikten sonra Load'ın Form1_Load ile ilişkili
olup olmadığını kontrol edebilirsiniz.Belki yanlışlıkla silmişsinizdir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Ağustos 2012, 11:48:10
Merhaba
Geçen sefer fazla uğraşmadım şu form Load işine ama şimdi yine ihtiyacım oldu. Çözmem gerekiyor.
Form1 e sağ tıklayıp properties bölümüne baktığımda Load diye bir kısım göremedim. Formun Adı Form1 diye geçiyor.

Deneme açısında forma yine aşağıdaki gibi bir events ekledim

        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("çalıştı");
        }

Ne yapabilirim bu konuda..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Ömer KANAR - 11 Ağustos 2012, 12:26:19
Anladığım kadarıyla siz elle kodluyorsunuz...Ama eksik kodluyorsunuz.
Tasarım penceresini kulllanın..
(http://bit.ly/c25MCx)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: evreno - 11 Ağustos 2012, 12:40:20
formda boş bir alana çift tıkla otomatik olarak load event ını oluşturacaktır
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Ağustos 2012, 13:34:34
evet dediğin gibi oldu
        private void Form1_Load_1(object sender, EventArgs e)
        {
            MessageBox.Show("çalıştı");
        }

Doğrusu bu şekildeymiş.  Teşekkürler.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 12 Ağustos 2012, 03:05:18
Alıntı YapForm1_Load_1
Yazıyorsa eğer başka biryerde Form1_Load eventi vardır.
Tüm form1_load eventlerini kod penceresinden silerek, formun boş biryerinde çift tıklayarak
private void Form1_Load(object sender, EventArgs e) olduğunu göreceksiniz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 12 Ağustos 2012, 05:07:37
Eğer doğrudan kod kullanmak isterseniz olayları protected override lara bağlayabilirsiniz...

protected override OnLoad(EventArgs e)
{
    //...
    base.OnLoad(e);
}

Zaten protected override ifadesinden sonra birkez boşluğa tıklarsanız geçerli olayların listesini göreceksiniz.Olayı seçip Tab bastığınızda EventArgs kısımları otomatik yerleşecek... Duruma göre base.OnLoad() ifadesini başta veya sonda kullanabilirsiniz...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 12 Ağustos 2012, 15:55:37
Bir Sorum daha var.

1 byte uzunluğunda bir sayıyı  Hexadesimala çevirip bir texbox içerisine nasıl yazarım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 12 Ağustos 2012, 16:08:29
int i = 33 ;
            string binary = Convert.ToString(i, 2);
            string hex = Convert.ToString(i, 16);
            int binaryToInt = Convert.ToInt32(binary, 2);
            int hexToInt = Convert.ToInt32(hex, 16);

            MessageBox.Show(binary + "    " + hex + "    " + binaryToInt + "    " + hexToInt);
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 12 Ağustos 2012, 19:14:55
Teşekkürler Hocam Halletim
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 13 Ağustos 2012, 15:12:04
Ooo ne yaptınız yahu şu kadarcık kodu?

byte deger = 0x97;
textBox1.Text = deger.ToString("X2");

;D
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 13 Ağustos 2012, 15:39:09
Birini değil hepsini gösterdik..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 07 Eylül 2012, 11:58:01
Hocam merhaba.

C# omponetleri hakkında birkaç sorum olacaktı. C# da yeni nesneler naıl yapılır. Kısaca bunu anlatabilirmisiniz. Örneği farklı anahtarlar, Butonlar yapmak istiyorum. Veyahut mesela Led benzeri nesneler.. Bunlar resimlemi yapılıyor.

Bu arada devexpress yüklü. Devexpressle gelen çeşitli komponetler var.
Klasik formların dışında Daha çok görselliği olan formlar nasıl hazırlanır Buda anlatılırsa güzel olur.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 07 Eylül 2012, 14:14:38
Elbette. İstediğinize Custom Control deniyor. İnternette bolca örnek var. Buton, progressbar gibi kontroller yapmak istiyorsanız bunlar benim yaptıklarımdan bazıları:
[IMG]http://img209.imageshack.us/img209/821/wpf2.png[/img]
[IMG]http://img338.imageshack.us/img338/4/wpf1.png[/img]
[IMG]http://img805.imageshack.us/img805/3905/cs3.png[/img]
[IMG]http://img189.imageshack.us/img189/3708/cs2m.png[/img]
[IMG]http://img837.imageshack.us/img837/9936/cs1dz.png[/img]
İlk ikisi WPF ile, diğerleri ise Sadece C# ile hazırlandı. Bu tarz kontrolleri siz de yapabilirsiniz. Eğer küçük led benzetimi yapmak istiyorsanız en kolay yolu bir picturebox ve iki resim : yanık durumu ve sönük durumu... C# konusunda sıkıntınız olursa yardımcı olurum. ÖM atabilirsiniz...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 07 Eylül 2012, 16:01:26
bu wpf işine yavaştan bende giriş yaptım. bu 3d yüzünden. gayet kullanışlı. adamlar asp gibi code ve design ayrımı yapmışlar. design için xml benzeri bir dosya kullanılırken kod bölümünde vb yada c# kullanılıyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: EMG81 - 07 Eylül 2012, 19:17:02
Alıntı yapılan: fatih6761 - 07 Eylül 2012, 14:14:38
Elbette. İstediğinize Custom Control deniyor. İnternette bolca örnek var. Buton, progressbar gibi kontroller yapmak istiyorsanız bunlar benim yaptıklarımdan bazıları:
[IMG]http://img209.imageshack.us/img209/821/wpf2.png[/img]
[IMG]http://img338.imageshack.us/img338/4/wpf1.png[/img]
[IMG]http://img805.imageshack.us/img805/3905/cs3.png[/img]
[IMG]http://img189.imageshack.us/img189/3708/cs2m.png[/img]
[IMG]http://img837.imageshack.us/img837/9936/cs1dz.png[/img]
İlk ikisi WPF ile, diğerleri ise Sadece C# ile hazırlandı. Bu tarz kontrolleri siz de yapabilirsiniz. Eğer küçük led benzetimi yapmak istiyorsanız en kolay yolu bir picturebox ve iki resim : yanık durumu ve sönük durumu... C# konusunda sıkıntınız olursa yardımcı olurum. ÖM atabilirsiniz...

Üzerinde Hello yazan buton çok güzel olmuş.. Tebrikler, başarılar :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 07 Eylül 2012, 19:30:42
Teşekkürler. Hello yazan buton Vista tarzı Glass Button olarak geçiyor. WPF de yapması çok basit.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 29 Eylül 2012, 14:36:39
Merhaba arkadaşlar bir sorum olacaktı... C# ' ta seriporttan veri gelmişmi diye kontrol etmenin bir yolu varmıdır vardır ama nasıldır :) :)

Daha bu iş için çok baştayım . Kendi kafamca şöyle birşey yaptım . 10mS ' lik bir timer kurdum . Her 10mS'de bir seriport verisini okuyorum . Bunu ekrana yazıyorum . Fakat boş veride yazıyor. Veri gelmişmi gelmemişmi onu kontrol edip ekrana yazmayı nasıl yapabilirim :)

Yardımlarınızı bekliyorum...

Veriyi okumak için yazdığım kısım ...         string bilgi;

        private void timer1_Tick(object sender, EventArgs e)
        {
            bilgi = serialPort1.ReadExisting();
            textBox7.Text = bilgi;
        }



@Ulaga Hoca'nın bir örneği var fakat açıkçası anlayamadım. Kendim bu şekilde yazabildim . Biraz saçma geldi banada ama yeni başlayınca herşey doğru olmuyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Ömer KANAR - 29 Eylül 2012, 15:37:54
DataReceived event'ini kullanabilirsin.
ReceivedBytesThreshold'tan buffer'da kaç byte
biriktinde tetikleneceğini seçersin
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 29 Eylül 2012, 17:10:14
Alıntı yapılan: Ömer KANAR - 29 Eylül 2012, 15:37:54
DataReceived event'ini kullanabilirsin.
ReceivedBytesThreshold'tan buffer'da kaç byte
biriktinde tetikleneceğini seçersin

Ufak bir rutin yazmanız mümkünmü Hocam ?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 29 Eylül 2012, 17:13:05
serhat rutine gerek yok. serial port nesnesinin olaylarında "data recieved" var. oraya yazacaksın.
ama ozamanda "ben bu trehad da yapamam" der. onuda sonra konuşuruz.

mesaj birleştirme:: 29 Eylül 2012, 17:14:43

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

        }


mesaj birleştirme:: 29 Eylül 2012, 17:16:46

Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 29 Eylül 2012, 17:27:52
Muhittin Hocam Tamamdır :)

Teşekkür ederim ...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 29 Eylül 2012, 17:44:27
http://www.4shared.com/rar/sjOjaWyV/Serial_Chart_1.html (http://www.4shared.com/rar/sjOjaWyV/Serial_Chart_1.html)
serhat şurada seri porttan aldığım bilgileri grafik eden bir program olacak. işine yarayabilir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 30 Eylül 2012, 17:43:51
Alıntı yapılan: muhittin_kaplan - 29 Eylül 2012, 17:44:27
http://www.4shared.com/rar/sjOjaWyV/Serial_Chart_1.html (http://www.4shared.com/rar/sjOjaWyV/Serial_Chart_1.html)
serhat şurada seri porttan aldığım bilgileri grafik eden bir program olacak. işine yarayabilir.

Teşekkürler Hocam inceliyorum. Şimdi combobox olayları ile uğraştım sevmeye başladım . İşin pc kısmınında ayrı bir zevki var. Elimde 3axis sensör var bundan gelen bilgileri seriporttan alıp ekranda 3 boyutlu bir görsel üstünde bu hareketleri göstermek istiyorum biraz zor olacak gibi ama bakalım :)

Çok teşekkürler İyi çalışmalar.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 03 Ekim 2012, 16:41:28
Merhaba değerli PicProje Ailesi ;

Benim için zor bir soruyla yine karşınızdayım aklıma birşeyler geliyor fakat veri tabanı olayı giriyor sanırım . İşlemcide olsa eeprom ile sorun çözülür ama pc ortamında kafama oturtamadım.  Şöyle bir program yazmak istiyorum .

Program güncel saat ve tarih bilgilerini tutacak . Ben bir butona basınca bu saat ve tarih bilgisini gönderecek.
Sonrasında ise bir data gönderecek . Fakat bu data ile ilgili şöyle birşey var . Bu data hiç bir zaman aynı olmayacak. 16 bitlik bir değere kadar çıkabilecek. Bu kısmı biraz daha detaylandırayım .

Programı çalıştırdım . Sistem 16 bitlik bir id tanımlayacak kendi içinde . Ve gönder butonuna basınca saat , tarih ve id bilgisini gönderecek.
Programdan bir daha gönder butonuna basarsam saat , tarih gönderecek . id bu sefer farklı olacak .
Sistem açılıp kapansa dahi aynı id' yi tekrar göndermeyecek . Bunu nasıl yapacağım konusunda bir bilgisi olan varmıdır. Neleri araştırmam gerekir.
Şimdiden teşekkür ederim ...

İyi çalışmalar.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: mufitsozen - 03 Ekim 2012, 17:01:52

.NET 4.5

Namespace:  System.Windows

UIElement.Uid Property
Başlık: Ynt: Aceminin C# sorulari
Gönderen: serhat1990 - 03 Ekim 2012, 17:29:58
Alıntı yapılan: mufitsozen - 03 Ekim 2012, 17:01:52
.NET 4.5

Namespace:  System.Windows

UIElement.Uid Property

Teşekkürler Mufit Hocam.

Hocam çok az açmanız mümkünmü c# konusunda çok yeniyim . Yazdıklarınıza baktım fakat pek anlamadım açıkçası.

İyi çalışmalar.

Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 02 Ocak 2013, 11:18:32
c# ile ilgili bir problemim var

Form üzerinde bir değişiklik yaptığım zaman formda güncellenmiyor. Şöyleki forma yeni bir text veya buton eklediğimde formu çalıştırdığımda görünmüyor. Hep eski haliyle kalıyor. Projeyi komple kapatıp yeniden açtığımda son yaptığım değişiklikler kaydedilmemiş oluyor.

Problem ne olabilir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: JKramer - 02 Ocak 2013, 12:21:24
Formu çalıştırmaktan kastettiğiniz nedir? F5 ile debug yaparken yapılan değişiklikler görünmüyor mu?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 02 Ocak 2013, 13:22:07
Hocam Şöyle sorun. Forma diyelim bir buton veya textbox ekledim. Bu yaptığım değişiklikler hiç kaydedilmiyor. Yaptığım tasarımı çalıştırdığımda son yaptıklarım formda görünmüyor.

2 adet buton vardı. Bu butonların adını değiştirmiştim. Ondan sonra ne olduysa oldu. Ama bir yol buldum sanırım. Butonlarla ilgili tüm bilgileri silmem lazım.

Edit;

1 saattir denemediğim yöntem kalmadı...  >:( >:( Neyseki daha tasarımın başında olduğu için silbaştan başladım.


Bir sorumdaha olacak. Biraz komplexs bir konu gerçekten. Bu aralar görüntü işleme ile uğraşıyorum. C# ve opencv nin hazır görüntü işleme kütüphanelerini kullanarak görüntü işleme üzerine bir çalışma yapacağım. . Open cv kütüphanelerini kullanabiliyorum. Amacım bilgisayara bağlı olan kameraları bir combobox içerisinde listelemek. Kullanıcının kamera seçmesine olanak sağlamayı hedefliyorum.

Bununla ilgili pek kaynak bulamadım açıkçası

burada bişeyler var ama c++ da yazılmış. Aynısını c# a uyduramadım bir türlü.
http://stackoverflow.com/questions/9276350/how-do-i-get-a-list-of-webcam-devices-using-opencv (http://stackoverflow.com/questions/9276350/how-do-i-get-a-list-of-webcam-devices-using-opencv)

Bu konuda çalışma yapan varmı?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 02 Ocak 2013, 16:35:34
C++ ile yazılması sorun değil ki. Zaten mantık aynı, OOP. Sadece bir Wrapper Class yazarak kolayca halledebilirsiniz. DLL fonksiyonları için DllImportAttribute kullanmak en kolayı...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 02 Ocak 2013, 16:58:44
Hocam dediğinizi pek anlayamadım.

Bana ne yapmam gerektiğini birazdaha açık yazabilirmisiniz.

C++ için yazılmış olan kodda kullanılan fonksiyonları C# da bulamıyorum. Bende opencv 2.1 var. önceki mesajımda verdiğim linkte 2.3 kullanılmış. Acaba sürümlemi alakalı?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 03 Ocak 2013, 01:17:30
Hocam, bulamadığınız fonksiyonlardan bahsediyorum, C# da sınıflarda olmayan ama yerel olarak derlenmiş dinamik bağlantı kütüphanelerinde ( kısace Native DLLs ) bulunan fonksiyonlar, C# da DllImport ile eklenebilir. Buna Platform Invoke denir ve P/Invoke olarak gösterilir. Red Gate firması bu P/Invoke'lar ve kullanımı için özel bir site açtı : http://www.pinvoke.net/ (http://www.pinvoke.net/) Burada Windows için yerel DLL'lerdeki birçok API'yi görebilirsiniz. Kullanımı şöyledir:

using System.Runtime.InteropServices;
//.. diğer using deyimleri ve son olarak ana sınıfın içinde şu şekilde tanımlıyoruz:
[DllImport("dll_adi_veya_yolu.dll")] // Bazı özel durumları karşılamak için zaman zaman NamedParameters'de eklenir.
static extern (donus_tipi) (fonk. adi) (alacagi_parametreler);

// Örneğin
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

Bu fonksiyonu doğrudan kullanabilirsiniz. OpenCV için de eğer C++ bilginiz ve API Reference dökümanları elinizde varsa bu şekildeki metodları bir sınıf altında toplayabilirsiniz. Bu tür sınıflara Wrapper Classes denir.
Umarım yardımcı olmuştur. İyi çalışmalar...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 03 Ocak 2013, 08:23:11
Teşekkür ederim. Bi araştırayım dediğinizi
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 09 Mart 2013, 22:54:36
Arkadaşlar merhaba.

Bilgisayara bağlı Com bağlantı noktalarını combobox içerisinde listemelek istiyorum.

internette birkaç örnek buldum fakat çalıştıramadım.

SerialPort.GetPortNames() Fonksiyonunu çalıştıramadım. 

Bunun kullanımı nasıl?

Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 09 Mart 2013, 23:04:41
Hocam SerialPort.GetPortNames fonksiyonu string[] türünden döndürür. Yani fonksiyonun dönüş değerini bir string dizisine atıp combobox'a ekleyeceksiniz.
// Port names
string[] availablePorts = SerialPort.GetPortNames();
this.comboBoxPortNames.Items.AddRange(availablePorts);

Seri portlarla ilgili basit bir uygulama yazmıştım SerialPort sınıfının özellikleri ve kullanımını görebiliyosunuz isterseniz öm ile yollayabilirim..
İyi çalışmalar hocam...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 09 Mart 2013, 23:10:13
Hocam iyi olur. Daha önce seri portu hiç kullanmadım c# ile. Sağa sola bakarak ilerliyorum...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Gökhan BEKEN - 10 Mart 2013, 00:40:12
buraya yüklerseniz bende faydalanabilirim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 10 Mart 2013, 11:28:23
Bir Sorum olacak.
Seri porttan bir dizi halinde iki farklı data alıyorum. Örnek olarak sıcaklık bilgisi olabilir.

Gelen Data Formatı şöyle

"A-25B002C045" gibi

Mcu dan bu formatta data gönderiyorum. Ben bilgisayar tarafında gelen stringi bu tanımlayıcılara göre ayırmak istiyorum.

Mesela "A" karakteri görüldüğü zaman A karakterinden sonra gelen 3 karakteri yani -25 i bir stringer yerleştireceğim. Aynı şekilde "B" karakteri geldiği zaman ondan sonra gelen 3 karakteri yani 002 değerini ayrı bir stringe yerleştireceğim. Aynı durum "C" tanımlayıcısı içinde geçerli. Burada Sayısal değerlerden önce gelen Karakterler sadece tanımlayıcı, gelen datanın ne olduğunu bana bildirecek.

MCU tarafından gönderilen data formatını değiştirebilirim.

Bu dediğim işlemi Nasıl yaparım?

Başlık: Ynt: Aceminin C# sorulari
Gönderen: semih - 10 Mart 2013, 12:08:46
Alıntı yapılan: Mucit23 - 10 Mart 2013, 11:28:23
Bir Sorum olacak.
Seri porttan bir dizi halinde iki farklı data alıyorum. Örnek olarak sıcaklık bilgisi olabilir.

Gelen Data Formatı şöyle

"A-25B002C045" gibi

Mcu dan bu formatta data gönderiyorum. Ben bilgisayar tarafında gelen stringi bu tanımlayıcılara göre ayırmak istiyorum.

Mesela "A" karakteri görüldüğü zaman A karakterinden sonra gelen 3 karakteri yani -25 i bir stringer yerleştireceğim. Aynı şekilde "B" karakteri geldiği zaman ondan sonra gelen 3 karakteri yani 002 değerini ayrı bir stringe yerleştireceğim. Aynı durum "C" tanımlayıcısı içinde geçerli. Burada Sayısal değerlerden önce gelen Karakterler sadece tanımlayıcı, gelen datanın ne olduğunu bana bildirecek.

MCU tarafından gönderilen data formatını değiştirebilirim.

Bu dediğim işlemi Nasıl yaparım?

Gelen komutu tamamen string olarak bir değişkene atadıktan sonra split fonksiyonu ile dediğin işlemi yapabilirsin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 10 Mart 2013, 13:06:05
mucit

bu iş için instr ve mid left substring gibi string işlemlerini kullanman gerekir.

TextBox1.Text = [text]
            Dim textStartAdress As Short
            Dim textStopAdress As Short
            Dim TextLeght As Short

            textStartAdress = (InStr(Me.TextBox1.Text, "P")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "B")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                PVoltage = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label3.Text = PVoltage
            End If

            textStartAdress = (InStr(Me.TextBox1.Text, "B")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "C")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                BVoltage = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label5.Text = BVoltage
            End If

            textStartAdress = (InStr(Me.TextBox1.Text, "C")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "T")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                Curr = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label7.Text = Curr
            End If

            textStartAdress = (InStr(Me.TextBox1.Text, "T")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "A")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                ExTemp = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label9.Text = ExTemp
            End If

            textStartAdress = (InStr(Me.TextBox1.Text, "A")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "F")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                Dim AbsorpVoltage As Single = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label11.Text = AbsorpVoltage
            End If


            textStartAdress = (InStr(Me.TextBox1.Text, "F")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "L")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                Dim FVoltage As Single = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label13.Text = FVoltage
            End If

            textStartAdress = (InStr(Me.TextBox1.Text, "L")) + 1
            textStopAdress = InStr(Me.TextBox1.Text, "E")
            TextLeght = textStopAdress - textStartAdress

            If textStartAdress > 0 And textStopAdress > textStartAdress Then
                Dim LVoltage As Single = (Mid(TextBox1.Text, textStartAdress, TextLeght)) / 100
                Me.Label15.Text = LVoltage
            End If


mesaj birleştirme:: 10 Mart 2013, 13:07:36

Yukardaki kod Vb.net ile yazılmıştır.

ilk satırlarda dikkat edersen P ve B arasını almak için hemen altında B ile C arasını almak için Başlangıç ve bitiş sayılarını buluyorum
(instr ile) ve aradaki bilgileri alıp değişkene atıyorum. (Mid ile)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 10 Mart 2013, 14:16:34
@Mucit23 hocam buyrun örnek uygulama:
http://s3.dosya.tc/server/mv4EKg/SerialPortDemo.zip.html (http://s3.dosya.tc/server/mv4EKg/SerialPortDemo.zip.html)
@muhittin_kaplan hocam C#'ta fonksiyonların isimleri biraz daha farklı. Şöyle basit bir kod yazabiliriz:

string[] ParseSerialPacket(string packet)
{
  string[] result = new string[3];
 
  const splitCharA = 'A';
  const lengthCharA = 3;
 
  const splitCharB = 'B';
  const lengthCharB = 3;
 
  const splitCharC = 'C';
  const lengthCharC = 3;
 
  int indexOfA = packet.IndexOf(splitCharA, 0);
  result[0] = packet.Substring(indexOfA, lengthCharA);
 
  int indexOfB = packet.IndexOf(splitCharB, 0);
  result[1] = packet.Substring(indexOfB, lengthCharB);
 
  int indexOfC = packet.IndexOf(splitCharC, 0);
  result[2] = packet.Substring(indexOfC, lengthCharC);
 
  return result;
}

Tabi bu kodlama 10 üzerinden 1' zor alır :) Mantığı çözebilin diye bu şekilde yazdım. Mantığı çözdükten sonra zaten kendiniz kodu iyileştirirsiniz...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 10 Mart 2013, 14:26:55
hocam kodlamada her işin kolayı vardır. benim verdiğimi öğrencim bana verse kalırdı :)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 10 Mart 2013, 19:29:33
Hocam aslinda sabah ufak bir kod parçası yazdım. indexof fonksiyonu ile gelen string içerisinde tanimlayici araması yaptım. Sonra tanimlayıcı kaçinci sirada ise o siradan itibaren datalari alip diziye yerleştirdim.

Bunu yine başka bir programdan gördümüştüm. Çat pat çalıştı ama sürekli exeption aliyorum. Pek mantiğida aklima yatmamisti zaten.

Eve gidince size yazdiklarimi göstereyim.

Seri port nesnesinin data recieved fonksiyonuna her bir karakter geldiğindemi event gönderiliyor. Buna göre kendim bir fonksiyon yazmayı deneyeceğim..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: semih - 10 Mart 2013, 19:37:21
Alıntı yapılan: Mucit23 - 10 Mart 2013, 19:29:33
Hocam aslinda sabah ufak bir kod parçası yazdım. indexof fonksiyonu ile gelen string içerisinde tanimlayici araması yaptım. Sonra tanimlayıcı kaçinci sirada ise o siradan itibaren datalari alip diziye yerleştirdim.

Bunu yine başka bir programdan gördümüştüm. Çat pat çalıştı ama sürekli exeption aliyorum. Pek mantiğida aklima yatmamisti zaten.

Eve gidince size yazdiklarimi göstereyim.

Seri port nesnesinin data recieved fonksiyonuna her bir karakter geldiğindemi event gönderiliyor. Buna göre kendim bir fonksiyon yazmayı deneyeceğim..

Ne yapmak istediğini tam anlamadım. Ama bende seri port ile çalışıyorum. İşlemciden birden fazla veri geldiğinde bu verileri ayırt edip farklı yerlere yazdırıyorum ve bunun için data revieved fonksiyonunu kullanmadım. Çünkü kullandığımda her karakter geldiğinde farklı değerler çıkartıyordu. Onun yerine şu şekilde bir kodu timer_tick fonksiyonuna yazarak sorunu çözdüm.

gelen = Convert.ToString(serialPort1.ReadExisting()); //Gelen veri içinde sayılarda bulunduğu için böyle bir dönüştürme kullandım.
            label2.Text = gelen.Split(' ')[0];// Boşluk karakterini gördüğünde veriyi böl. İlk böldüğü veri 0 numarasını alacaktır.
            if (gelen.Split(' ').Length > 1)//Eğer böldüğün veri birden fazla karakter içeriyorsa
                label4.Text = gelen.Split(' ')[1];//Birinci karakteri label4'e yaz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 10 Mart 2013, 21:55:59
Mucit tekbir karekter yada komple string gelme olayını
gönderdiğin dataya göre ve aldığın yerdeki kullandığın fonksiyona göre değişir.
eğer gönderdiğin yerde /r/n var sa

mySerialPort.ReadLine

ile alırsan komple string i alırsın.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Mart 2013, 00:02:30
Hocam benim yazdığım kodlar bunlar.

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            RxString += serialPort1.ReadExisting();
            this.Invoke(new EventHandler(string_index));
        }

        private void string_index(object sender, EventArgs e)
        {
            int xstart = RxString.IndexOf('X');
            int ystart = RxString.IndexOf('Y');
            int zstart = RxString.IndexOf('Z');

            if (xstart != -1)
            {
                Xaxis = RxString.Substring(xstart + 1, 3);
                label7.Text = Xaxis;
            }
            if (ystart != -1)
            {
                Yaxis = RxString.Substring(ystart + 1, 3);
                label8.Text = Yaxis;
            }
            if (zstart != -1)
            {
                Zaxis = RxString.Substring(zstart + 1, 3);
                label9.Text = Zaxis;
                RxString = "";
            }
        }


Mantıken çalışması lazım. Sürekli Nezamanki data gelmeye başlıyor ozaman sürekli exception hatası alıyorum.

Aldığım hata budur.
(http://postimg.cc/image/7kvjaxva5/full/)
image upload (http://postimg.cc/)
Burada ne demek istiyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 11 Mart 2013, 00:10:48
serialPort1.ReadExisting
yerine readline yapsana.

muhtemel hatan
xstart tan başla 3 karekter al diyorsun. ya 1 karekter varsa
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Mart 2013, 00:17:11
Alıntı yapılan: muhittin_kaplan - 11 Mart 2013, 00:10:48
muhtemel hatan
xstart tan başla 3 karekter al diyorsun. ya 1 karekter varsa

Hocam Readline ı da denerim.

sorun dediğiniz gibi ya 1 karakter varsa?

Onuda çözdüm.

MCU da tüm dizi sonuna ; koydum.

sonra data recieved de şöyle bir değişiklik yaptım.

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {   
            RxString += serialPort1.ReadExisting();
            int temp = RxString.IndexOf(';');
            if (temp != -1)
            {
                this.Invoke(new EventHandler(string_index));
                RxString = "";
            }
        }

Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 11 Mart 2013, 00:18:55
yahu öyle yapma
readline ı koyduğunda /r ye bakıyor.
sen mcu ya gönderdiğin array a /r koy. burada readline yap

Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Mart 2013, 00:32:23
yok hocam dediğiniz gibi alamadım.

mcuda dediğiniz gibi dizisonunaa \r koydum.

c# dada dediğiniz değişikliği yaptım. Gelen giden yok
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 11 Mart 2013, 00:35:09
MCU kodunun array oluşturma ve gönderme bölümünü yazarmısın


mesaj birleştirme:: 11 Mart 2013, 00:38:01

ben \n koymuşum  düzeltme \n zayten newline ya

sprintf (Deger,"P%2.2fB%2.2fC%2.2fT%2.2fA%2.2fF%2.2fL%2.2fE\n................................);
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Mart 2013, 09:00:06
Ben bu şekilde gönderiyordum.

               sprintf(ubuffer,"X%03hdY%03hdZ%03hd\r",(short int)xaxis,(short int)yaxis,(short int)zaxis);
               Rs232_SendData(ubuffer);

Sanırım \n koymam gerekiyor..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 11 Mart 2013, 09:16:12
evet \n koy.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Mart 2013, 10:40:07
Tamam Hocam çalıştı şimdi. Artık Sıkıntısız bir şekilde data alıyorum.

Yalnız problemmi dir pek anlayamadım ama C# da programı test ettiğim de pc programının seri port ile bağlantısını kestiğim zaman bilgisayar yazılımı donuyor. Bunun için ne gibi önlemler alınabilir. (Programcılık adına Programın Donmasına kilitlenmesine karşı olmazsa olmazlar)

Birde şunu sorayım. Combobox içerisinde herhangi bir şey ekli olup olmadığını nasıl anlarım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 11 Mart 2013, 14:21:45
hata denetimi yaptır.
try catch ile

combobox un içeriğinde herhangi bir eleman varmı yokmu diye bakmak için

combox.item.count değerine bak.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 12 Mart 2013, 14:36:24
Muhittin hocam merhaba,

Formu açıp kapayınca bazen bu hatayı alıyorum.

(http://postimg.cc/)
host images (http://postimg.cc/)

Bu nedir?

Hocam Seri portta bağlantıyı kesince program donuyor. Bunu önlemek için ne yapmalıyım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 12 Mart 2013, 16:26:57
Hocam Exception furlatmasının sebebi Form kapanırken DataReceived olayının tetiklenmesi. Bildiğiniz gibi girdi/çıktı işlemlerini çekirdek yönetiyor, sizin EventHandler fonksiyonunuz çekirdek tarafından çağrılıyor, bir de bakılıyor ki Thread sonlanmış .Böylece hata fırlatılıyor. Bunu çözmek için OnClosing olayını override etmelisiniz.

protected override void OnClosed(CancelEventArgs e)
{
    try
    {
        if (serialPort.IsOpen) // Port açıksa, kapatmayı unutma
            serialPort.Close();
    }
    catch (Exception) { }

    base.OnClosing(e);
}

Burada mesela kapatma sırasında bir hata oluşursa e.Cancel = true yapabilirsiniz. Böylece form kapanmaz. Kapatma iptal olur.
İyi çalışmalar...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 12 Mart 2013, 21:27:07
hocam peki seri port bağlantısını kesince programın donma ması için ne yapabilirim.

Herzaman olmuyor ama %70 oluyor.

tahminimce arka planda şöyle olaylar gerçekleşiyor.

Seri porttan data alındığı sırada biz baglantyı kesmeye çalışıyoruz. Seri port elemanıda arada veri iletişimi varken hattı kapayamıyor. Veri paketinin bitmesini bekliyor. Dolayısıyla kasılıp kalıyor. Ara sıra kapatma işlemi paket arasına denk geldiği için sorun olmuyor.

Ben seri port bağlantısını kapama dan önce seri port elemanını aradaki veri iletişimini kesmesi için uyarmalıyım.

Fatih hocam tahminim dogruysa eğer nasıl bir çözüm üretebiliriz
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 12 Mart 2013, 22:02:20
Hocam ReadLine'ın olduğu satırı şöyle değiştirin:

try
{
    RxString += serialPort1.ReadLine();
}
catch (TimeoutException) { }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 13 Mart 2013, 00:03:39
Hocam yok başka bir problem var.

data  alma kısmında gerekli değişiklikleri yaptım ama düzelen birşey olmadı.

protected override void OnClosed(CancelEventArgs e)
{
    try
    {
        if (serialPort.IsOpen) // Port açıksa, kapatmayı unutma
            serialPort.Close();
    }
    catch (Exception) { }

    base.OnClosing(e);
}


Buradaki yapıyıda bir türlü çalıştıramadım. OnClosed fonksiyonunun FormClosed Fonksyonundan farkı nedir.
böyle bir hata alıyorum.
Error 1 'PC_Program.Form1.OnClosed(System.ComponentModel.CancelEventArgs)': no suitable method found to override

Ama kesinlikle problem sizin dediğiniz sebebten kaynaklanıyor. Çünkü Seri port Bağlantısı açık ve data geliyorken bağlantıyı kesmeden önce aradaki seri port kablosunu çekip veri akışını kestikten sonra seri portu kapatırsam sıkıntı olmuyor.

Çok mecbur kalırsam eğer seri portu kapatmadan önce işlemciye data göndermeyi kesmesini söyleyeceğim. Ama bu sorunu çözmez. Bunun dışında başka ne yapabilirim?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 13 Mart 2013, 00:36:23
Hocam hata benim yanlış yazmamdan kaynaklanıyor galiba :)

protected override void OnClosing(CancelEventArgs e)

OnClosed değil OnClosing olacaktı. Bir de böyle deneyin...
Not : Form'un Closed olayından farkı yok, sadece yazması daha kolay. Hem override etme olayını da görmüş olursunuz diye yaptım.
İyi çalışmalar...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 13 Mart 2013, 09:37:57
closed da formun tüm bileşenleri hafızadan atılırken closing de atılmadan önce bu olay işletilir.
closing işlemi yapılırken genelde

mesajbox(program kapatılsın mı) yapar sonrasında kapatırım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 13 Mart 2013, 10:59:35
Yok Hocam çözüm olmadı. Ben bahsettiğim işlemi deneyeceğim. Data alışverişinden MCU'nun haberi olsun. Durduk yere veri göndermesin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 13 Mart 2013, 14:46:40
Muhittin Hoca bana kızacak belki ama ben data alımını yine eskisi gibi yaptım. Bu şekilde exceptionlardan kurtuldum. Birde bağlantıyı kesmeden önce mcu ya veri göndermeyi kesmesini söyledim.

Şimdilik dediğim gibi exception almıyorum ama yine donma oluyor. Nasılki Seri port close fonksiyonunu çalıştırdığım zaman sıkıntı oluşmaya başlıyor..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 13 Mart 2013, 20:58:51
mucit form closing olayına

MCU veriyi kes
seriportu kapat
Formu Kapat.

desene
Başlık: Ynt: Aceminin C# sorulari
Gönderen: f15eagle - 23 Nisan 2013, 19:00:30
benimde bir kaç sorum var,
C# da çok yeniyim, hatta ilk uygulamam.  Foruma biraz baktım seri porttan veri alıp yazdırmayı çözdüm. Daha sonra bir örnek kod buldum verileri yazdırması daha güzel oldu. Şimdi gelen verilerden grafik çizdirmem lazım.

public partial class Form1 : Form
{
       
   public Form1()
   {
      InitializeComponent();

            foreach (string s in SerialPort.GetPortNames())
            {
                portnum_text.Text = s;
            }
    }

        private void connect_port_Click(object sender, EventArgs e)
        {
            try
            {
                seri_port.PortName = portnum_text.Text;
                seri_port.BaudRate = Convert.ToInt32(baud_text.Text);
                seri_port.Open();
                close_port.Enabled = true;
                open_port.Enabled = false;
                baud_text.Enabled = false;
                portnum_text.Enabled = false;

            }
            catch
            {
                MessageBox.Show("Bağlantı kurulamadı.");
            }

        }

        private void close_port_Click(object sender, EventArgs e)
        {
            seri_port.Close();
            close_port.Enabled = false;
            open_port.Enabled = true;
            baud_text.Enabled = true;
            portnum_text.Enabled = true;
     
        }

       

        public void seri_port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

            updateReceivedText(seri_port.ReadExisting());
         
        }
        delegate void updateReceivedTextDelegate(string newText);
        private void updateReceivedText(string newText)
        {
            if (received_text.InvokeRequired)
            {
                // worker thread
                updateReceivedTextDelegate del = new updateReceivedTextDelegate(updateReceivedText);
                received_text.Invoke(del, new object[] { newText });
            }
            else
            {
                System.Threading.Thread.Sleep(5);
                received_text.Text += newText;
               
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            received_text.Clear();
        }
   
    }


seri porttan gelen veri şu şekilde,


Benim programda veriler yalnız şu şekilde geliyor, proteusdaki gibi olmuyor. Üst üste biniyor gelenler. Bunu nasıl düzeltebilirim
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 24 Nisan 2013, 22:52:40
Alıntı yapılan: f15eagle - 23 Nisan 2013, 19:00:30
benimde bir kaç sorum var,
C# da çok yeniyim, hatta ilk uygulamam.  Foruma biraz baktım seri porttan veri alıp yazdırmayı çözdüm. Daha sonra bir örnek kod buldum verileri yazdırması daha güzel oldu. Şimdi gelen verilerden grafik çizdirmem lazım.

public partial class Form1 : Form
{
       
   public Form1()
   {
      InitializeComponent();

            foreach (string s in SerialPort.GetPortNames())
            {
                portnum_text.Text = s;
            }
    }

        private void connect_port_Click(object sender, EventArgs e)
        {
            try
            {
                seri_port.PortName = portnum_text.Text;
                seri_port.BaudRate = Convert.ToInt32(baud_text.Text);
                seri_port.Open();
                close_port.Enabled = true;
                open_port.Enabled = false;
                baud_text.Enabled = false;
                portnum_text.Enabled = false;

            }
            catch
            {
                MessageBox.Show("Bağlantı kurulamadı.");
            }

        }

        private void close_port_Click(object sender, EventArgs e)
        {
            seri_port.Close();
            close_port.Enabled = false;
            open_port.Enabled = true;
            baud_text.Enabled = true;
            portnum_text.Enabled = true;
     
        }

       

        public void seri_port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

            updateReceivedText(seri_port.ReadExisting());
         
        }
        delegate void updateReceivedTextDelegate(string newText);
        private void updateReceivedText(string newText)
        {
            if (received_text.InvokeRequired)
            {
                // worker thread
                updateReceivedTextDelegate del = new updateReceivedTextDelegate(updateReceivedText);
                received_text.Invoke(del, new object[] { newText });
            }
            else
            {
                System.Threading.Thread.Sleep(5);
                received_text.Text += newText;
               
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            received_text.Clear();
        }
   
    }


seri porttan gelen veri şu şekilde,
(Resim gizlendi görmek için tıklayın.)

Benim programda veriler yalnız şu şekilde geliyor, proteusdaki gibi olmuyor. Üst üste biniyor gelenler. Bunu nasıl düzeltebilirim
(Resim gizlendi görmek için tıklayın.)
Hocam seri_port.ReadExisting() fonksiyonu tamponda bulunan veriyi döndürür. Bunun yerine ReadLine deneyebilir misiniz?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: f15eagle - 25 Nisan 2013, 14:04:33
Fatih hocam teşekkürler, tam yapmak istediğim işlem oldu.
enkoder tam tur attığında verileri ekrana yazıyor.

Netteki C# örnek ve kitapları genellikle bilgisayar üzerinde işlemler için, biraz daha bize yönelik serialport işlemleri için bir kitap yazı öneriniz var mı acaba ?
Daha yeni başladım nasıl devam etmeliyim.

Bide gelen verilerden 1 kanalı seçip zamanla grafiğini çizmem gerekiyor.
http://hasan-bozkurt.blogspot.com/2009/01/c-ile-grafik-izimi.html (http://hasan-bozkurt.blogspot.com/2009/01/c-ile-grafik-izimi.html)
Linkdeki örneği buldum, uyarlamaya çalışıyorum.
Başka grafik işlemi örnekleri var mı ?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 25 Nisan 2013, 23:57:30
Alıntı yapılan: f15eagle - 25 Nisan 2013, 14:04:33
Fatih hocam teşekkürler, tam yapmak istediğim işlem oldu.
enkoder tam tur attığında verileri ekrana yazıyor.

Netteki C# örnek ve kitapları genellikle bilgisayar üzerinde işlemler için, biraz daha bize yönelik serialport işlemleri için bir kitap yazı öneriniz var mı acaba ?
Daha yeni başladım nasıl devam etmeliyim.

Bide gelen verilerden 1 kanalı seçip zamanla grafiğini çizmem gerekiyor.
http://hasan-bozkurt.blogspot.com/2009/01/c-ile-grafik-izimi.html (http://hasan-bozkurt.blogspot.com/2009/01/c-ile-grafik-izimi.html)
Linkdeki örneği buldum, uyarlamaya çalışıyorum.
Başka grafik işlemi örnekleri var mı ?
Hocam açıkçası kitap öneremem, çünkü hiçbirini okumadım, kusura bakmayın :(
Grafik çizdirmek için MS Charts yani verdiğiniz linkteki örneği kullanabilirsiniz. Kullanımı basittir, internette bulabilirsiniz...
Kolay gelsin, iyi çalışmalar.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 15 Mayıs 2015, 11:08:33
Selamlar,

Uzun bir aradan sonra tekrardan C# 'a bakmam gerekti. USB den ADC verisi alıp Line Graph üzerinde göstermem gerekiyor. Visual Studioda biraz formu hazırladım. Char yerleştirdim ve türünü Line olarak ayarladım.

Fakat X ve Y ekseninin değerlerini bir türlü sabit aralıkta yapamadım. Yapmak istediğim LDR den okuduğum Lüx değerini Açısal olarak gösterebilmek.  Nasıl ayarlayacağımı bilmiyorum. Mesela X eksenini 0-360 arası 1'er birim aralıklarla , Y eksenini de 0-50000 arası sabit bir şekilde ölçeklendirmek istiyorum. Y ekseninin ölçeği değişmeyecek.

Ayarları nasıl yapacağımı bulamadım. Yardım edebilecek varmı

mesaj birleştirme:: 15 Mayıs 2015, 12:20:13

X ve Y ekseni için ölçeklendirmeyi kod ile yaptım.

            chart1.ChartAreas[0].AxisY.Maximum = 50000;
            chart1.ChartAreas[0].AxisX.Maximum = 360;

Ayarlardan nasıl yapacağımı bulamadım bir türlü.

Şimdi X eksenini deki grid sayısını arttırmak istiyorum. X eksenini 360 birim uzunluğunda ayarladım ama ekranda 3 tane grid var sadece. Bunun sıklığını nasıl arttırırım.

Chart'ın okadar çok ayarı varki hangisi benim işimi görüyor nerde bulamıyorum bir türlü.

Mesela formu ilk çalıştırdığımda Chart'ın görünümü aşağıdaki gibi oluyor.
(http://postimg.cc/)
jpg upload (http://postimg.cc/index.php?lang=turkish)
X ve Y ekseni ve Gridler görünmüyor ama chart'a veri gönderdiğimde görünmeye başlıyor. Bunuda çözmem lazım. Formu çalıştırır çalıştırmaz X ve Y ekseni görünür halde olması lazım.

Yardım ederseniz sevinirim.

Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 15 Mayıs 2015, 14:04:10
mucit ben vb de yapmıştım ama aynıdır.
http://www.muhittinkaplan.com/2012/02/13/stm32f4-discovery-kit-ve-ivmeolcer/ (http://www.muhittinkaplan.com/2012/02/13/stm32f4-discovery-kit-ve-ivmeolcer/) incele bira birşeyler çıkartırsın.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 15 Mayıs 2015, 14:23:54
Abi senin kodu inceledim. Senin kullandığın chart'da da aynı problem var. İlk çalıştığı zaman chart'a veri göndermediğimizde klavuz çizgiler eksenler vs görünmüyor.

Bunun yanı sıra chart ta X ekseninde bir türlü istediğimi yapamadım. Anlatabilmek için word üzerinde bir grafik oluşturdum.
(http://postimg.cc/)
bmp resim yükle (http://postimg.cc/index.php?lang=turkish)

Sormak istediğim C# da chart kullanırken X eksenini nasıl resimdeki gibi yaparım? Y eksenine göndereceğim değerin en yüksek değeri 50000 felan ama bu eksen otomatik olsada olur. Sabit olmayadabilir. Fakat X ekseni sabit olması lazım.

Ne yapmam lazım. Bilgili arkadaşlardan ricam yol gösterin lütfen.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 15 Mayıs 2015, 14:37:08
sen bunu propertes penceresinden yapmak mı istiyorsun, kodla yaptın sanırım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 15 Mayıs 2015, 14:39:55
Hocam yukarıda verdiğim grafiği word de çizdim.

Ondan önceki mesajımda ise kod ile x ekseninin uzunluğunu ayarlayabildiğimi söyledim. Properties penceresinden yapamadım bir türlü.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 15 Mayıs 2015, 14:40:23
mucit resimleri göremiyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: ERdow - 15 Mayıs 2015, 14:51:04
Daha güzel yöntemi nedir bilmiyorum, lakin boş chart göstermek için, chart'a boş bir seri ekleyebilirsiniz, rengi transparan adınıda boş yaparsanız görünür. Sonra ilk gerçek veriniz geldiğinde bunu temizleyip onu ekleyebilirsiniz.

   
            Series dummy = new Series();
            dummy.ChartType = SeriesChartType.Point;
            dummy.Color = Color.Transparent;
            dummy.LegendText = " ";
            dummy.Points.Add(2);
            chart1.Series.Add(dummy);


Chart'ın önceden belli ise (ya da herhangi bir ekseni örneğin X) interval ayarları ile oynanıp birşeyler yapılabilir sanırım. Örneğin 360 maximumunuz için birde minimum 0 ayarlarsanız aşağıdaki kod X eksenini 9 alana böler

            chart1.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.FixedCount;
            chart1.ChartAreas[0].AxisX.Interval = 40;


Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 15 Mayıs 2015, 15:00:29
Abi bu resim görünmüyormu


Grafiğimin X eksenini Bu resimdeki gibi yapmak istiyorum. Bu resimde Word de çizdim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 15 Mayıs 2015, 20:08:27
Güncell

Arkadaşlar ciddi anlamda yardıma ihtiyacım var.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: SERRO EFE - 16 Mayıs 2015, 09:05:27
Bir kaç projemde zedgraph kullanmıştım memnun kaldım. İstediğin özellik varmı yokmu bilmiyorum ama deneyebilirsin.
Birisi senin isteğine benzer bişey yapmış.
http://jenyay.net/ZedGraph/ManyYAxis (http://jenyay.net/ZedGraph/ManyYAxis)

http://sourceforge.net/projects/zedgraph/ (http://sourceforge.net/projects/zedgraph/)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: peko - 16 Mayıs 2015, 10:33:02
Alıntı Yap
            chart1.ChartAreas[0].AxisY.Maximum = 50000;
            chart1.ChartAreas[0].AxisX.Maximum = 360;

Ayarlardan nasıl yapacağımı bulamadım bir türlü.

Şimdi X eksenini deki grid sayısını arttırmak istiyorum. X eksenini 360 birim uzunluğunda ayarladım ama ekranda 3 tane grid var sadece. Bunun sıklığını nasıl arttırırım.

Chart'ın okadar çok ayarı varki hangisi benim işimi görüyor nerde bulamıyorum bir türlü.

Tavsiyem chart'ın ayarları ile uğraşmak istemiyorsan, en azından işine yarayacak kadar kısmını kontrol altına al.

Grid'a bak, ben bunun üzerinde ne yapmak isteyeceğim ?

...

Bunlara metod yaz.

Gelen verilerle de Event'leri tetikle. Mesela normalde ekranda x birimde 10 line olması gerekiyorsa, 0,x birimde 5 line olmasını sağla gibi..

işin sonunda senin grid'i şekillendirmek için herhangi bir manuel veri girmiyor olman gerek.

Kısacası; aynı osiloskop ekranının gelen sinyale göre kendini kalibre etmesi şeklinde bir kontrol  elde et.

Sonrasını zaten sen gelen veri yapıyor..
Sen bir daha grid'le uğraşmıyorsun.

Kontrolsüz güç, güç değildir  ::)

Kolay gelsin..
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 16 Mayıs 2015, 23:32:46
Anladığım kadarıyla Visual Studio'nun kendi grafikleri yetersiz. Bazı ayarları mutlaka kod ile vermek gerekiyor. Properties bölümünden yapılsa bile kısıtlı oluyor.
Ben bi ara dev express felan kurdum onla ilerleyeyim dedim ama onunlada fazla karıştırmak istemedim.

Aslında kodla birşeye kadar getirdim. Grafiğin ufak tefek ayrıntıları kaldı.



Sormak istediğim birkaç şey kaldı.
Sağ üst köşedeki Series1 yazısını kaldıramıyorum. Ayarlar bölümünde o yazının değiştirildiği kısımdan yazıyı değiştirebiliyorum. Yazıyı komple sildiğimde tekrardan Series1 yazısı yerine geliyor. Kaldırmanın bir yolu varmı?

X ekseninde ise Min Value ve Max_value değerleriyle X ekseninin değerlerini verebiliyorum. 
            chart1.ChartAreas[0].AxisX.Minimum = 0;
            chart1.ChartAreas[0].AxisX.Maximum = 180;
Buradaki ayarlardan minimun değeri -90, Max değer +90 yapsam tam istediğim gibi oluyor. Fakat bu sefer başka bir problem oluşuyor. X eksenine nokta eklemem gerektiğinide doğrudan X ekseninde -90 dan başlaması gerekekirken 0 dan başlıyor. Aşağıdaki resim açıklayıcı olur sanırım.


Burada Chart her bir veri gönderdiğimde X ekseninin sayacı artıyor. Yeni bir veri gönderdiğimde sonraki noktaya veri ekleniyor. Chart ilk açıldığında X ekseninin tutulduğu sayacın değerini -90 yaparsam sanırım olur ama bunu nasıl yaparım bilmiyorum. Biraz karıştırayım.

mesaj birleştirme:: 16 Mayıs 2015, 23:47:29

Tamam chart1.Series[0].Points.AddXY(X_val,Y_val); işimi görüyor. Kordinatlarla ilgili problem kalmadı.
Sağdaki Series yazısını kaldırabilirsek süper. Olmasada sağlık olsun.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: fatih6761 - 17 Mayıs 2015, 00:00:41
Alıntı yapılan: Mucit23 - 16 Mayıs 2015, 23:32:46
Sağdaki Series yazısını kaldırabilirsek süper. Olmasada sağlık olsun.
Bunun için şöyle bir şey demişler:
http://stackoverflow.com/questions/7404244/how-to-hide-the-series-name-from-showing-in-charting-control (http://stackoverflow.com/questions/7404244/how-to-hide-the-series-name-from-showing-in-charting-control)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 17 Mayıs 2015, 00:29:35
Evet Bu işlemde halloldu. Çözüm" IsVisibleInLegend property to false" Satırında. @ fatih6761 Teşekkürler.

Son olarak Formu ilk çalıştırdığımda Chart aktif olmuyordu. Ancak bir veri gönderince aktif hale geliyor. Bunun bir çözümü varmı? Ben form açılırken boş bir veri göndererek geçici olarak hallettim ama hiç aklıma yatmadı.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: blacklogic - 17 Mayıs 2015, 04:58:34
Daha fazla.degistiremezsin sonucta o grafik bir win apidir ve o toolun sana sundugu bellidir. Sifirdan da yazmayi hic denemedik. Daha iyi grafik icin telerik eklentisi kullanabilirsin ama paralidir. 1 ay ucretsiz paketle işini vorebilirsin. Birde wpf var onu arastirabilirsin ama xaml bilmen gerekir.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 26 Mayıs 2015, 00:45:21
Arkadaşlar C# da USB ile Pic tarafına veri göndermeye çalışıyorum. Usb library'si için Aşağıdaki linkteki usbHidPort isimli dll yi kulanıyorum.
https://320volt.com/pic18f4550-ccs-c-usb-termometre/ (https://320volt.com/pic18f4550-ccs-c-usb-termometre/)
Pic tarafına veri gönderirken hangi fonksiyonu kullanıyoruz. Kullanımı nasıl? Bulamadım bir türlü
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 26 Mayıs 2015, 13:08:36
USB işini hallettim.

Değişken işide tamam. Tür belirtmek gerekiyormuş.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 19 Şubat 2016, 10:56:47
Selamlar

C# da chart ayarları konusunda biraz yardıma ihtiyacım var.

Chart'ın türünü Spline yaptım. Line chart olacak. 24 saatlik veriler var. Şu anda bu verileri charta basıyorum.

Chartın X eksenini zaman eksenini yapmak istiyorum. X eksenindeki giridlere sırayla label nasıl eklerim. Örneğin Chartın x ekseninin 1 saat aralıklarla 24 parçaya böleyim. Label ler ile bunu belirteyim.

Bunu nasıl yaparım?

mesaj birleştirme:: 19 Şubat 2016, 11:36:35

X ekseninin max ve min değerleriyle oynayarak chartı istediğim gibi yaptım.

Yalnız X eksenindeki değerleri düzenleyemiyorum. X eksenindeki zaman değerlerini düzenlesem tamam olacak.
Değerlerin zaman olarak görünmesi için Series kısmında XvalueType değerini time şeklinde ayarladım. Tam istediğim gibi oldu. Fakat X eksenindeki değerleri değiştiremiyorum.

Zilyon tane ayarı var bu chartın. X eksenindeki değerleri nasıl düzenlerim bilgisi olan var mı?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 19 Şubat 2016, 11:50:29
Veriyi çizelgeye nasıl yazıyorsunuz?

mesaj birleştirme:: 19 Şubat 2016, 12:05:33

İstediğiniz böyle bir şey mi?

private void Form1_Load(object sender, EventArgs e)
        {
            chart1.ChartAreas[0].AxisX.Interval = 1;
            chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -90;
            var dateStr = "02/19/2016 00:00:00 AM";
            DateTime dt = DateTime.ParseExact(dateStr, "MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
           

            for (int i = 0; i < 24; i++)
            {
                TimeSpan ts = new TimeSpan(i, 0, 0);
                dt = dt.Date + ts;
                this.chart1.Series["V"].Points.AddXY(dt.ToString("HH:mm"), i*3);
            }
        }


Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 19 Şubat 2016, 12:44:24
Hocam X eksenindeki değerleri öyle olacak.

chart1.Series[0].Points.Add(sayi); fonksiyonu ile charta yeni bir veri ekliyorum. Yalnız bendeki veri sayısı 1440. 24 Saat boyunca 1 dakika aralıklarla ölçüm alınıyor.

Örnek sayısı biraz fazla. O kısmı nasıl ayarlaycağım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 19 Şubat 2016, 14:26:15
Interval değeriyle oynayıp kaç eşit parçaya bölmesini istediğini ayarlayabilirsin.

1440/24 = 60

Aşağıdaki program da teorik olarak her dakikada bir veri yazıyor.

private void Form1_Load(object sender, EventArgs e)
        {
            chart1.ChartAreas[0].AxisX.Interval = 60;
            chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -90;
            var dateStr = "02/19/2016 00:00:00 AM";
            DateTime dt = DateTime.ParseExact(dateStr, "MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
           

            for (int i = 0; i < 24; i++)
            {
                TimeSpan ts = new TimeSpan(i, 0, 0);
                dt = dt.Date + ts;
                for (int k = 0; k < 60; k++)
                    this.chart1.Series["V"].Points.AddXY(dt.ToString("HH:mm"), i + 10);               
            }
        }


Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 19 Şubat 2016, 14:39:42
Hocam sağolun şimdi hallettim sayenizde. Tam anlamıyla istediğim gibi oldu Teşekkür ederim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 20 Şubat 2016, 11:33:20
Hocam  bir sorum daha olacak.

En son verdiğiniz örnek gayet iyi çalışıyor. Fakat şöyle bir sorun var. Charta bir kere veri basıp sonra farklı bir dosya açıp tekrar grafik çizmeye kalksam çizmiyor. Chart'da eski grafik aynen duruyor. Acaba Charta yeni bir data basmadan önce eskisini silmek mi gerekiyor?

Aktif çalışan kodlar aşağıdaki gibi.
 
        private void button2_Click(object sender, EventArgs e)
        {
            string temp = "";
            int i = 9;
            FileStream fs = new FileStream(DosyaYolu, FileMode.OpenOrCreate, FileAccess.Read);
            StreamReader sw = new StreamReader(fs);

            var dateStr = "02/19/2016 00:00:00 AM";
            DateTime dt = DateTime.ParseExact(dateStr, "MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

            //chart1.Series.RemoveAt(0);

            for(int saat=0;saat<24;saat++)
            {

                TimeSpan ts = new TimeSpan(saat+1, 0, 0);
                dt = dt.Date + ts;

                for (int dak = 0; dak < 60; dak++)
                {
                    string yazi = sw.ReadLine();

                    i = 9;
                    temp = "";
                    while (yazi[i] != 'C')
                    {
                        temp += yazi[i];
                        i++;
                    }

                    float sayi = float.Parse(temp);

                    sayi = sayi / 10;

                    chart1.Series[0].Points.AddXY(dt.ToString("HH:mm"), sayi);
                }

            }

            sw.Close();
            fs.Close();
           
        }
           


Sorun ne olabilir? Yukarıdaki kodlar çalışınca dosyadan veriler okunup ekrana sırayla basılıyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 20 Şubat 2016, 15:21:50
Tam olarak anlamadım. Yapmak istediğiniz şey; mesela button1'a basınca chart1'e bir dosyadan okuduğum sıcaklık verisini çizsin. Button2'ye basınca da yine aynı chart1'e başka bir dosyadan okuyacağım gerilim değerini çizsin, gibi bir şey mi?

chart1.refresh() methodunu kullanabilirsiniz tekrar çizdirmek için.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 20 Şubat 2016, 16:33:53
Yok hocam öyle değil

buton_1 e basınca chart1 e txt dosyasindan veriyi okuyup basıyorum. Sonra başka bir txt dosyası açıyorum.  Tekrar buton_1 e basınca yeni dosyadaki veriler charta basilmiyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 20 Şubat 2016, 19:11:20
Değerleri güncelledikten sonra chart1.refresh() methodunu kullanmayı denedin mi? Bu method chart'ın yeni değerlerle tekrar çizilmesine zorlar.

Yada öncesinde chart'ı aşağıdaki gibi temizleyebilirsin.

foreach(var series in chart1.Series)
{
    series.Points.Clear();
}


Bunlar da olmazsa sorununu gösteren minimum uzunlukta bir projeyi yollarsan akşam bakarım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 21 Şubat 2016, 10:37:10
Hocam eski noktaları silmek işe yaradı. Teşekkür ederim. Yeni veri göndermeden önce eskisini siliyorum verdiğiniz kod ile. Tekrardan teşekkürler.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 21 Şubat 2016, 14:42:56
Bir soru daha sormak istiyorum.

C# da formun ekran görüntüsünü resim olarak kaydetmek istiyorum. Biraz araştırdım internette ekran görüntüsü alan birkaç yazı buldum. Denedim yaptımda aslında ama kordinatlar tam uyuşuyor. Farklı yerlerin ekran görüntüsü alınıyor.

Ekran görüntüsü alıp kaydetmek için aşağıdaki kodları kullandım. Butona basınca Screenshot adında bir bitmap nesnesi oluşturuluyor. Ardından GFX.CopyFromScreen fonksiyonu ile ekran görüntüsü alınıyor. Yalnız parametrelerde yanlışlık olsa gerekki yanlış kordinatlar alınıyor.

        private void button3_Click(object sender, EventArgs e)
        {
            //Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height
            Bitmap Screenshot = new Bitmap(Form1.ActiveForm.Width,Form1.ActiveForm.Height);

            Graphics GFX = Graphics.FromImage(Screenshot);

            //Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size
            GFX.CopyFromScreen(Form1.ActiveForm.Location.X,Form1.ActiveForm.Location.Y,0,0,Form1.ActiveForm.Size);

            SaveFileDialog resim = new SaveFileDialog();
            resim.ShowDialog();

            Screenshot.Save(resim.FileName + ".jpg");

        }


Bu  GFX.CopyFromScreen fonksiyonuna gönderilen parametreler nasıl olmalı?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Karamel - 21 Şubat 2016, 15:43:11
https://www.youtube.com/watch?v=DJCKMMDcUI0 (https://www.youtube.com/watch?v=DJCKMMDcUI0)

sanirim bu isinizi gorebilir hocam? (muzigin sesi rahatsizlik verebilir)
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 21 Şubat 2016, 15:58:23
CopyFromScreen (https://msdn.microsoft.com/en-us/library/6yfzc507(v=vs.110).aspx) e bakarsan gözden kaçan ama çok önemli bir detay var.

Alıntı YapPerforms a bit-block transfer of color data, corresponding to a rectangle of pixels, from the screen to the drawing surface of the Graphics.

Yani bu methoda aktaracağın parametreler senin bilgisayar ekranındaki koordinatlar olmalı, formdaki değil.

Peki, form'daki koordinatımın ekranda neresi olduğunu nasıl bulacağım dersen;

PointToScreen (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.pointtoscreen(v=vs.110).aspx) methodu var.

Diyelim ki formumuzda bir picturebox olsun ve butona bastığımızda bunun ekran görüntüsünü almak isteyelim.

İlk satırda picturebox'ın sınırlarını bulduktan sonra ikinci satırda da bilgisayar ekranındaki koordinatlarını buluyoruz. Gerisi resim alma ve kaydetme.

private void button1_Click(object sender, EventArgs e)
        {
            Rectangle bounds = pictureBox1.Bounds;
            Point location = pictureBox1.PointToScreen(Point.Empty);

            using(Bitmap myBitmap = new Bitmap(bounds.Width, bounds.Height))
            {
                using(Graphics g = Graphics.FromImage(myBitmap))
                {
                    g.CopyFromScreen(location, Point.Empty, bounds.Size);
                }
                myBitmap.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }

Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 21 Şubat 2016, 17:04:15
Selamlar. Şimdi videoya bakıyordum.

Hocam bende picturebox yok. Doğrudan hafızada bir bitmap oluşturup o bitmap'ı kaydetmem gerekir.

Anladığım kadarıyla copyfromscren sadece  bilgisayar ekranında işe yarıyor. Dolayısıyla formun bilgisayar ekranındaki  kordinatlarını bulmam gerek. PointToScreen fonksiyonunu form için nasıl kullanırım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Karamel - 21 Şubat 2016, 17:17:11
ustadim. size tam olarak ne lazim? videodaki adam. new bitmap olusturarak form un screenshot ini aliyor iste?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: vitruvius - 21 Şubat 2016, 17:17:56
Picturebox'lı örnek vermemin sebebi belli bir alandaki görüntüyü yakalamak istersen diyeydi. Form görüntüsünü yakalamak istiyorsan Control.DrawToBitmap (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.drawtobitmap(v=vs.110).aspx)'i kullanabilirsin.

private void button2_Click(object sender, EventArgs e)
        {
            var myForm = Form.ActiveForm;
            using (var myBitmap = new Bitmap(myForm.Width, myForm.Height))
            {
                myForm.DrawToBitmap(myBitmap, new Rectangle(0, 0, myBitmap.Width, myBitmap.Height));
                myBitmap.Save("form.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 21 Şubat 2016, 17:55:54
PictureBox'ı anlamamıştım aslında ama şimdi olayı anladım gibi.

Teşekkürler @vitruvius, Teşekkürler @Karamel
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 09 Ağustos 2017, 17:15:46
Selamlar

c# ile ilgili ufak bir sorum olacak
C# 'da  DateTime.Now.ToLongTimeString(); yapısı ile string olarak "21:14:32" formatında anlık saat bilgisini alıyorum. Ben bunu byte byte almak istiyorum. Örneğin Saat bilgisini 1 Byte, Dakika bilgisini 1 Byte, ve Saniye bilgini 1 Byte olacak şekilde nasıl alabilirim?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Hadi - 09 Ağustos 2017, 17:23:26
Alıntı yapılan: Mucit23 - 09 Ağustos 2017, 17:15:46
Selamlar

c# ile ilgili ufak bir sorum olacak
C# 'da  DateTime.Now.ToLongTimeString(); yapısı ile string olarak "21:14:32" formatında anlık saat bilgisini alıyorum. Ben bunu byte byte almak istiyorum. Örneğin Saat bilgisini 1 Byte, Dakika bilgisini 1 Byte, ve Saniye bilgini 1 Byte olacak şekilde nasıl alabilirim?


byte saat   = Convert.ToByte(DateTime.Now.Hour);
byte dakika = Convert.ToByte(DateTime.Now.Minute);
byte saniye = Convert.ToByte(DateTime.Now.Second);
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 10 Ağustos 2017, 15:15:38
@Hadi Teşekkürler
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 28 Ekim 2018, 22:27:39
Selamlar. Konuyu hortlatacağım.

c# da küçük bir yazılım yapıyorum. USB den data almam gerekiyor belirli periyotlarla. Datanın ne zaman geleceği belli değil fakat ben forumdan çıkarken data gelirse yaptıım yazılım aşağıdaki gibi bir hata veriyor ve donuyor.



Bu hata nedir? Nasıl önlerim?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: tunayk - 28 Ekim 2018, 23:45:20
Formdan çıkmadan önce usbhid nesnesinin onDataReceived olayını düşürmelisiniz. Ayrık thread ile işlendiği için form kapandığında kendiliğinden iptal olmuyor.
Öte yandan bu bölüme try-catch eklerseniz sorun kalmaz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 02 Nisan 2020, 18:10:50
Selamlar

Basit birşey belki ama yapamadım. C# da progressBar üzerine Yüzde olarak progressBar değerini yazdırmak istiyorum. İnternette anlatılan birkaç yöntemi denedim ama olmadı. Bunu nasıl yaparım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: tunayk - 02 Nisan 2020, 19:29:57
Visual Studioda hazır bir çözüm yok maalesef. Hazır komopnentler var Infragistics vb. ama kullanmaya değer mi? Ben kullanmıyorum.  Altenatif olarak kendin yapabilirsin.

Bu tip, komponentin sağlamadığı görsel öğeler için genel yöntem aynıdır.  Komponentin Paint vb. olayı içinde kendi ilave yapmak istediğin metin vb. komponentin üzerine çizmendir.  Örneğin, ProgressBar nesnesi için;

  System.Drawing.Graphics g = progressBar1.CreateGraphics();
  g.DrawString("text", this.Font, new SolidBrush(Color.Black), 10, 2);

şeklinde çizim yapabilirsin.

Bu yöntemi kullandığında aslında illaki progress bar da kulanmak zorunda değilsin. Sıradan bir picturebox üzerinde veya label üzerinde aynı şeyi yapabilirsin.
           
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 03 Nisan 2020, 00:54:16
Teşekkürler biraz uğraşayım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 10 Nisan 2020, 21:28:39
Selamlar

Şöyle bir processing form oluşturmaya çalıştım



Form üzerindeki progress bar değerini yaptığım işlemler arttıkça değerini güncellemek istiyorum. Bunun için harici bir form oluşturdum. Bu oluşturduğum Form üzerindeki progressbar elemanını public yaparak Form1 yani Ana form üzerinden ulaşabiliyorum şuanda. Progressbar formunu aktif ettikten sonra yine form1 üzerinde progressbar.value değerini güncelleyerek progressbar değerini değiştirebiliyorum. Ama bu şekilde sanki kulağı tersten tutmak gibi oldu. Pek düzgün çalıştığını da söyleyemem.

Amacım Form1'de bu oluşturduğum form da bir update event tarzı bir olay oluşturmak. Bununla birlikte Form'den bazı sayısal veriler göndermem gerekiyor.  Bu işlemi efektif bir şekilde nasıl yaparım?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: tunayk - 10 Nisan 2020, 23:04:07
Çokta tersten sayılmaz. Bu işin muhtelif yolları vardır.
1- Senin Yaptığın gibi,
2- Ana formda statik event oluşturursun.  Progresbarı taşıyan formada bu eventin hendlerini eklersin.  Ana formda ilerleme oldukça, eventi tetklersin.  Gösterge formuda event geldikçe kendini günceller.
3- Ana formda statik value değişkeni tanımlarsın. Gösterge formunda bir timer ile bu değeri sürekli okur ve PB yi güncellersin
4-Gösterge için form işine girmezsin.  Ana formun üzerine senin gösterge formu dizynında bir panel eklersin. Normalde bu panelin Visible özelliğini false tutarsın.  Lazım olduğunda, True yapıp, PB değerini doğrudan kendi işleminden güncellersin.

gibi hayal gücünle sınırlı çeşitli yollar var.  Thread kullanıyorsan  2ve 3. maddede dikkat!
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 10 Nisan 2020, 23:44:39
C#'ı sadece yaptığım mikroişlemci tabanlı uygulamalara arayüz yazmak için kullanıyorum. Hep ihtiyaçtan ufak tefek uygulamalar yaza yaza belli bir seviyeye getirdim. Fakat şu thread işlemlerini öğrenemedim henüz. Bu konuda baya eksiğim var.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: berat23 - 11 Nisan 2020, 00:34:41
ben olsam harici form yerine main form üzerinde progressbar yapardım. formdaki tüm görüntüleri ise event değil, mesela 10hz de koşan bir thread üzerinden güncellerdim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: muhittin_kaplan - 11 Nisan 2020, 10:33:00
...
Başlık: Ynt: Aceminin C# sorulari
Gönderen: foseydon - 11 Nisan 2020, 19:05:51
abi event-thread falan neden uğraşıyorsunuz ya. koy bir timer güncelle gitsin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 11 Nisan 2020, 19:53:24
@muhittin_kaplan Abi dur şimdi hele karıştırma ortalığı, Sıfırdan başlamayalım bi daha  :D

Cevap yazan arkadaşlara teşekkürler. Sonradan timer ile yaptım. Bu şekilde daha iyi oldu.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 24 Nisan 2020, 00:29:58
Selamlar

ArrayList sınıfı ile global dinamik dizi tanımlıyorum. Amacım double türünden değerleri hafızada tutmak. Boyut kullanıcının gireceği parametrelere göre belirleneceği için Arraylist sınıfını kullanmayı uygun gördüm.

Arraylist.add ile diziye eleman ekliyorum sorun yok fakat diziye eklediğim elemanın N. elemanına doğrudan ulaşmanın bir yolunu bulamadım. Bu nasıl yapılır?

Array list dışında global dinamik dizi kullanmanın başka bir yolu varmı? Her yerde Arraylist çıkıyor
Başlık: Ynt: Aceminin C# sorulari
Gönderen: brandice5 - 24 Nisan 2020, 10:52:16
[] operatörünü denedin mi?

veya sadece list kullanabilirsin;

List<double> myList = new List<double>();
myList.Add(1.1);
double i = myList[0];
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 26 Nisan 2020, 00:00:30
Alıntı yapılan: brandice5 - 24 Nisan 2020, 10:52:16[] operatörünü denedin mi?

veya sadece list kullanabilirsin;

List<double> myList = new List<double>();
myList.Add(1.1);
double i = myList[0];


Teşekkürler bu yöntem işime yaradı.

Bir soru daha sorayım genel olarak. C# da elde ettiğim bazı verilerle excell de basit bir tablo oluşturuyorum.

C#'da ToString sınıfında double bir verinin yazılış formatını ayarlarken aşağıdaki gibi bir yapı kullanıyorum.

sayımız 15.543634 gibi birşey olsun

sayi.ToString("0.000");

yukarıdaki yapıda yazdırınca olması gerektiği gibi 15.543 değerini yazdırmış oluyorum. Normalde sıkıntı yok. Fakat Bu yapıyı kullanarak elde ettiğim verileri excel tablosuna aktardığımda, excelin hücreleri biçimlendirirken kafası karışıyor.  :-[

Normalde Excel sayıları 0,000 şeklinde ondalıklı olarak algılıyor. TR yazım formatında ondalık ayracı olarak virgül kullanılıyor. Fakat EU ve EN formatında ondalık ayracı olarak nokta kullanılıyor. Dolayısıyla ben excel deki hücreye 0.000 formatında bir yazma işlemi yaptığımda excel yazdığım veriyi bazen sayı bazen metin olarak algılıyor. Tabloda istemediğim farklı biçimler oluşuyor. Bunu önlemeye çalışıyorum

c# daki yazım formatını TR formatına çevirmeye çalıştım ama yapamadım. Excel deki formatı değiştireyim ne gelirse gelsin metin olarak algılasın dedim ama onuda beceremedim.

çıkamadım işin içinden. Nasıl çözeriz bu işi fikri olan var mı?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: tunayk - 26 Nisan 2020, 00:11:54
Excel'e aktarım yaptığın kütüphane önemli. Ancak doğru olanı Double veri double olarak, string veri string olarak aktarılmalı. Aksi halde dediğiniz sorunlar oluşur.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: brandice5 - 26 Nisan 2020, 00:41:19
Şunu dene;

sayi.ToString("0.000").Replace('.', ',');
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 26 Nisan 2020, 00:43:53
Excel için
using Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;

sınıflarını kullanıyorum

Alıntı yapılan: brandice5 - 26 Nisan 2020, 00:41:19Şunu dene;

sayi.ToString("0.000").Replace('.', ',');


deneyeceğim. Teşekkürler
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 26 Nisan 2020, 01:07:19
Doğrusu:
using System.Globalization;

sayi.ToString("0.000", CultureInfo.CreateSpecificCulture("tr-TR"));
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 29 Nisan 2020, 23:06:29
Selamlar

Bu dediklerinizi denedim ama hiçbiri işe yaramadı.

İşin ilginci Excell'e verileri yazarken Nerde nasıl yazağı belli olmuyor Örneğin ilk 10 Satır 1.234 gibi yazarken sonraki 10 satırı 1,234 gibi bir format ta yazabilyor. Yazılacak metnin türünün kod'da belirtmem gerekiyor.

Excelde Sütüna sağ tıklayıp Hücreleri biçimlendir seçeneğiyle açılan pencerede sütün kategorisini Sayı, Metin Tarih gibi değerler seçebiliyor. İşte bunu kodda nasıl yaparım bulamadım doğru yöntemi.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 30 Nisan 2020, 10:47:41
Excel'in kafası karışmış galiba.
Ben bir projede şu kütüphaneyi kullandım. Hiç bir sorun yaşamadım.

http://mikesknowledgebase.com/

alternatif link:
https://mikesknowledgebase.azurewebsites.net/pages/csharp/exporttoexcel.htm
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 30 Nisan 2020, 11:12:04
Örnek kullanım da vereyim tam olsun:
public class klas1
{
 public int herhangibirsayi;
// burada verdiğimiz değişken isimleri excel'de kolon ismi olarak çıkacak (istersek değiştirebiliriz o ayrı)
public double baskabirsayi;
}
public class klas2
{
public string birstring;
}
public class klas3
{
  public DateTime birzaman;
}

// verilerimizi List<> yapısında tutuyoruz:
var list1 = new List<klas1>();
var list2 = new List<klas2>();
var list3 = new List<klas3>();

// bundan sonra listelerimize verilerimizi yazıyoruz..

list1.Add(new klas1() { herhangibirsayi=10, baskabirsayi=123.45 });
.
.
.

// en son excel belgesini oluşturuyoruz
try
{
System.Data.DataTable dt1 = ExportToExcel.CreateExcelFile.ListToDataTable(list1);
System.Data.DataTable dt2 = ExportToExcel.CreateExcelFile.ListToDataTable(list2);
System.Data.DataTable dt3 = ExportToExcel.CreateExcelFile.ListToDataTable(list3);

dt1.TableName = "tablo1"; // her bir tablo excelde sayfa (sheet) olarak çıkacak.
dt2.TableName = "tablo2";
dt3.TableName = "tablo3";


System.Data.DataSet ds = new System.Data.DataSet();

ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
ds.Tables.Add(dt3);

ExportToExcel.CreateExcelFile.CreateExcelDocument(ds, excelfilename);
}
catch (System.Exception ex)
{
System.Windows.MessageBox.Show("Excel dosyası oluşturmada hata oluştu..\r\nException: " + ex.Message);
return;
}
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 30 Nisan 2020, 14:29:26
@bocek hocam teşekkürler şimdi hallettim. Excel ile ilgili sorun kalmadı. Teşekkür ederim.

Başka bir sorunum var size danışayım. Uygulamamı tamamladım sayılır. Projeyi derleyip setup dosyası haline dönüştürüyorum. Kendi projeyi geliştirdiğim bilgisayarda sorun yok derlediği gibi çalışıyor. Fakat setup dosyasını başka bir bilgisayara atıp programı oraya kurduğumda programın bazı özellikleri çalışmıyor. Örneğin bir textboxa yazılması gereken veri yazılmıyor. Yada grafik çiziyorum grafik üzerindeki bazı işaretlemeleri yazmıyor. Buna benzer birkaç hata oluşuyor.

Grafikte devexpress toollarını kullanıyorum.

Textbox da sorun yaşamam beni çok şaşırttı. Form üzerinde birçok Textbox var sadece bir kısmı sorunlu çalışıyor.

Sorunlu bilgisayarda visual studio ve devexpress kurulu değil.

Neden olur böyle birşey fikir verebilecek olan var mı?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 30 Nisan 2020, 14:53:34
Program, kullandığı bazı kütüphane dosyalarını bulamıyor olabilir. Mesela devexpress'in bazı dll'leri yüklenmiyor olabilir.
VS Projesinde References'ta bulunan devexpress'e ait referansların üzerinde sağ tıklayıp Properties'lerine göz atın. Orada 'Copy Local' özelliği 'True' değilse derlemede kütüphane dosyasını exe'nin yanına kopyalamıyor demektir. Dolayısıyla setup bu dosyaları görmüyor ve kurulum içerisine dahil etmiyor olabilir.
Kesin sebep budur demiyorum ama bunu bir kontrol edin.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 30 Nisan 2020, 15:04:29
Sanırım burdan bahsediyorsunuz değilmi.

Devexpress tooları true idi ama sistem ile ilgili bazı dll parçacıkları false görünüyor. Bunları düzeltip tekrar deneyeceğim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: brandice5 - 30 Nisan 2020, 15:12:20
Eğer uygulaman EXE nin yanında bir veya daha fazla .net DLL gerektiriyorsa, tüm bu DLL dosyaları "ILMerge" ile EXE nin içine gömebilirsin. EXE boyutu biraz büyük olur ama sadece EXE yi taşıyarak programın heryerde çalışır.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 30 Nisan 2020, 15:19:35
Ya da şu olabilir.
Projenizde kullandığınız .NET Framework versiyonu hedef bilgisayarda yüklü değildir veya daha eski bir versiyon yüklüdür.
Project Properties'te Target Framework satırı vardır. Burada yazar .NET versiyonu. Aynı versiyon hedef blgisayarda da yüklü olmalıdır. Setup sırasında Microsoft'tan linkini verip yükletmelisiniz.
Örneğin 4.7.2 için:

https://support.microsoft.com/tr-tr/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 30 Nisan 2020, 15:54:58
Test yaptığım bilgisayarda Windows10 kuruluydu.. Windows 10 da bildiğim kadarıyla netframework standart olarak geliyor. Yani ekstra kurma gibi bir işlem yapılmıyordu. Emin değilim. Uygulama portable de olabilir aslında onu test etmem lazım.

@bocek dediğini kontrol edeceğim.

Aslında devexpress den yana da çok sorunum var. Bunu pc başına geçince anlatacağım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: foseydon - 01 Mayıs 2020, 16:06:03
.net framework uymsuzluğu olursa hiç açmaz. ondan değildir. muhtemelen kullandığınız kütüphanelerin(dll) kurulma sorunu. sizin bilgisayar kütüphaneler olduğu için sıkıntısız çalışıyor, yeni kurulan bilgisayarda kütüphaneler olmadığı için düzgün çalışmıyor. misal, textbox devexpress kütüphanesi tarafından sağlanıyorsa onu sağlayan dll kurulan bilgisayarda yoksa textbox'ta arıza çıkıyor. setup dosyasının içine o dll'leri de ekleyip kurulumda ilgili yerlere kurmanız lazım.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 04 Mayıs 2020, 13:05:09
Alıntı yapılan: foseydon - 01 Mayıs 2020, 16:06:03.net framework uymsuzluğu olursa hiç açmaz. ondan değildir. muhtemelen kullandığınız kütüphanelerin(dll) kurulma sorunu. sizin bilgisayar kütüphaneler olduğu için sıkıntısız çalışıyor, yeni kurulan bilgisayarda kütüphaneler olmadığı için düzgün çalışmıyor. misal, textbox devexpress kütüphanesi tarafından sağlanıyorsa onu sağlayan dll kurulan bilgisayarda yoksa textbox'ta arıza çıkıyor. setup dosyasının içine o dll'leri de ekleyip kurulumda ilgili yerlere kurmanız lazım.

Uygulama ayarlarında Net FrameWork Ayarı mevcut. Muhtemelen projeyi ilk oluşturduğum zaman benim bilgiayarımda kurulu sürüme göre projeyi oluşturdu. Bende dikkat etmedim ama net framework sürümü bende 4.6.1 di.

Proje ayarlarında NetFramework sürümünü seçebiliyorum


Buradaki sürümü daha eski bir sürüm seçersem ne olur?
Bildiğim kadarıyla Windows 10 ile birlikte Net Framework 4.5 standart olarak geliyor.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 04 Mayıs 2020, 14:25:53
Kodumun niye yanlış çalıştığını anladım sanırım. Çok basitmiş. Net frameWork sürümü ile ilgili değil sanırım.

Program içerisinde çok ufak 16x16pixel resimler var. Bu resimleri grafik çizdiğimde Legend iconu olarak kullanıyorum.

Program içinde Resim URL'si vererek programda iconun gözükmesini sağlıyorum. Ama URL verirken resimlerin benim pc deki konumunu veriyordum.

Legend1_Item.MarkerImage.Image = new Bitmap(@"C:\Users\my_pc\Dropbox\PC Software\PC_Software2017\PC_Application\PC_Application\Resources\Legend1.png");

Kendi bilgisayarımda çalışıyor elbet ama baka bilgisayarda bu kodlar hata veriyor doğal olarak. Kod büyüyünce gözümden kaçmış.

Bu şekilde 5-6 tane resim var bu resimleri exe içine gömüp kod içinden çağırmam gerekiyor. Bunu nasıl yapabilirim?
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 04 Mayıs 2020, 19:50:00
Ben şöyle yapıyorum:
Visual Studio'da ProjeIsmi.resx isimli proeje dosyasına çift tıklıyorum projedeki resource'lar açılıyor. Eklemek istediğim resimleri buraya sürükle-bırak yapıyorum böylece projeye resource olarak eklenmiş oluyor. Burada resource ismini istersem değiştiriyorum.
Dikkat edin proje dosyası olarak değil resource olarak eklemiş oluyorum.
Bundan sonra da
Images.GetBitmap(ProjeIsmi.ResminAdi) fonksiyonu ile istediğim yerde kullanıyorum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 04 Mayıs 2020, 20:52:31
Bende şöyle yaptım. Setup dosyası oluştururken ilgili resimleri de proje dosyasına ekledim. Dolayısıyla setup kurulurken Projenin kurulduğu yere benim resimleri atıyor otomatik olarak. Daha sonra program içinde programın kurulu olduğu dizini bulup, "Programın kurulduğu dizin\resim.jpg" şeklinde ilgili resmi çağırıyorum. Çalışıyor gibi ama uygun bir yöntem mi emin değilim.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: bocek - 04 Mayıs 2020, 21:04:20
Öyle de olur ama çok şık bir yöntem değil bence. Dediğimi yapın siz. Hem bu yöntemle ses, video vb. kaynakları da ekleyip rahatlıkla kullanabilirsiniz.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: Mucit23 - 04 Mayıs 2020, 21:36:45
Teşekkürler. Aynen dediğiniz gibi yaptım. Hem bu proje için hemde ileriki uygulamalar için işime yarayacak güzel bir yöntem öğrenmiş oldum.
Başlık: Ynt: Aceminin C# sorulari
Gönderen: foseydon - 05 Mayıs 2020, 00:55:02
iki yonteminde avantaji dezavantaji var. setup dosyasina ekleyip hedef bilgisayara kaynaklari(resim) atarsaniz, yazdiginiz baska programlarda da ayni kaynagi kullabilirsiniz. misal, projeniz 3-4 ayri promramciktan olusuyor hepsine ayri ayri resim gommez boyuttan kar edersiniz. dezavantaji, resimler kullanici tarafindan erisilebilir oluyor. silinirse yine portler.