Posts by: Burak Özkan

Sipariş Takip Formu!

Merhabalar,

Uzun zamandır siteme makale giremiyorum Haziran ayında tekrardan ‘Ayın Konusu’ konseptini başlatacağım yoksa siteye makale gireceğim. Haziran ayına kadar en az 3 makale ekleme hedefim var ama bakalım…

Arkadaşlar bir firma için yaptığım “Sipariş Takip” programının kaynak kodlarını sizlerle paylaşıyorum. (Tabiki firmanın haberi var :)) Programda eksikler, hatalar olabilir pek fazla geri bildirim alamadım. Programda yazıcı kontrolü, access veritabanı bağlantısı, stored procedure ve datagridview gibi kontrollerin kullanımı için fikir verebilir. Umarım sizler için faydalı olur.

Programın Kaynak Kodu için buraya, program için buraya tıklayınız.

Programdan resimler;

Son Durum…

Merhabalar,

Blogumun giriş şifresini bile unutma noktasına geldiğimi fark ettim ve yaptıklarım ve yapacaklarım hakkında kısa bir bilgi vermek istedim. En son gelen eleştirilerden bir taneside ‘sitenin girişinde uzun bir makale duruyor 2 aydır’, olunca bende en azından neden yazamadığımı bir açıklamak istedim.

İş – Okul yoğunluğunun arasına birde okulumda Mühendislik Kulübü Başkanlığı görevini üstlenince bu dönem çok yoğun geçiyor özellikle bu yıl kulüb olarak 7-8 Nisan 2010 tarihinde düzenleyeceğimiz ‘Mühendislik Günleri ’10’ etkinliği hazırlıkları vaktimizi aldı ama sanırım bu uğraşmalarımıza değecek gibi duruyor. Google’dan Microsoft’a, IBM’den AIRTIES’a kadar birçok firmanın katılacağı bu etkinliğin detaylı programını önümüzdeki hafta duyuracağım. Şimdilik sadece afişi ekliyorum :).

Ayrıca bu hafta DeveloperMania ekibinin düzenleyeceği 2 gün sürecek DeveloperMania.Net etkinliğininde bu vesileyle duyurmuş olayım. Nisan ayından itibaren bloguma artık yine düzenli olarak makale ekleyeceğim “Ayın Konusu” tekrar başlayacak, biraz daha idare etmenizi rica ediyorum sizlerden…

En kısa sürede tekrar görüşmek üzere…

C# Serial Port Bileşeni!

Siteme her gün bir makale eklemek istiyorum ama bir şekilde ne oluyorsa ekleyemiyorum. Okul beklediğimden de çok vaktimi aldı üstüne birde çalıştığım firmanın projeleri, okuldaki kulüp etkinlikleri derken bu zamana kadar makale ekleme fırsatım olmadı. Forumlarda gezindiğimde seri port ile ilgili birçok arkadaşın sıkıntısı oluyordu bende C#’ın ‘Serial Port’ bileşeni ile ilgili bir makale yazmak istedim. Şimdi bu bileşeni inceleyelim;

Yaptığımız yazılımlar bazen bir cihazla haberleşmek durumda kalabilir. Örnek olarak, bilgisayardan kontrol edebileceğiniz bir robot olabilir, ısı değeri okuyabileceğiniz bir sistem olabilir, kısacası bir sistemi bilgisayarınızdan kontrol etmek istiyorsanız serial port bileşeni sizin imdadınıza yetişiyor. Şimdi gelin bu sınıfın bazı faydalı fonksiyonlarını, olaylarını ve özelliklerini inceleyelim;

