Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: Karamel - 26 Ağustos 2015, 07:00:02

Başlık: c#int to byte sorusu
Gönderen: Karamel - 26 Ağustos 2015, 07:00:02
merhaba. hocalarima bu gun birsey danismak istiyorum.

usb yi halledince. c# ile umng dll i kullanarak haberlesme yapmaya calistim. bunda basarili oldum. yalniz surada takildim. usb ye her bir byte ina 0 ila 255 arasinda degisen bir sayiyi c# ile yazmak istiyorum ama bunu nasil yapildigini anlayamadim.

mesela

int a; // a adinda bir variable imiz olsun.

a = 205;


simdi bunu usb nin byte diye tanimlanmis. giden_buffer[0] inci byte inin icersine nasil yazabilirim? convert.tobyte method unu kullaninca sanirim asagidaki gibi yapiyor.

giden_buffer[0] = '2';
giden_buffer[1] = '0';
giden_buffer[2] = '5';


ben ise bunu istiyorum.  :-\

giden_buffer[0] = 0xCD;
Başlık: Ynt: c#int to byte sorusu
Gönderen: MrDarK - 26 Ağustos 2015, 08:22:46
Şöyle dene birde :)


int a; // a adinda bir variable imiz olsun.

a = 205;

giden_buffer[0] = a;



Şeklinde yaptığında C# ne diyor ? Cast hatası mı veriyor ?
Başlık: Ynt: c#int to byte sorusu
Gönderen: XX_CİHAN_XX - 26 Ağustos 2015, 10:11:08
Tanımlanan dizi değişkeninin tipi nedir?
Başlık: Ynt: c#int to byte sorusu
Gönderen: sadogan - 26 Ağustos 2015, 10:44:25
Buffer tanımlamasını bu şekil deneyebilirmisin.
Byte[] giden_buffer = {0,0,0,0};
Başlık: Ynt: c#int to byte sorusu
Gönderen: Gökhan BEKEN - 26 Ağustos 2015, 11:10:38
0-255 arası çalışsın istiyorsan Byte yapmak zorundasın.
c# ta dizi böyle oluşturuluyor:
Byte[] numbers; // declare numbers as an int array of any size
numbers = new Byte[10];  // numbers is a 10-element array
Başlık: Ynt: c#int to byte sorusu
Gönderen: Karamel - 26 Ağustos 2015, 12:14:30
Alıntı yapılan: MrDarK - 26 Ağustos 2015, 08:22:46
Şöyle dene birde :)


int a; // a adinda bir variable imiz olsun.

a = 205;

giden_buffer[0] = a;



Şeklinde yaptığında C# ne diyor ? Cast hatası mı veriyor ?

evet hocam. simdi deneyi yaptim. cast hatasi veriyor  :-\

Alıntı yapılan: XX_CİHAN_XX - 26 Ağustos 2015, 10:11:08
Tanımlanan dizi değişkeninin tipi nedir?


hocam byte seklinde oldugunu yazmistim ilk message imda?  :-\



mesaj birleştirme:: 26 Ağustos 2015, 12:15:17

Alıntı yapılan: Gökhan BEKEN - 26 Ağustos 2015, 11:10:38
0-255 arası çalışsın istiyorsan Byte yapmak zorundasın.
c# ta dizi böyle oluşturuluyor:
Byte[] numbers; // declare numbers as an int array of any size
numbers = new Byte[10];  // numbers is a 10-element array

hocam usb icin boyle tanimlamistim.

        byte[] giden_buffer = new byte[64];
        byte[] gelen_buffer = new byte[64];




mesaj birleştirme:: 26 Ağustos 2015, 12:20:03

yalniz soyle birseyde var ki.

usb array ine yazi yazabilmek icin variable lar soyle tanimli idi.

string s = "birseyler";
giden_buffer = UnicodeEncoding.Default.GetBytes(s);


