Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: dex25 - 20 Kasım 2014, 23:18:25

Başlık: c# serial port yazma
Gönderen: dex25 - 20 Kasım 2014, 23:18:25
private void button1_Click(object sender, EventArgs e)
{
port.Open();
port.Write(textBox1.Text);
port.Close();
textBox1.Clear();
textBox1.Focus();
}


merhaba arkadaslar  write komutunun yerine byte dizisi yardımıyla nasıl veri gönderebilirim bu dizi nasıl kullanılır asağıdaki kodda var ama nasıl uyarlanabilir

byte[] gidecekVeri = new byte[] {0x30, 0x31, 0x32, 0x33, 0x34};
serialPort.Write(gidecekVeri, 0, gidecekVeri.Length);
Başlık: Ynt: c# serial port yazma
Gönderen: ceyhanan - 20 Kasım 2014, 23:45:30
Tapatalktan girdiğim için kodları göremiyorum ama dizi göndermek için. SerialPort.Write(dizi,offset yani başlangıç indexi,uzunluk şeklinde) şeklinde gönderebilirsiniz.
Başlık: Ynt: c# serial port yazma
Gönderen: dex25 - 20 Kasım 2014, 23:50:41
private void button1_Click(object sender, EventArgs e)
{
port.Open();
port.Write(textBox1.Text);
port.Close();
textBox1.Clear();
textBox1.Focus();
}
Bu birinci
byte[] gidecekVeri = new byte[] {0x30, 0x31, 0x32, 0x33, 0x34};
serialPort.Write(gidecekVeri, 0, gidecekVeri.Length);
buda ikinci kod

textbox1 'i nasıl diziye alabilirim.içeriği string
Başlık: Ynt: c# serial port yazma
Gönderen: Kabil ATICI - 21 Kasım 2014, 00:17:41
                byte[] hepsi = new byte[] { 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 153 };
                byte[] karakter = { 0 };
                string tek;
                string yazman;
                int sutSay;
                int ortala;
               
                yazman = textBox1.Text;
                sutSay = yazman.Length;
                if (sutSay > 16)    //text1.text karakter sayısını 16 ile sınırla
                    sutSay = 16;
                ortala = 1;
                for (int i = 0; i < sutSay; i++)
                {
                    tek = yazman.Substring(i, 1);
                    karakter[0] = StringToByteDizi(tek); // karakterleri bayt'e dönüştür
                    hepsi[i + ortala] = karakter[0];
                }
            //    hepsi[0] = 16; //1. satır kodu
            //    hepsi[17] = 153;  // satır bitti kodu
                serialPort1.Write(hepsi, 0, hepsi.Length); //yaz
Başlık: Ynt: c# serial port yazma
Gönderen: dex25 - 21 Kasım 2014, 00:33:54
karakter[0] = StringToByteDizi(tek);
dizi tanımlı değil hata olmasın
Başlık: Ynt: c# serial port yazma
Gönderen: Kabil ATICI - 21 Kasım 2014, 09:00:01
 byte[] karakter = { 0 };
tek elemanlı dizi...
Bu kodu kullanıyorum.Karakter LCD ekrana metin göndermek için kullanıyorum. Sadece metni ekrana ortalayan bölüm yok.

