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);
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.
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
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
karakter[0] = StringToByteDizi(tek);
dizi tanımlı değil hata olmasın
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ışı..
The name 'StringToByteDizi' does not exist in the current context hatası verdi.ne olabilir sence
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...
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.
İ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.
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.
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);
Hocam char dizi yap 256 elemani olan. İlgili karakterleri dizinin ilgili indexi ne yaz. Ornegin 65 indexli dizi elemanına A karakterini yaz.
bunu hex çevirme işinde kullanıyorum..