ben mesela s in icersinde bir textbox in icerigini yerlestirip. kolayca gonderebildim. ama character character gidiyor. ornegin bir byte variable i textbox in icersine ascii character olarak yazabilsem(mesela int in icersi 65. textbox icersinde "a" seklinde gorunse)

s variable inin icersine bu textbox i yerlestirir. sonrada gonderebilirim herhalde?  :-\

mesaj birleştirme:: 26 Ağustos 2015, 12:32:05

simdi deneyi yaptim.

textBox1.Text = textBox1.Text + Convert.ToString(a);

diyince textbox icerisi "205" oluyor. halbuki 205 e karsilik gelen ascii character ciksa. sanirim sorun cozulur.

mesaj birleştirme:: 26 Ağustos 2015, 12:48:06

simdi deneyi yaptim

Convert.ToChar(a) diyince character e ceviriyor ama birsey farkettim ki mesela 0 i textbox icersine yerlestirmiyor.
Başlık: Ynt: c#int to byte sorusu
Gönderen: MrDarK - 26 Ağustos 2015, 12:53:32
Karamel aşağıdakini kullan;

Denenmiştir.


            Byte[] numbers; // declare numbers as an int array of any size
            numbers = new Byte[10];  // numbers is a 10-element array

            int a = 205;

            numbers[0] = Convert.ToByte(a);


Textbox içerisinde 0 göremezsin. 0 bir hex sayıdır. Textbox'a sadece ascii olan bilgileri gösterebilirsin. Ascii yapmak istersen bir rakamı +0x30 eklemen gerekir.
Başlık: Ynt: c#int to byte sorusu
Gönderen: Karamel - 26 Ağustos 2015, 15:35:19
evet hocam ::) bu code lar calisiyor. c# ta neden bu kadar cok variable conversion var hocam?  :-\

visual basic 6 da mesela text6 = "abcd" ile text6.text = "abcd" arasinda bile sorun cikartmiyordu. cunku compiler biliyor text in icersine yazmamiz gerektigini.

text box icersinde sadece rakamlar varsa bunu sayi olarak direkman baska bir yerde kullanabiliyordu. c# ta neden hep conversation islemleri var ki?

mesela neden compiler

int a = 5;
byte b=0;


b=a;

diyince int variale i 255 ten buyuk degil. boylelikle sorun cikmayacak. bu adam bu iki variable i birbirine donusturmek istemis ama uzun uzun da yazmak istememis demiyor?  :-\
Başlık: Ynt: c#int to byte sorusu
Gönderen: Gökhan BEKEN - 26 Ağustos 2015, 15:42:08
Alıntı yapılan: Karamel - 26 Ağustos 2015, 15:35:19
mesela neden compiler

int a = 5;
byte b=0;


b=a;

diyince int variale i 255 ten buyuk değil. boylelikle sorun cikmayacak. bu adam bu iki variable i birbirine donusturmek istemis ama uzun uzun da yazmak istememis demiyor?  :-\
Adı üzerinde "değişken", yani "sabit" değil, sen şimdi birine 5 verir diğerine 0 verirsin.
Ama run time'da farklı değerler gelebilir. Zaten compiler bunu arakod'a çevirirken bunları otomatiğe bağlıyor, tek tek bu 255'ten küçük buna bir kıyak yapalım diyemez. Program iş mi yapsın, senin verilerini mi tek tek kontrol etsin? :D

Yüksek seviyeli diller, kullanıcıyı aptal yerine koyar, visual basic .net , c#'a göre daha yüksek seviye olduğu için, adı üstünde "basic" senin verilerine çok karışmaz, çünkü  onun gözünde "aptal" sın. Bu da programın hantal çalışmasına sebep olur.
Günümüzde bilgisayarlar tarla gibi ram hayvan gibi işlemci kullandığı için, bunlar çok fark edilmiyor tabi.
Başlık: Ynt: c#int to byte sorusu
Gönderen: Karamel - 26 Ağustos 2015, 15:50:35
hocam daha ust seviye projeler nasil yapilir. iyi yazilimlar nasil yazilir? gercekten basarili diyebilecegimiz algorithm lar nasil yapilir bilmedigimden bu soylediklerinizi anlayamiyorum.  :-\