Veriyi gönderirken, 0x10 ile başlattım (1. satır kodu olarak) ve 0x99 ile sonlandırdım (satır sonu kodu)
işlemci 0x99 gördüğü zaman gelen metni LCD ekrana yazdırıyor. verdiğim kodda şu anda o satırlar devre dışı..
Başlık: Ynt: c# serial port yazma
Gönderen: dex25 - 21 Kasım 2014, 13:47:48
The name 'StringToByteDizi' does not exist in the current context hatası verdi.ne olabilir sence
Başlık: Ynt: c# serial port yazma
Gönderen: Kabil ATICI - 21 Kasım 2014, 15:06:17
 public static byte StringToByteDizi(string str)
        {
          byte[] baytDeger = {0};
            switch (str)
                {
                        //büyük harfler
                    case "A":
                        baytDeger[0] =65;
                        break;
                    case "B":
                        baytDeger[0] = 66;
                        break;
                    case "C":
                        baytDeger[0] = 67;
                       break;
                    case "D":
                       baytDeger[0] = 68;
                       break;
                    case "E":
                        baytDeger[0]=69;
                        break;
                    case "F":
                        baytDeger[0]=70;
                       break;
                    case "G":
                        baytDeger[0]=71;
                       break;
                    case "H":
                        baytDeger[0]=72;
                       break;
                    case "I":
                        baytDeger[0]=73;
                       break;
                    case "J":
                        baytDeger[0] =74;
                       break;
                    case "K":
                        baytDeger[0] =75;
                      break;
                    case "L":
                        baytDeger[0] =76;
                       break;
                    case "M":
                        baytDeger[0] =77;
                       break;
                    case "N":
                        baytDeger[0] =78;
                      break;
                    case "O":
                        baytDeger[0] =79;
                       break;
                    case "P":
                        baytDeger[0] =80;
                       break;
                    case "Q":
                        baytDeger[0] =81;
                       break;
                    case "R":
                        baytDeger[0] =82;
                       break;
                    case "S":
                        baytDeger[0] =83;
                       break;
                    case "T":
                        baytDeger[0] =84;
                      break;
                    case "U":
                        baytDeger[0] =85;
                       break;
                    case "V":
                        baytDeger[0] =86;
                       break;
                    case "W":
                        baytDeger[0] =87;
                       break;
                    case "X":
                        baytDeger[0] =88;
                       break;
                    case "Y":
                        baytDeger[0] =89;
                       break;
                    case "Z":
                        baytDeger[0] =90;
                      break;
                    // rakamlar
                    case "0":
                        baytDeger[0] =48;
                      break;
                    case "1":
                        baytDeger[0] =49;
                       break;
                    case "2":
                        baytDeger[0] =50;
                       break;
                    case "3":
                        baytDeger[0] =51;
                       break;
                    case "4":
                        baytDeger[0] =52;
                       break;
                    case "5":
                        baytDeger[0] =53;
                       break;
                    case "6":
                        baytDeger[0] =54;
                       break;
                    case "7":
                        baytDeger[0] =55;
                      break;
                    case "8":
                        baytDeger[0] =56;
                      break;
                    case "9":
                        baytDeger[0] =57;
                       break;
                        // küçük harfler
                    case "a":
                        baytDeger[0] =97;
                      break;
                    case "b":
                        baytDeger[0] =98;
                       break;
                    case "c":
                        baytDeger[0] =99;
                       break;
                    case "d":
                        baytDeger[0] =100;
                       break;
                    case "e":
                        baytDeger[0] =101;
                       break;
                    case "f":
                        baytDeger[0] =102;
                       break;
                    case "g":
                        baytDeger[0] =103;
                        break;
                    case "h":
                        baytDeger[0] =104;
                      break;
                    case "i":
                        baytDeger[0] =105;
                      break;
                    case "j":
                        baytDeger[0] =106;
                       break;
                    case "k":
                        baytDeger[0] =107;
                       break;
                    case "l":
                        baytDeger[0] =108;
                      break;
                    case "m":
                        baytDeger[0] =109;
                      break;
                    case "n":
                        baytDeger[0] =110;
                      break;
                    case "o":
                        baytDeger[0] =111;
                       break;
                    case "p":
                        baytDeger[0] =112;
                      break;
                    case "q":
                        baytDeger[0] =113;
                      break;
                    case "r":
                        baytDeger[0] =114;
                       break;
                    case "s":
                        baytDeger[0] =115;
                       break;
                    case "t":
                        baytDeger[0] =116;
                      break;
                    case "u":
                        baytDeger[0] =117;
                       break;
                    case "v":
                        baytDeger[0] =118;
                       break;
                    case "w":
                        baytDeger[0] =119;
                      break;
                    case "x":
                        baytDeger[0] =120;
                      break;
                    case "y":
                        baytDeger[0] =121;
                       break;
                    case "z":
                        baytDeger[0] =122;
                       break;
                    //türkçeler
                    case "ı":
                        baytDeger[0] =253;
                      break;
                    case "ş":
                        baytDeger[0] =254;
                       break;
                    case "ü":
                        baytDeger[0] =252;
                       break;
                    case "ö":
                        baytDeger[0] =246;
                     break;
                    case "ç":
                        baytDeger[0] =231;
                       break;
                    case "ğ":
                        baytDeger[0] =240;
                      break;
                    case "İ":
                        baytDeger[0] =73;
                      break;
                    case "Ş":
                        baytDeger[0] =83;
                       break;
                    case "Ü":
                        baytDeger[0] =85;
                      break;
                    case "Ö":
                        baytDeger[0] =79;
                       break;
                    case "Ç":
                        baytDeger[0] =67;
                       break;
                    case "Ğ":
                        baytDeger[0] =71;
                      break;
                    //işaretler
                    case ".":
                        baytDeger[0] =46;
                       break;
                    case "/":
                        baytDeger[0] =47;
                       break;
                    case ",":
                        baytDeger[0] =44;
                       break;
                    case ":":
                        baytDeger[0] =58;
                       break;
                    case ";":
                        baytDeger[0] =59;
                       break;
                    case "?":
                        baytDeger[0] =63;
                       break;
                    case "-":
                        baytDeger[0] =45;
                       break;
                    case " ":
                       baytDeger[0] = 32;
                       break;
                }
            return (baytDeger[0]);
        }


