Seri Port ile İletişim.

Slides:



Advertisements
Benzer bir sunumlar
Java Programlama Giriş/Çıkış
Advertisements

Hazırlayan ve Sunan Ali Yasin Çakılcı HUNROBOTX
STRİNG FONKSİYONLARI.
Yığın ve Kuyruk.
Programlama-II (Java ile Bilgisayar Programlama)
String Diziler(Katarlar)
KOŞUL İFADELERİ GMGNKJG.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DÖNGÜ İFADELERİ.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
DOSYA İŞLEMLERİ.
DELEGATE OOP-UYG.
METODLAR.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
.Net teknolojisi ve C# Yasin Gedik Dokuz Eylül Üniversitesi (4. Sınıf) Microsoft Danışman Öğrenci
ARDUINO DİJİTAL PİN KONTROLÜ
8. VİSUAL BASİC İLE TEMEL DOSYALAMA İŞLEMLERİ
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
FONKSİYONLAR.
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
METOTLAR.
DOSYA İŞLEMLERİ.
Çoklu dallanma seçimi: switch
ARDUINO DİJİTAL GiRİŞ KONTROLÜ
C# ile Seri İletişim Aslı Ergün.
JAVA’DA DÖNGÜLER.
ARDUINO RÖLE KONTROLÜ.
JAVA’DA DİZİLER Dr.Galip AYDIN.
Ders İçeriği Liste Soyut veri yapısı (ADT)
DÖNGÜLER(Loop) while, for döngüleri Break ve continue işlevleri
Örnek Adam asmaca oyununun programının yazılması.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
ARDUINO DİJİTAL PİN KONTROLÜ
AB’15 Arduino ile sensörler dersi
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Seriport String İletimi
PWM (Pulse Width Modulation- Sinyal Genişlik Modülasyonu)
Bluetooth İle Haberleşme
Fonksiyonlar.
C’de Fonsiyonlar Aslı Ergün.
BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri
Motor Sürücü Devresi ile Kontrol
C# ÖRNEK UYGULAMALAR C# Örnek Uygulamalar 1
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Arduino Uno R3 ile Merhaba Dünya Yrd. Doç. Dr. Deniz DAL
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Arduino Uno R3 ile Merhaba Dünya Yrd. Doç. Dr. Deniz DAL
C# WINDOWS UYGULAMASI HAZIRLAMA ADO.NET SUNU3- MÜŞTERİ KAYIT FORMU OLUŞTURMA SAVAŞ TUNÇER
C# WINDOWS UYGULAMASI HAZIRLAMA ADO.NET SUNU2 -ŞİFRE GÜNCELLEME FORMU OLUŞTURMA SAVAŞ TUNÇER
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Bilgisayar Programlamasına ve Veri Analizine Giriş
Fonksiyonlar.
Arduino Eğitimleri Bölüm 5 Dijital Giriş – Çıkış İşlemleri
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
ARDUİNO Arduino Eğitimleri Bölüm 2 Arduino’ya Giriş
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
Arduino Uno R3 ile Merhaba Dünya Dr. Öğr. Üyesi Deniz DAL
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
Bir Döngünün Bölümleri (hatırlatıcı)
C ile Programlamaya Giriş
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

Seri Port ile İletişim

Seri Port ile İletişim Portu Açmak için: if (SeriPortum.IsOpen == false) { SeriPortum.Open(); } Portu Kapamak için: SeriPortum.Close(); string veri = SeriPortum.ReadLine(); //Seri porttan veri okur. SeriPortum.WriteLine(veri); //Seri porta veri yazar.

Seri Port Kontrol Özellikleri serialPort.BaudRate: SerialPort sınıfının BaudRate isimli özelliği bilgisayardan kontrol edeceğiniz sistem ile haberleşme esnasında ki veri iletişimi hızı. Bu özellik sistemden sisteme değişiklik göstermektedir. BaudRate için şunu söyleyebiliriz saniye gönderilen bit sayısı, eğer sisteminizle iletişim hızınız 9600 ise bilgisayarın seri portundan saniyede 9600 bit veri gönderip alabilirsiniz demektir. Bu yüzden eğer sisteminiz 19200 ise ve siz bilgisayar programından bu özelliği set etmez iseniz verileri sağlıklı bir şekilde gönderip alamayacaksınız çünkü bu özelliğin default değeri 9600.