yani bu code ta calissin.

int a = 5;

textbox1 = a;


bu code ta.

int a=5;

textbox1.text = convert.tostring(a);



alttakinde yonlendirmeyi biz el ile yapiyoruz. usttekinide makine yapsin. simdi degisken herseyi icersine alabilir diyorsunuz. duzgun bir deger gelmeyince run time error versin?  :-\


Başlık: Ynt: c#int to byte sorusu
Gönderen: Gökhan BEKEN - 26 Ağustos 2015, 16:18:41
Yalnız benim kastettiğim "üst seviye" farklı(Programlama dillerinin seviyelerine göre sınıflandırılması)
https://tr.wikibooks.org/wiki/Programlama_Temelleri/Programlama_Ara%C3%A7lar%C4%B1#Programlama_dillerinin_seviyelerine_g.C3.B6re_s.C4.B1n.C4.B1fland.C4.B1r.C4.B1lmas.C4.B1
Başlık: Ynt: c#int to byte sorusu
Gönderen: muhittin_kaplan - 26 Ağustos 2015, 18:16:37
@Karamel bende vb60 ile başladığımda oh ne rahat ne yazarsam yazayım adam anlıyor  diyordum. Ama öyle değilmiş.
dili mümkün olan -insana en yakın- katı şekliyle kullanmak iyi programcılık örneğidir.

düşünsene vb de şu çalışır "dim a"
peki bu "a" hafızada ne kadar yer tutar?
yazdığın program ram de nekadar yer tutarsa o kadar yavaş çalışır.
programcı "dim a" yerine "dim a as integer" kullanmalı. byte kullanabileceği yerde integer kullanmamalı. (mümkün olan en küçük datatype kullanılmalı.)
Başlık: Ynt: c#int to byte sorusu
Gönderen: Karamel - 26 Ağustos 2015, 20:02:21
Hocam dedim ya. Suan icin yaptigim pc software lari kendi capimda oldugundan. Iyi software ile kotusunu suan icin farkedemiyorum  :-\

Bu arada bir sorum daha var.  Text box icinde bir rakam olsun. Mesela 255. Bunu tek byte a nasil ceviririm? Mesela byteimiz[0] = 0xFF;

Başlık: Ynt: c#int to byte sorusu
Gönderen: muhittin_kaplan - 26 Ağustos 2015, 22:53:32
decimal i byte mı yapmak istiyorsun ? (0-255 aralığındaki sayıyı)
https://support.microsoft.com/en-us/kb/109260