serialPort.BaudRate: SerialPort sınıfının BaudRate isimli özelliği bilgisayardan kontrol edeceğiniz sistem ile haberleşme esnasında ki veri iletişimi hızı. Bu özellik sistemden sisteme değişiklik göstermektedir. BaudRate için şunu söyleyebiliriz saniye gönderilen bit sayısı, eğer sisteminizle iletişim hızınız 9600 ise bilgisayarın seri portundan saniyede 9600 bit veri gönderip alabilirsiniz demektir. Bu yüzden eğer sisteminiz 19200 ise ve siz bilgisayar programından bu özelliği set etmez iseniz verileri sağlıklı bir şekilde gönderip alamayacaksınız çünkü bu özelliğin default değeri 9600.

serialPort.IsOpen: SerialPort sınıfının IsOpen isimli özelliği seri portun açık olup olmadığını bool türünden söyleyen bir özellik. Portu kullanmadan önce mutlaka açık olup olmadığını kontrol etmenizde fayda var eğer portu kullandıktan sonra kapatmadan tekrar açmaya çalışırsanız programınız hata verecektir.

serialPort.PortName: SerialPort sınıfının PortName isimli özelliği seri portunuzun ismini isteyecektir. Eğer bir çevirici kullanmadan direk seri porta bağladıysanız ‘COM1’, bir çevirici aracılığıyla ismini değişti ise ‘COM5’, ‘COM6’ vb. string türünden port isminizi girebilirsiniz.

serialPort.ReadTimeout: SerialPort sınıfının ReadTimeout isimli özelliği seri portun cihazdan kaç saniye boyunca cevap beklemesini istiyorsanız onu int türünden mili saniye cinsinden girmeniz gerekiyor. Eğer istediğiniz cihazdan 3 saniye boyunca cevap gelmez ise hata vermesi ise buraya serialPort.ReadTimeout = 3000 demeniz gerekiyor.

serialPort.WriteTimeout: SerialPort sınıfının WriteTimeout isimli özelliği ise seri portunuzun yazma işlemini kaç saniye boyunca sürdürmesini istiyorsanız yine int türünden mili saniye cinsinden bu özelliği set etmeniz gerekmektedir.

Serial Port sınıfının önemli bir kaç özelliğini inceledikten sonra şimdide bir kaç tane fonksiyonlarını inceleyelim.

serialPort.DiscardInBuffer(): SerialPort sınıfının DiscardInBuffer isimli fonksiyonu seri portunuzun bufferını temizlemek için kullanılan geri dönüş değeri ve parametresi olmayan fonksiyondur. Çok sık veri alış-verişi yaptığınız sistemlerde kullanmanız gereken bir fonksiyondur. Bazen haberleşme esnasında kullanmadığınız ama portda kalan verileriniz olabilir böyle bir durumda ikinci kez veri okumaya kalktığınız da hem o önceki okumada kalan verileri hem de cihazdan gelen doğru cevabı alırsınız. Bundan dolayıda doğru veri ile işlem yapmamış olursunuz.

serialPort.DiscardOutBuffer(): SerialPort sınıfının DiscardOutBuffer isimli fonksiyonu seri portunuzun veri gönderme aşamasındaki verileri temizlemek için kullanmanız gereken geri dönüş değeri ve parametresi olmayan fonksiyonudur.

serialPort.GetPortNames(): SerialPort sınıfının static GetPortNames isimli fonksiyonu bilgisayarınızdaki kullanılabilir portların isimlerini size string dizisi şeklinde söyleyen fonksiyondur. Eğer kullanıcınıza açık olan portları söylemek istiyorsanız bu fonksiyonu kullanabilirsiniz. Şöyle ki; formunuzda bir comboBox olduğunu düşünün ve bu comboBox’ın içini kullanılabilir portların isimleri ile doldurmak istiyorsanız. Bunun için iki yol;

Birinci Yol;

for (int i = 0; i < 30; i++)
{
   try
   {
      serialport.PortName = "COM" + i.ToString();
      serialport.Open();
      comNo_cb.Items.Add(serialport.PortName);
      serialport.Close();
   }
   catch (Exception)
   { continue; }
}