serialPort.IsOpen: SerialPort sınıfının IsOpen isimli özelliği seri portun açık olup olmadığını bool türünden söyleyen bir özellik. Portu kullanmadan önce mutlaka açık olup olmadığını kontrol etmenizde fayda var eğer portu kullandıktan sonra kapatmadan tekrar açmaya çalışırsanız programınız hata verecektir.

serialPort.PortName: SerialPort sınıfının PortName isimli özelliği seri portunuzun ismini isteyecektir. Eğer bir çevirici kullanmadan direk seri porta bağladıysanız ‘COM1’, bir çevirici aracılığıyla ismini değişti ise ‘COM5’, ‘COM6’ vb. string türünden port isminizi girebilirsiniz.

serialPort.ReadTimeout: SerialPort sınıfının ReadTimeout isimli özelliği seri portun cihazdan kaç saniye boyunca cevap beklemesini istiyorsanız onu int türünden mili saniye cinsinden girmeniz gerekiyor. Eğer istediğiniz cihazdan 3 saniye boyunca cevap gelmez ise hata vermesi ise buraya serialPort.ReadTimeout = 3000 demeniz gerekiyor.

serialPort.WriteTimeout: SerialPort sınıfının WriteTimeout isimli özelliği ise seri portunuzun yazma işlemini kaç saniye boyunca sürdürmesini istiyorsanız yine int türünden mili saniye cinsinden bu özelliği set etmeniz gerekmektedir.

ComboBox’ın içini Port isimleri ile Doldurmak for (int i = 0; i < 30; i++) { serialport.PortName = "COM" + i.ToString(); serialport.Open(); comNo_cb.Items.Add(serialport.PortName); serialport.Close(); } Veya comNo_cb.Items.Add(SerialPort.GetPortNames());

Seri Port Fonksiyonları serialPort.Open(): SerialPort sınıfının Open isimli fonksiyonu seri portunuzu açmanıza yarar. Hemen şunu söylemekte fayda var bu işlemi yapmadan önce bir hata almak istemiyorsanız port adını, baudRate’inizi belirtmeyi unutmayın. Eğer port adını belirtmez iseniz veya yanlış yazarsanız hata alacaksınız.

serialPort.Read(byte[] buffer, int offset, int count): SerialPort sınıfının Read isimli fonksiyonu seri portunuzdan veri okumanızı sağlayan bir fonksiyondur. İlk parametresi byte türünden bir dizi, ikinci parametre dizinin kaçıncı indisinden itibaren veri yerleştireceğini, son parametresine ise kaç byte veri okuyacağınızı söylemeniz gerekiyor. İlk parametre char türünden bir dizide olabilir. Fonksiyonun geri dönüş değeri ise kaç byte okunduysa onu size int türünden söyler.

serialPort.ReadByte(): SerialPort sınıfının ReadByte isimli fonksiyonu seri portdan sadece bir byte okumanızı sağlayan fonksiyon. İsmi ReadByte olmasına rağmen geri dönüş değeri int türüdür ve size okunan değeri söyler.

serialPort.ReadExisting(): SerialPort sınıfının ReadExisting isimli fonksiyonu çağrıldığı zaman seri portdan okunabilen tüm veriyi size string türünden geri döndürür.

serialPort.ReadLine(): SerialPort sınıfının ReadLine isimli fonksiyonu seri portdan NewLine karakteri gelene kadar tanımladığınız ReadTimeout süresince bekler. Gelen veriyi size string türünden geri döndürür.

serialPort.Write(): SerialPort sınıfının Write isimli fonksiyonunun 3 tipi var bunlardan biri cihaza göndermek istediğiniz veriyi string türünden göndermenizi sağlıyor; serialPort.Write("Bu veriyi cihaza yaz"); İkinci yöntem ise veriyi byte dizisi türünden göndermenizi sağlıyor. byte[] gidecekVeri = new byte[] {0x30, 0x31, 0x32, 0x33, 0x34}; serialPort.Write(gidecekVeri, 0, gidecekVeri.Length); Tahmin edeceğiniz gibi ilk parametre byte türünden bir dizi, ikinci parametre ise bu dizinin kaçıncı indisinden itibaren üçüncü parametredeki değer kadar seri portdan veri göndermenizi istiyor. Birde byte dizisinin yerine char dizisi ile gönderebileceğiniz üçüncü bir tipi bulunuyor.