çok özür dilerim. Epeydir uğraşmıyordum. Bazı bölümlerini unutmuşum...
Başlık: Ynt: c# serial port yazma
Gönderen: ceyhanan - 21 Kasım 2014, 19:50:59
Switch casele ya da birebir dönüşümle uğraşmaya gerek yok. Şuan hatırlayamadım ama hazır bi sınıf var bu iş için string-ascii dönüşümü yapıyor. Karakter kodlaması da seçebiliyorsunuz.
Başlık: Ynt: c# serial port yazma
Gönderen: Kabil ATICI - 21 Kasım 2014, 20:44:24
İstersen koda bir daha bak. Ş,Ç,Ğ,İ,Ö,Ü sence o kodlara mı sahip?
LCD'ye doğrudan o karakterlere gönderirsen ekranda ne çıkar?

C# başlangıç düzeyinde bulduğum çözüm buydu.
Ama tabii ki alternatif çözümlere her zaman açığım.
Başlık: c# serial port yazma
Gönderen: ceyhanan - 21 Kasım 2014, 20:58:11
Türkçe karakterler de dönüştürülüyor. Bilet makinasına başlık falan yüklediğim programda kullandım. Bütün karakterler sorunsuz gönderiliyor. LCDye karakter yüklemesi yapmak gerekebilir o ayrı konu.

Windows-1254 charsetle dönüştürüyordum yanlış hatırlamıyosam. Sıkıntı olmuyor. Türkçe karakterlere ayrı kod yazmaya gerek kalmıyor.
Başlık: Ynt: c# serial port yazma
Gönderen: barisertekin - 21 Kasım 2014, 23:39:21
String To Byte Array fonksiyonlarını kullanmanız daha kolay olur.

http://stackoverflow.com/questions/472906/converting-a-string-to-byte-array-without-using-an-encoding-byte-by-byte (http://stackoverflow.com/questions/472906/converting-a-string-to-byte-array-without-using-an-encoding-byte-by-byte)

byte[] bArray = Encoding.UTF8.GetBytes (inputString);
Başlık: Ynt: c# serial port yazma
Gönderen: mir_as82 - 22 Kasım 2014, 11:06:23
Hocam char dizi yap 256 elemani olan. İlgili karakterleri dizinin ilgili indexi ne yaz. Ornegin 65 indexli dizi elemanına A karakterini yaz.
Başlık: Ynt: c# serial port yazma
Gönderen: Kabil ATICI - 22 Kasım 2014, 11:30:06
bunu hex çevirme işinde kullanıyorum..