c# serial port yazma

Başlatan dex25, 20 Kasım 2014, 23:18:25

dex25

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);

ceyhanan

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.

dex25

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

Kabil ATICI

                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
ambar7

dex25

karakter[0] = StringToByteDizi(tek);
dizi tanımlı değil hata olmasın

Kabil ATICI

#5
 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ışı..
ambar7

dex25

The name 'StringToByteDizi' does not exist in the current context hatası verdi.ne olabilir sence

Kabil ATICI

 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...
ambar7

ceyhanan

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.

Kabil ATICI

İ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.
ambar7

ceyhanan

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.

barisertekin

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

byte[] bArray = Encoding.UTF8.GetBytes (inputString);

mir_as82

Hocam char dizi yap 256 elemani olan. İlgili karakterleri dizinin ilgili indexi ne yaz. Ornegin 65 indexli dizi elemanına A karakterini yaz.

Kabil ATICI

bunu hex çevirme işinde kullanıyorum..
ambar7