serialPort.WriteLine(): SerialPort sınıfının Write isimli fonksiyonu göndermek istediğiniz veriyi string türünden parametre geçerek gönderebilirsiniz. Write fonksiyonundan tek farkı göndermek istediğiniz verinin sonuna ‘\n’ karakterini ekliyor olması.

Cümlenin parçlara Ayrılması private void DisplayText(object sender, EventArgs e) { textBox1.AppendText(RxString); textBox1.AppendText("\r\n"); string[] an0 = sensorData[0].Split(':'); textBox2.Text = an0[1]; string[] an1 = sensorData[1].Split(':'); textBox3.Text = an1[1]; } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { RxString = serialPort1.ReadLine(); sensorData = RxString.Split(','); this.Invoke(new EventHandler(DisplayText)); }

Seri Porttan Okumak Yazmak

C# Seri Port (Okuma Yazma) private void button1_Click(object sender, EventArgs e) { if (!serialPort1.IsOpen) { serialPort1.Open(); //seripport aç. } serialPort1.Write("ABC"); //porta yaz private void button2_Click(object sender, EventArgs e) { String oku = serialPort1.ReadLine()); serialPort1.Close(); private void Form1_Load(object sender, EventArgs e) { namespace seriport1 { public partial class Form1 : Form public Form1() InitializeComponent(); serialPort1.PortName = "COM1"; serialPort1.BaudRate = 9600; serialPort1.DataBits = 8; serialPort1.Parity = Parity.None; serialPort1.StopBits = StopBits.One; }