En fazla 30 tane port olduğunu düşünürüz ve bu portları tek tek açıp kapatırız, eğer sorunsuz bir şekilde açılırsa demek ki bu port kullanılabilir deriz ve hemen comboBox’a ismini yazarız. Birde bunu GetPortNames ile yapalım;

comNo_cb.Items.Add(SerialPort.GetPortNames());

2. yol hepimiz için daha hayırlı bir yol gibi duruyor :).

serialPort.Open(): SerialPort sınıfının Open isimli fonksiyonu seri portunuzu açmanıza yarar. Hemen şunu söylemekte fayda var bu işlemi yapmadan önce bir hata almak istemiyorsanız port adını, baudRate’inizi belirtmeyi unutmayın. Eğer port adını belirtmez iseniz veya yanlış yazarsanız hata alacaksınız.

serialPort.Read(byte[] buffer, int offset, int count): SerialPort sınıfının Read isimli fonksiyonu seri portunuzdan veri okumanızı sağlayan bir fonksiyondur. İlk parametresi byte türünden bir dizi, ikinci parametre dizinin kaçıncı indisinden itibaren veri yerleştireceğini, son parametresine ise kaç byte veri okuyacağınızı söylemeniz gerekiyor. İlk parametre char türünden bir dizide olabilir. Fonksiyonun geri dönüş değeri ise kaç byte okunduysa onu size int türünden söyler.

serialPort.ReadByte(): SerialPort sınıfının ReadByte isimli fonksiyonu seri portdan sadece bir byte okumanızı sağlayan fonksiyon. İsmi ReadByte olmasına rağmen geri dönüş değeri int türüdür ve size okunan değeri söyler.

serialPort.ReadExisting(): SerialPort sınıfının ReadExisting isimli fonksiyonu çağrıldığı zaman seri portdan okunabilen tüm veriyi size string türünden geri döndürür.

serialPort.ReadLine(): SerialPort sınıfının ReadLine isimli fonksiyonu seri portdan NewLine karakteri gelene kadar tanımladığınız ReadTimeout süresince bekler. Gelen veriyi size string türünden geri döndürür.

serialPort.Write(): SerialPort sınıfının Write isimli fonksiyonunun 3 tipi var bunlardan biri cihaza göndermek istediğiniz veriyi string türünden göndermenizi sağlıyor;

serialPort.Write("Bu veriyi cihaza yaz");

İkinci yöntem ise veriyi byte dizisi türünden göndermenizi sağlıyor.

byte[] gidecekVeri = new byte[] {0x30, 0x31, 0x32, 0x33, 0x34};
serialPort.Write(gidecekVeri, 0, gidecekVeri.Length);

Tahmin edeceğiniz gibi ilk parametre byte türünden bir dizi, ikinci parametre ise bu dizinin kaçıncı indisinden itibaren üçüncü parametredeki değer kadar seri portdan veri göndermenizi istiyor. Birde byte dizisinin yerine char dizisi ile gönderebileceğiniz üçüncü bir tipi bulunuyor.

serialPort.WriteLine(): SerialPort sınıfının Write isimli fonksiyonu göndermek istediğiniz veriyi string türünden parametre geçerek gönderebilirsiniz. Write fonksiyonundan tek farkı göndermek istediğiniz verinin sonuna ‘\n’ karakterini ekliyor olması.

Genel olarak serialPort sınıfının fonksiyonlarını ve özelliklerini inceledik, en kısa zamanda bununla ilgili bir uygulama yapıp siteme koymayı düşünüyorum.Seriport ile uğraşan arkadaşlar için umarım faydalı olmuştur.

Görüşmek üzere, iyi çalışmalar…

C# ile Output Parametreli Stored Procedure Çalıştırmak!

Arkadaşlar önceki makalelerimde C# ile stored procedure nasıl kullanıldığından bahsetmiştik. Bu makalede ise eğer stored procedure’de output veriye sahip bir parametre değişkenimiz varsa nasıl kullanacağımızdan bahsedeceğiz.

