The post C# ile Arduino Seri Port Haberleşmesi first appeared on Emre Bektaş.
]]>Sensör bağlantısı;
Arduino kodumuz;
#include <dht.h>
dht DHT;
#define DHT22_PIN 2
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false;
void setup() {
Serial.begin(9600);
inputString.reserve(200);
delay(5);
}
void loop() {
if (stringComplete) {
//Serial.print(inputString);
triggertmp();
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
}
}
}
void triggertmp()
{
if(inputString=="temp\n"){
int chk = DHT.read22(DHT22_PIN);
Serial.print(DHT.temperature, 1);
Serial.print("\n");
}
if(inputString=="hum\n"){
int chk = DHT.read22(DHT22_PIN);
Serial.print(DHT.humidity, 1);
Serial.print("\n");
}
}
Arduino koduna bakacak olursak benim eklediğim triggertmp fonksiyonu ile seriporttan gelen değer temp ise sıcaklık bilgisini hum ise nem bilgisini arduino tarafından yolluyoruz. Zaten programın diğer kısımları hali hazırda arduino idesinde bulunuyor.(Serialevent)
C# kodumuz;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace www.emrebektas.com_2
{
public partial class Form1 : Form
{
SerialPort serial = new SerialPort("COM13");
String arduinovalue = "";
public Form1()
{
InitializeComponent();
serial.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonSend_Click(object sender, EventArgs e)
{
String emre = null;
emre = textBox1.Text;
serial.WriteLine(emre);
if (serial.BytesToRead > 0)
{
arduinovalue = serial.ReadLine();
label3.Text = arduinovalue;
}
}
}
}
C# tarafında
SerialPort serial = new SerialPort(“COM13”);
bu satırda com13 portuna ait bir serialport objesi oluşturuyoruz ismide serial.
serial.Open(); ile seri portumuzu açıyoruz.
Serial.WriteLine(“”); ise seri porta bilgi gönderiyoruz.
serial.BytesToRead ile seri porttan değer gelip gelmediğini kontrol ediyoruz. serial.BytesToRead > 0 ile eğer seri porttan değer geldiyse bu if döngüsü çalışacaktır. Aşağıdaki resime bakacak olursak arduino tarafına temp göndermişiz ve arduino bize 22.5 değerini göndermiş ve bir değer gönderdiği içinde if döngüsü çalıştı gelen değer label’a yazıldı.
C# programımızdan görüntüler;
The post C# ile Arduino Seri Port Haberleşmesi first appeared on Emre Bektaş.
]]>The post C# Key Event Kullanımı – Klavyeden Basılan Tuşu Yakalama first appeared on Emre Bektaş.
]]>Ben örnek olarak Form’a bir tane label ekledim. Bastığım tuşarıda labelde gösteriyorum.
private void Key_Press(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
label1.Text = ("Enter");
}
else if (e.KeyChar == (char)Keys.Escape)
{
label1.Text = ("Escape");
}
else if (e.KeyChar == (char)Keys.Space)
{
label1.Text = ("Space");
}
else // Standart keys...(qwert..)
{
//MessageBox.Show(e.KeyChar.ToString());
label1.Text = (e.KeyChar.ToString());
}
}
private void Key_Press_Up(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Up || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
{
label1.Text = (e.KeyCode.ToString());
}
}
Son olarak bu fonksiyonları ekledikten sonra formun Event bölümünden KeyPress eventine 1. fonksiyonumuzu KeyUp ve KeyDown eventlerinede 2. fonksiyonumuzu tanıtırsak bütün ayarlar bitecektir.
The post C# Key Event Kullanımı – Klavyeden Basılan Tuşu Yakalama first appeared on Emre Bektaş.
]]>The post Asp.Net ile Querystring Kullanımı first appeared on Emre Bektaş.
]]>Url tabanlı veri aktarımı olduğu için bazı karakterlere izin verilmiyor.
Url satırı herkes tarafından görünebilir olduğundan güvenli değildir. Rahatlıkla Querystring değiştirilebilir.
Küçük çaplı verileri taşıyabilirsiniz genellikle 1 veya 2 kb tır URL bazlı olduğu için.
Kullanımına gelecek olursak;
İlk sayfaya bir adet textbox ve button ekledim. Amacımız textboxa girilen bilgiyi url üzerinden Default2.aspx sayfasına taşımaktır.
Go Next Page button’una bastığımızda çalışacak fonksiyona Response.Redirect(“~/Default2.aspx?Value=” + TextBox1.Text);
kodunu ekiyoruz. Bu koda baktığımızda Default2.aspx sayfasına Value parametresi ile textboxdaki bilgiyi gönderiyoruz.
Default2.aspx sayfasına bir adet label ekledik ve page load eventine Label1.Text = Request.QueryString[“Value”]; kodunu yazdık. Böylece Value parametresi ile gelecek olan değeri label’a yazdırmış olduk.
Sonuç:
Querystring iki sayfa arasında bilgi taşımak için kullanılabilecek bir state mekanizmasıdır. Eğerki siz saklamak istediğiniz veriyi projenizin başka sayfasındada kullanmak istiyorsanız Session State ve Cookie yapılarına göz atmanız gerekecektir.
The post Asp.Net ile Querystring Kullanımı first appeared on Emre Bektaş.
]]>The post Asp.Net ve C# ile E-mail Gönderme first appeared on Emre Bektaş.
]]> public void SendEmail(String targetemail, String message)
{
try
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("sizin mail adresiniz");
msg.To.Add(new MailAddress(targetemail));
msg.Subject = "Email Konusu";
msg.Body = message;
SmtpClient mySmtpClient = new SmtpClient();
System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("username", "password");
mySmtpClient.Host = "smtp.gmail.com"; // host adresi ben default olarak gmail paylaşıyorum.
mySmtpClient.Port = 587; // smtp port no
mySmtpClient.EnableSsl = true;
mySmtpClient.UseDefaultCredentials = false;
mySmtpClient.Credentials = myCredential;
mySmtpClient.Send(msg);
msg.Dispose();
}
catch (Exception exp)
{
LabelWarning.Text = "Email could not be sent !";
using (StreamWriter _testData = new StreamWriter(Server.MapPath("~/log.txt"), true))
{
_testData.WriteLine(DateTime.Now.ToString("[dd/MM/yyyy] [HH:mm:ss]") + exp);
}
}
}
Kod’a kısacak bakmak gerekirse, herhangi bir hataya karşı try catch yapısı kullandık ve eğer hata oluşursa LabelWarning textbox’ına email gönderilemedi yazıyoruz ve hatanın detaylı ayrıntısını Streamwriter yardımı ile ana dizininize log dosyası oluşturup içerisine ekleyecek.DateTime.Now.ToString ile hatanın çıktığı zamanıda log.txt dosyasına eklemiş oluyoruz.
Fonksiyona parametre olarak 2 String değer göndermeniz gerekmektedir. İlk olarak emailin kime gönderileceğinin adresi ikinici olarak yazacağınız iletiz olmalıdır.
The post Asp.Net ve C# ile E-mail Gönderme first appeared on Emre Bektaş.
]]>The post “Belirtilen DSN’de Sürücü ile Uygulama arasında bir mimari uyuşmazlığı var” Hatasının Çözümü first appeared on Emre Bektaş.
]]>http://dev.mysql.com/downloads/connector/odbc/5.1.html bu adreste ilgili sürücü bulunmaktadır. Sürücüyü yükledikten sonra çalıştır’a girip C:\Windows\SysWOW64\odbcad32.exe yazınız açılan pencereden Ekle’ye basıp MySQL ODBC Driver’ı ekleyip sunucu kullanıcı adı ve şifrenizi girip işlemlerinizi gerçekleştirebilirsiniz.
The post “Belirtilen DSN’de Sürücü ile Uygulama arasında bir mimari uyuşmazlığı var” Hatasının Çözümü first appeared on Emre Bektaş.
]]>The post C# ile 2. Dereceden Denklem Köklerini Bulma first appeared on Emre Bektaş.
]]>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
//2.derecenden denklem kod çalışması..
//Delta=B^2-4*a*c
String s;
double d,b,a,c,x1,x2;
Console.Write("b sayisini giriniz.");
s = Console.ReadLine();
b = double.Parse(s);
Console.Write("a sayisini giriniz.");
s = Console.ReadLine();
a = double.Parse(s);
Console.Write("c sayisini giriniz.");
s = Console.ReadLine();
c = double.Parse(s);
d=b*b-4*a*c;
if (d<0)
{
Console.WriteLine("Gercek kok yoktur.");
Console.Read();
}
if (d==0)
{
Console.WriteLine("Cakisik 2 kok vardir.\n");
Console.WriteLine("x1=x2=" + -b / 2 * a);
Console.Read();
}
if(d>0)
{
x1=(-b+Math.Sqrt(d))/(2*a);
x2=(-b-Math.Sqrt(d))/(2*a);
Console.WriteLine("X1=" + x1 + " " + "X2=" + x2);
Console.Read();
}
}
}
}
Bu uygulamayı c++ dilinde yazmak isterseniz Console.WriteLine komutunu cout ile Console.ReadLine komutunuda cin ile değiştirip kullanabilirsiniz…
The post C# ile 2. Dereceden Denklem Köklerini Bulma first appeared on Emre Bektaş.
]]>The post C# ile Random Sayı Üretme first appeared on Emre Bektaş.
]]>Programımızda 1 adet buton ve işlem sonucunu göstermek için Textbox ekledik. Sayı Üret butonuna bastığımızda Clcik eventi çalışacak ve isediğimiz algoritmayı yazacağız. Algoritmaya bakacak olursak;
private void buttonSayiUret_Click(object sender, EventArgs e)
{
Random rand = new Random();
int num1 = rand.Next(0, 10); // 0 dahil 10 dahil değil
textBox1.Text = Convert.ToString(num1);
}
İlk satırda Random sınıfından rand isimli bir obje ürettik. ve rand.Next(0, 10) şeklinde kullandık. Sayi üretmeye başladığımızda 0 sayısı dahil 10 dahil olmayarak rastgele sayılar üretecektir program. Örneğin:
[su_button url=”https://drive.google.com/file/d/0Bypgi5nv-lAOS1VXMzUyQkVBWTQ” target=”blank” style=”3d”]Download[/su_button]
The post C# ile Random Sayı Üretme first appeared on Emre Bektaş.
]]>The post C# ile Faktöriyel Hesaplama Programı first appeared on Emre Bektaş.
]]>Programımızda 2 tane Textbox 1 adet label ve 1 adet button kullanıldı. Hesapla butonuna bastığımız C# tarafında Click eventi çalışır. Bu eventin içinde; 1. textboxda kullanıcıdan girilen sayıyı int’a çevirip algoritmaya sokuyoruz ve sonucu 2. textboxa aktarıyoruz.
Algoritmaya bakacak olursak;
private void buttonCalculate_Click(object sender, EventArgs e)
{
int sayi;
int fact = 1;
sayi = Convert.ToInt32(textBoxFucktoriyel.Text);
if (sayi <= -1)
{
MessageBox.Show("Lütfen 0 dan büyük sayı giriniz...");
}
else
{
for (int i = 1; i <= sayi; i++)
{
fact = fact * i;
}
textBoxResult.Text = fact.ToString();
}
}
Algoritmada ilk olarak faktöriyeli hesaplayacağımız sayı negatif olmayacağından dolayı if koşulu ile kontrol yapıyoruz. ve For döngüsü ile beraber i değişkenine 1 değerini atıp kullanıcının girdiği sayıya kadar 1 artırılıp kendisi ile çarpılıyor.
örneğin 3 faktöriyel için 1*2*3 şeklinde olacaktır. Programı incelemek isterseniz kaynak kodları ile birlikte ekten indirebilirsiniz…
Ek olarak
textBoxResult.Text = fact.ToString();
satırının altına
MessageBox.Show(sayi + " Sayısının Faktöriyeli =" + fact);
satırını eklerseniz işlemin sonucu size yeni pencere üzerinde gelecektir.
[su_button url=”https://drive.google.com/file/d/0Bypgi5nv-lAON0F3azVPNi1aekk/” target=”blank” style=”3d”]Download[/su_button]
The post C# ile Faktöriyel Hesaplama Programı first appeared on Emre Bektaş.
]]>