Arduino Seri Port Karakter Okuma char Data[80]; byte index = 0; void loop() { if(Serial.available() > 0) { //if(serialAvailable()) kullanılabilir while(Serial.available() > 0) { char aChar = Serial.read(); if(aChar == '\n') { lcd.print(Data); index = 0; Data[index] = NULL; } else { Data[index] = aChar; index++; Data[index] = '\0'; // Kelime sonu } } }

Arduino Seri Port Sayı Okuma void loop() { while (Serial.available() == 0); int val = Serial.parseInt(); //parseFloat Serial.println(val); if (Serial.available()>0) \\ portta veri varsa { int x = Serial.parseInt(); Serial.println(x); }

void setup() { Serial.begin(9600); } void loop() { char buffer[] = {' ',' ',' ',' ',' ',' ',' '}; // 7 bytes kadar alır while (!Serial.available()); // portta karakter bekler Serial.readBytesUntil(‘\n', buffer, 7); int incomingValue = atoi(buffer); Serial.println(incomingValue);

void setup() { Serial.begin(9600); } unsigned int integerValue=0; // Max value is 65535 char incomingByte; void loop() { if (Serial.available() > 0) { // portu bekle integerValue = 0; while(1) { // ‘\n' gelene kadar dongu incomingByte = Serial.read(); if (incomingByte == '\n') break; // ‘\n’ geldi donguden cık if (incomingByte == -1) continue; // buffer boş integerValue *= 10; // desimal olarak sola 1 kaydır // sayıyı basamağına gore hesapla integerValue = ((incomingByte - 48) + integerValue); Serial.println(integerValue); // yazdır

void loop() { //Get Command if (Serial. available() > 0) { Serial void loop() { //Get Command if (Serial.available() > 0) { Serial.readBytes(in, 10); //10 karakter oku delay(5000); Serial.print(«Okunan: "); Serial.print(in); }

Strings C# char[] t = new char[5] { 'h', 'e', 'l', 'l', 'o' }; string a = new string(5); string b = "hello"; string a = "bike"; string b = "bit"; if (a.CompareTo(b) < 0) ... if (a.Equals(b)) if (a == b) if (a != b) string a = "holly"; string b = "wood"; string c = a + b; int l = c.Length;

Strings Arduino String stringOne = "Hello String"; sensorValue = analogRead(A0); String stringOne = "Sensor value: "; String stringTwo = stringOne + sensorValue; Serial.println(stringTwo); if (stringOne ==stringTwo)

Arduino Data Diziye İşleme String serialDataIn; String data[3]; int counter; int inbyte; void setup(){ Serial.begin(9600); counter = 0; serialDataIn = String(""); } void loop() { if(serial.available){ inbyte = Serial.read(); if(inbyte >= '0' & inbyte <= '9') serialDataIn += inbyte; if (inbyte == ',') { // virgül ayıracı data[counter] = String(serialDataIn); serialDataIn = String(""); counter = counter + 1; } if(inbyte == '\n'){ //enter karakteri Serial.print(serialDataln);

Arduinoda String Parçalara Ayırma int commaIndex = myString.indexOf(','); int secondCommaIndex = myString.indexOf(',', commaIndex+1); String firstValue = myString.substring(0, commaIndex); //ilk String secondValue = myString.substring(commaIndex+1, secondCommaIndex); //ikinci String thirdValue = myString.substring(secondCommaIndex+1); //ucuncu, sonuna kadar

Arduino Karakter Katarları void setup() { char str[] = "This is my string"; char out_str[40]; int num; Serial.begin(9600); Serial.println(str); //yaz num = strlen(str); //boyu Serial.print("Kelime boyu: "); Serial.println(num); num = sizeof(str); //boyu-null dahil Serial.print("Size of the array: "); strcpy(out_str, str); //kopyala Serial.println(out_str); strcat(out_str, " sketch."); //birleştir num = strlen(out_str); Serial.print("String length is: "); num = sizeof(out_str); Serial.print("Size of the array out_str[]: "); } void loop() { void setup() { String my_str = "This is my string."; Serial.begin(9600); Serial.println(my_str); // büyük harf cevir my_str.toUpperCase(); // ustune yaz my_str = "My new string."; // yer değiştir my_str.replace("string", "Arduino sketch"); // boyunu al Serial.print("String length is: "); Serial.println(my_str.length()); }

Led Yaktır C# kodu Arduino Kodu namespace seriport1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) private void Form1_Load(object sender, EventArgs e) { if (serialPort1.IsOpen == false) serialPort1.Open(); private void button1_Click(object sender, EventArgs e) { button1.BackColor = Color.Green; button2.BackColor = Color.Gray; button3.BackColor = Color.Gray; serialPort1.WriteLine("1"); } private void button2_Click(object sender, EventArgs e) { button2.BackColor = Color.Green; button1.BackColor = Color.Gray; serialPort1.WriteLine("2"); } private void button3_Click(object sender, EventArgs e) { button3.BackColor = Color.Green; serialPort1.WriteLine("3"); } void setup() { Serial.begin(9600); pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); digitalWrite(11, LOW); digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(10, LOW); } int led = 1; void loop() { if(Serial.available()) { led=Serial.read(); switch(led) { case 49: // veya case ‘1’ digitalWrite(12, HIGH); break; case 50: // veya case ‘2’ digitalWrite(10, HIGH); case 51: // veya case ‘3’ digitalWrite(13, HIGH); Led Yaktır C# kodu Arduino Kodu

Potansiyometre oku C# Kodu Arduino Kodu namespace seripotans { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) textBox1.Text = serialPort1.ReadExisting(); private void Form1_Load(object sender, EventArgs e) if (serialPort1.IsOpen == false) serialPort1.Open(); Potansiyometre oku int val=0; void setup() { Serial.begin(9600); } void loop() val = analogRead(A0); Serial.println(val); Serial.write(val); C# Kodu Arduino Kodu

Bluetooth İle İletişim #include <SoftwareSerial.h> #define rxPin 10 #define txPin 11 SoftwareSerial BTSerial(rxPin,txPin); // rx | tx void setup() { Serial.begin(9600); BTSerial.begin(115200); //BTSerial.begin(38400); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); } int led = 1; void loop() { if(BTSerial.available()) { Serial.println("test2"); led=BTSerial.read(); switch(led) { case 'F': digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); Serial.println("pin 12"); break; case 'B': digitalWrite(7, LOW); digitalWrite(6, HIGH); Serial.println("pin 10"); case 'L': digitalWrite(5, HIGH); Serial.println("pin 13"); case '4': } } }

SerialPort port = new SerialPort("COM12"); //other properties are set by default and are what I need port.Open(); port.Write(sendMsgBuff,0,sendMsgBuff.Length); Thread.Sleep(2000); port.Read(rcvMsgBuff,0,rcvMsgBuff.Length);

public SerialPort sp; string dataReceived = string public SerialPort sp; string dataReceived = string.Empty; private delegate void SetTextDeleg(string text); private void FormLoad() { sp = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); this.sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); sp.Open(); } void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) try { Thread.Sleep(500); string x = sp.ReadLine(); // enter okuyacak this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { x }); } catch { } private void si_DataReceived(string data) dataReceived = data.Trim();