Aşağıdaki gibi bir stored proceduremuz olduğunu düşünelim;

create proc [dbo].[up_SifreOlustur]
@RandomID char(32) OUTPUT
as
begin
//--
end

 

Görüldüğü gibi Stored Procedure OUTPUT parametreli bir değişken alıyor bunun anlamı şu ‘Stored Procedure’ çalıştırıldıktan sonra @RandomID isimli değişkene bir değer yazılacak. Bunu C# programımızda kullanmak için ise aşağıdaki gibi bir yöntem izleyeceğiz;

SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
cnn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "[up_Sifre]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@RandomID", SqlDbType.Char, 32);
cmd.Parameters["@RandomID"].Direction = ParameterDirection.Output;
try
{
 cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
 MessageBox.Show(ex.Message);
 return;
}
tekKullanimlikSifre_tb.Text = (string)cmd.Parameters["@RandomID"].Value;

 

Kodumuzu inceleyecek olursak C# ile normalde nasıl stored procedure çalıştırıyorsak yine aynı şekilde çalıştırıyoruz fakat tek fark şu; cmd.Parameters.Add(“@RandomID”, SqlDbType.VarChar, 32); burada normalde .AddWithValue(…) deyip parametremizi geçiyorduk bu sefer .Add(…) kullanarak parametreyi geçiyoruz. Fonksiyonu inceleyecek olursak ilk parametre Stored Procedure’un istediği değişken ismi, 2. parametre ise değişkenin türü, 3. parametre ise değişkenin uzunluğu (int türü bir değişken olsaydı son parametreyi kullanmayacaktık). cmd.Parameters[“@RandomID”].Direction = ParameterDirection.Output; bu kısmı bu zamana kadar açıkcası bende bilmiyordum araştırdığımda ne anlama geldiğini öğrendim. Parameters dizisinin “@RandomID” parametresini OUTPUT yapmak için kullanılıyor. Bu işlemi yaptıktan sonra gönül rahatlığı ile Stored Procedure çalıştırılabilir. Son olarak işlem bittikten sonra değeri okumak için; cmd.Parameters[“@RandomID”].Value; kısmından değerimizi okuyabiliriz. object türünden olduğu için tür dönüşümü operatörünü kullanmak gerekiyor.

Umarım sizler için faydalı olmuştur, yeni bir makalede görüşmek üzere…

Herkese kolay gelsin, iyi çalışmalar…

CETURK Üniversite Temsilcisi Seçildim!

Çalıştığım firmadaki bir abinin bir sözü vardı; ‘Tek endişem var iş başvurularımın geri çevrilmesi!’ bu lafı benimle paylaştıktan sonra benimde tek amacım bu oldu, başvurularımın geri çevrilmemesi. İlk denememde bunda başarılı oldum sanırım. Belki kendimi çok büyük bir yerde sınamadım ama moral açısından iyi geldi :-).

www.ceturk.com internet sitesi bilişim alanında 7 yıldır faaliyet gösteriyor. Bu yıl düzenledikleri ‘Üniversite Temsilciliği’ programına bende başvurdum ve kendi üniversitemin temsilcisi olma fırsatını yakaladım. Getirisi ne olur şimdilik pek bir bilgim yok bekleyip göreceğiz  :-). Çok çok önemli birşey mi tartışılır ama şu bir gerçek ki beni mutlu etti umarım getirisi de olur. Bu yıl ki tüm çalışmalarım önümüzdeki yıl daha büyük bir ünvan için. Şimdilik o hedeften bahsetmeyeceğim, biraz daha vakti var. Daha bir gün var ama 2009’un benim için son iyi haberi bu olsa gerek.

Bu haber vesilesiyle herkesin yeni yılı kutlar, 2010 yılının sizler için mutlu ve başarılı geçmesi dileğiyle…

Mutlu yıllar…!

Mail Listemizi Gmail’e Nasıl Aktarabiliriz?