(vb.net de daha kolay. neden vb.net kullanmıyorsun, ve hatta c#)
Başlık: Ynt: c#int to byte sorusu
Gönderen: Kabil ATICI - 26 Ağustos 2015, 22:59:06
@Karamel
bunun için yeri geldiğinde kullandığım ve örneklerini gördüğüm;
dizi yöntemini kullanıyorum. Dizide 0..255 aralığında  tüm veri aralığını  0x00...0xFF olarak tanımlıyorum. Diziye bir veriyi adreslediğinde senin istediğin veri karşında..
Başlık: Ynt: c#int to byte sorusu
Gönderen: Gökhan BEKEN - 26 Ağustos 2015, 23:20:25
Karamel iyi software kişiye göre değişse de genel olarak şunları söyleyebiliriz:
* Sistem kaynağını mümkün olduğunda verimli kullanmalı
* Bir sisteme bağımlı kalmak zorunda olmamalı, gerektiğinde başka işletim sistemleri için derlemek zor olmamalı.
* Kullanıcı arayüzü karışık olmamalı, (kullanıcı bir başka program da olabilir, illa grafik ortam olarak düşünme)
* Minimalist anlayışla yapılmış olmalı, amacı dışında bir şey yapmamalı. Mesela bir teknik makale okumak için girdiğim bir sitede saat ve takvim gösterilmesinden, yan tarafta müzik player olmasından hiç hoşlanmam.  İnternete girip web sitelerini dolaşmak için kullandığım web browser'da hava durumu toolbarı olmasından hoşlanmam. Amacı ne ise sadece onu karşılamalı, isviçre çakısı gibi olmamalı.
* Çalışmadığı zamanlar, sistemi uyku duruma geçirerek, gereksiz güç ve kaynak tüketimini önlemesi.
* Program kullanıcıya telefon numarası sorduğunda, o alana "0511aasda12312" gibi birşey yazdığında bunun yanlış olduğunu anlayarak tekrar girmeni istemeli, bunu yapmazsa program argo tabiri ile "cortlayabilir". Kullanıcı önemli bir veri sileceği zaman "kafan mı güzel bu veri silinir mi? Bir daha düşün..." gibi uyarılar vermeli.
* İnternet bağlantısı olan bir program yapıyorsan, bantwith'i olabildiğince verimli kullanmak gerekir.
* Önemli veri alışverişi yapan bir program yapıyorsan, verinin doğru gelip gittiğinden emin olmak için checksum veya crc gibi sistemler ile veri kontrolü yapılmalı, yoksa bir hayata hatta bir kitlenin ölümüne bile sebep verebilir.
* RF ile haberleşen bir sistem düşün, havadaki başka sinyallerin dolaştığını düşünerek, verilerin karışması önlenmelidir.
* Robot kolu yaptığını düşün, eğer sistem kör ise kolu kaldırdım der işi bitirir ama kolun gerçekten istediği yere gittiğini kontrol edebilecek bir donanım ekleyerek, bunu kontrol ederse çok daha sağlıklı çalışır, eğer kolu istediği yere götüremiyorsa, kullanıcıyı ses ile veya başka bir şekilde ikaz etmelidir.
* Mükemmel bir program yazdın kullanıcının gözünde, ama başka bir programcı baktığı zaman "spagetti" diye tabir ettiğimiz kod şeklini görüp miğdesi bulanıyorsa, programın sana bağımlı kalmış olur bu da iş hayatında takım çalışmasını olumsuz etkiler.

Eklebilecek o kadar çok şey var ki...
Başlık: Ynt: c#int to byte sorusu
Gönderen: Karamel - 27 Ağustos 2015, 06:00:37
Alıntı yapılan: Gökhan BEKEN - 26 Ağustos 2015, 23:20:25
Karamel iyi software kişiye göre değişse de genel olarak şunları söyleyebiliriz:
* Sistem kaynağını mümkün olduğunda verimli kullanmalı
* Bir sisteme bağımlı kalmak zorunda olmamalı, gerektiğinde başka işletim sistemleri için derlemek zor olmamalı.
* Kullanıcı arayüzü karışık olmamalı, (kullanıcı bir başka program da olabilir, illa grafik ortam olarak düşünme)
* Minimalist anlayışla yapılmış olmalı, amacı dışında bir şey yapmamalı. Mesela bir teknik makale okumak için girdiğim bir sitede saat ve takvim gösterilmesinden, yan tarafta müzik player olmasından hiç hoşlanmam.  İnternete girip web sitelerini dolaşmak için kullandığım web browser'da hava durumu toolbarı olmasından hoşlanmam. Amacı ne ise sadece onu karşılamalı, isviçre çakısı gibi olmamalı.
* Çalışmadığı zamanlar, sistemi uyku duruma geçirerek, gereksiz güç ve kaynak tüketimini önlemesi.
* Program kullanıcıya telefon numarası sorduğunda, o alana "0511aasda12312" gibi birşey yazdığında bunun yanlış olduğunu anlayarak tekrar girmeni istemeli, bunu yapmazsa program argo tabiri ile "cortlayabilir". Kullanıcı önemli bir veri sileceği zaman "kafan mı güzel bu veri silinir mi? Bir daha düşün..." gibi uyarılar vermeli.
* İnternet bağlantısı olan bir program yapıyorsan, bantwith'i olabildiğince verimli kullanmak gerekir.
* Önemli veri alışverişi yapan bir program yapıyorsan, verinin doğru gelip gittiğinden emin olmak için checksum veya crc gibi sistemler ile veri kontrolü yapılmalı, yoksa bir hayata hatta bir kitlenin ölümüne bile sebep verebilir.
* RF ile haberleşen bir sistem düşün, havadaki başka sinyallerin dolaştığını düşünerek, verilerin karışması önlenmelidir.
* Robot kolu yaptığını düşün, eğer sistem kör ise kolu kaldırdım der işi bitirir ama kolun gerçekten istediği yere gittiğini kontrol edebilecek bir donanım ekleyerek, bunu kontrol ederse çok daha sağlıklı çalışır, eğer kolu istediği yere götüremiyorsa, kullanıcıyı ses ile veya başka bir şekilde ikaz etmelidir.
* Mükemmel bir program yazdın kullanıcının gözünde, ama başka bir programcı baktığı zaman "spagetti" diye tabir ettiğimiz kod şeklini görüp miğdesi bulanıyorsa, programın sana bağımlı kalmış olur bu da iş hayatında takım çalışmasını olumsuz etkiler.

Eklebilecek o kadar çok şey var ki...

anladim hocam. bu konu uzerinde arastirma yapacagim.

hocam suan konuya hakim olmadigimdan. c# cok zor geliyor bana. saatlerdir ugrasiyorum. textbox icersindeki value yu (0-255 arasi yazilmis) tek bir byte in icersine yerlestiremedim. sonra bunu tek byte lik string e cevirip.(mesela textbox icersi "65" yazisi olsun. once bunu byte a cevirecegiz. tek byte in icersi 65 sayisi olacak. daha sonra bunu tek byte stringe cevirecegiz. oda 'a' harfine karsilik gelecek) usb den gonderemedim.  :-\
Başlık: Ynt: c#int to byte sorusu
Gönderen: MrDarK - 27 Ağustos 2015, 08:33:04
Karamel;

Bu kadar iyi ingilizcen olduğunu söyleyip bu kadar basit şeyleri bulamıyor olmanda şaşırtıcı. Yada aramasını bilmiyorsun sanırım. Belli bir kafa yapısına geldikten sonra artık global programlayıcı olduğumuzdan ötürü artık kod ezberleme gibi şeyler yapmayıp sadece kafamızda algoritmalar dolaşır. Haliyle bu algoritmaları uygun dilde hayata geçirmek gerekir. Bunun içinde kitap karıştırmak yerine web portalını kullanıyorum ben. Örnek problemin için textbox içerisine yazılan yazı string'dir. Senin çevirmek istediğin şey ya byte , yada byte array.

O zaman soru cümlesi bu ; C# string to byte , byte array vs vs

Açıkçası ben bulmakta hiç zorlanmıyorum. Bence biraz ingilizce anahtar kelimelerini kullan
Başlık: Ynt: c#int to byte sorusu
Gönderen: Karamel - 27 Ağustos 2015, 10:15:43
hocam hasa....  :-\ beni utandiriyorsunuz.  ben su konuda iyiyim. bu konuda iyiyim demek yada iddia da bulunmak benim karakterime ve hayat felseme ters.... lutfen suan cok utandim....  :-\

hocam visual basi 6 dan sonra c# ile platform cok degisik geldi. basit yada anlamsiz sorular sormamin sebebi bu.....

neyse ben bir sureligine soru sormayip. kendi kendime calisayim.