Arkadaşlar bu aralar pek teknik yazılar yazamıyorum farkındayım okuldaki dersler biraz zorluyor en kısa zamanda yeni yazılar ve videolarla sizlerle beraber olacağım. Özellikle yorumlarınızda ve gelen maillerden en çok talep edilen ‘Windows Formuna Login Girişi’ uygulamasını birde video ile anlatacağım diyerek konu başlığımızı anlatmaya başlayayım.

Outlook ya da Excel dosyasında bulunan mail listenizi Gmail hesabınıza çok rahat aktarabilirsiniz. Gmail size kaydedeceğiniz kişi ile ilgili şu bilgileri tutma imkanı sağlıyor;

Name,
Given Name,
Additional Name,
Family Name,
Yomi Name,
Given Name Yomi,
Additional Name Yomi,
Family Name Yomi,
Name Prefix,
Name Suffix,
Initials,
Nickname,
Short Name,
Maiden Name,
Birthday,
Gender,
Location,
Billing Information,
Directory Server,
Mileage,
Occupation,
Hobby,
Sensitivity,
Priority,
Subject,
Notes,
Group Membership,
E-mail 1 – Type,
E-mail 1 – Value

Şimdi boş bir Excel dosyası açın ve bu bilgiler arasından hangilerini girmek istiyorsanız hepsini bir hücreye yazın. Yani yukarıdaki bilgilerden girmek istediklerinizi tek satır olarak A1 hücresine kopyalayın, sonra kaydedeceğiniz bilgileri girin.

Örneğin; Adı Soyadı; Burak Özkan, E-Mail Adresi: [email protected], Ekleyeceğim Grup; Yazılım

Bu bilgiyi şöyle yazacağız;

A1 hücresi: Name,E-mail 1 – Value

A2 hücresi: Burak Özkan,[email protected] Bu şekilde Excel tablomuzu oluşturuyoruz ve kaydederken .csv formatında kaydediyoruz.. Şimdi tekrar Gmail hesabımıza giriyoruz ve ‘İçeri Aktar’ seçeneğini seçiyoruz. Gözat kısmından oluşturduğumuz Excel dosyasını seçiyoruz, kaydedeceğimiz grup seçeneğinide seçip ‘İçe Aktar’ butonuna basıyoruz. Hepsi bu kadar. Kişi listemizi başarılı bir şekilde Gmail hesabımıza aktarmış olduk…

Kolay gelsin, iyi çalışmalar…

Tab Order!

Uzun bir aradan sonra tekrar merhaba arkadaşlar. Bu makalede Visual Studio IDE’sinde programlarımızın kontrollerini nasıl sıraya dizeceğimizi öğreneceğiz. Birçok programda Tab tuşuna bastığınız zaman bir sonraki kontrolü seçer, peki biz bunu kendi programımıza nasıl uygulayabiliriz?

Normal de biz hiçbirşey yapmazsak kontroller form’a ekleniş sırasına göre dizilmiş olur. Ilk önce bir ‘Textbox’ eklediyseniz ver ardından bir ‘Combobox’ eklediyseniz ‘Textbox’ın içindeyken Tab tuşuna basarsanız Combobox’ı seçer. Birçok kontrolün bulunduğu programlarda bu işlem önem arz ediyor. Kullanıcı Tab tuşuna bastığı zaman imleç’i bir sonraki kontrolde görmek istiyor. Şimdi gelin bu işlemin nasıl yapıldığını inceleyelim;

tab_order_btn

Visual Studio idesinde yukarıdaki butona bastığınız zaman formunuzdaki kontrollerin sol  üst köşesinde aşağıdaki gibi bir rakamlar belirecek;

resim1

Bu rakamlar Tab tuşuna basıldığında hangi kontrollerin sırasıyla seçileceğini gösteriyor. Kontrollerin üzerine tıklayarak sıralama işlemini yapabilirsiniz. Tüm kontrollerin sıralama işlemi bittiğinde aşağıdaki gibi otomatik olarak hepsi mavi renk olacaktır;

resim2

Tekrar Tab Order butonuna bastığınızda rakamlar gözükmeyecektir. Artık sizde programınızın kontrollerini sıraya dizmiş olduğunuz. Tab tuşuna bastığınız zaman imleç farklı farklı yerlere gitmeyecek.

Umarım faydalı olmuştur,

Herkese kolay gelsin, iyi çalışmalar…

Bahçede Yeşil Çınar!

Bir türkü sever olarak sizlerle aşağıdaki türküyü paylaşmak istedim, bu aralar kendimi türküye ve şiire verdim :). Yazılımdan uzaklaşmak biraz iyi oluyor :). En kısa sürede sizlerle dolu dolu bir yazılım serüvenine başlayacağız. Şimdilik sizi aşağıdaki türkü ile başbaşa bırakayım;

Yaşamdan Dakikalar – 3

Bu hafta ki programdan beğendiğim bir şiiri tekrar sizlerle paylaşmak istedim;

BİR BAŞKA İSTANBUL

Oturdum başka bir İstanbul düşündüm
Daha çok sen olan daha bir seninle
Yeşili daha yeşil, mavisi daha mavi
O, herşeyi daha güzel yapan ellerinle

Sildim bütün yıldızları gökyüzünden
Yerine gözlerini koydum, gözlerini
Serdim saçlarını üstüne İstanbul’un
Dudaklarının rengine boyadım heryerini

Şimdi İstanbul aydınlık, öyle pırıl pırıl
Estirdiğim senin kokundur denizlerden
Senin güzelliğinle süsledim bahçeleri

Seni İstanbul yaptım, İstanbul’u sen
Her sokağına şiirini yazdım satır satır
Şimdi bütün semtleri bu şehrin seni anlatır..

Şair: Ümit Yaşar OĞUZCAN

Neler Yapıyorum!

Arkadaşlar merhaba,

Farkındayım uzun zamandır siteme makale ekleyemiyorum en kısa zamanda tekrar makale eklemeye başlayacağıma söz veriyorum. Bu yazımda sizlere makale ekleyememin sebebini yazmak istiyrum;

Şu sıralar Kadir Has Universitei IEEE Öğrenci Kolunda bazı etkinlikler düzenlemek için çalışıyorum. Çalışmalarımdan bazıları sonuç verdi, bazıları daha sonuçlanamadı ama şu ana kadar gerçekten beni heyecanlandıran olaylar oldu. Bunlardan 2 tanesini sizinle paylaşmak isterim;

1- 5 Aralık Cumartesi günü için Burak Selim Şenyurt hocamız okulumuzda bir seminer düzenlemeyi kabul etti. Etkinlik detaylarını bildireceğim.

2- Sevgili Daron Yöndem hocamızda INETA etkinliklerinin bir ayağını 27-28 Mart 2010 tarihinde bizim üniversitemizde düzenlemeyi kabul etti.

3- Üniversitemizde ‘Bilenler Bilmeyenlere Yazılım Öğretiyor‘ isminde bir etkinlik başlatıyoruz. Bu etkinlikte ben C ve C# üzerine eğitimler vermeye çalışacağım. Bir başka arkadaşda Java eğitimlerini verecek. Tarih ve saatler yakında zamanda belli olacak.

Bunlar neticelendirebildiklerim. Bu hafta içinde neticelendirilmesini beklediğim 1-2 proje daha var onlarda kesinleşince sizlerle burada paylaşacağım. Şunu belirteyim hemen üniversitemizde düzenlenen bütün etkinliklere dışarıdan katılabilirsiniz. Klüp olarak yaptığımız tüm çalışmaları http://ieee.khas.edu.tr adresinden takip edebilirsiniz.

Kolay gelsin, iyi çalışmalar…

1 3 4 5 Scroll to top