Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

seri iletişim

Başlatan bbs2006, 06 Ocak 2014, 08:25:07

bbs2006

Merhaba
c# programında seri iletişim yapıyorum. 8 adet ledim bar. bunlara ait 8 adette buton var. örnegni. 1. ledi yak dedigim zaman 1. led yanıyor. tekrar 2. ledi yak dedigim zaman ise 1. led yanmaya devam ediyor. 2. led yanöıyor. programı tekrar çalıştıdıgım zman 2. led yak dedigim zaman yakıyor. bunu nasıl düzeltebilirim. yardımcı olursanız sevinirim.

polleme

Kodunuzu görebilirsek daha net yorum yapabiliriz.

Tagli

bbs2006 darılma ama bu işin usulünü öğrenmen için aynı şeyleri kaç kez tekrar etmemiz gerekecek?

Daha geçende aynısını yaşadık: https://www.picproje.org/index.php/topic,50635.0.html
Gökçe Tağlıoğlu

OG

Arkadaşlar hemen kızmayın, önce denemesi gereken şeyler olabilir

bbs2006,
-Butona tam basmıyor olabilirsin
-Buton kontakları kirlenmiş olabilir, kontak sprey kullanın
-Uygun renkte buton kullanmamış olabilirsin.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

trgtylcnky

@OG hiç güleceğim yoktu.

Arkadaşın sorusuna gelince; sanırım "Butona basılınca lede bağlı pini 1 yap" gibi bir algoritmanız var. Diğerlerini söndürmek istiyorsanız onu da düşünmelisiniz.

bbs2006

ben devremi arayüzünü  c# yazdım. deleyici olarak ccs c kullanıyorum. bilgisayara virtual seri port kurdum.proteus programında dvreyi çizdim. c# led yak dedigim z aman proteusta yakıyor. devre çalışırken 2. ledi yak dedigimz aman yakmıyor. proteus programını durudurup tekrar çalıştırdıgımz aman 2. led çalışıyor.

polleme

Alıntı yapılan: bbs2006 - 06 Ocak 2014, 13:55:32
ben devremi arayüzünü  c# yazdım. deleyici olarak ccs c kullanıyorum. bilgisayara virtual seri port kurdum.proteus programında dvreyi çizdim. c# led yak dedigim z aman proteusta yakıyor. devre çalışırken 2. ledi yak dedigimz aman yakmıyor. proteus programını durudurup tekrar çalıştırdıgımz aman 2. led çalışıyor.

Sormaya devam ediyorsunuz ama Tagli'nin de uyarısına rağmen ortada ne şema var, ne de kod. Bu şekilde kimse size net yardımcı olamaz. Ayrıca Türkçe'yi kullanma şeklinize dikkat etmeniz gerek, 1-2 kez hata olabilir ama sürekli, her mesajınızda ve çok sayıda o kadar çok hatanız var ki, Türkçe'yi yeni öğrendiğinize yormak istiyorum. Umarım öyledir. Eğer Türkçe ana diliniz ise ve bu şekilde kullanmaya devam edecekseniz bu size yazacağım son mesaj olacak.


bbs2006

#7
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_e1,rcv=PIN_e0,bits=8)
//#use rs232(baud=9600,parity=N,xmit=PIN_e1,rcv=PIN_e2,bits=8)
#include <LCD420.C>

//char x;

veri(){
  char  x[80];
 
   gets(x);

   if(x[0]=='0'){
 
   output_c(0x01);

  }
   if(x[0]=='1'){
 
   output_c(0x02);
   
   }
   if(x[0]=='2'){
 
   output_c(0x04);
   
   }
   
   if(x[0]=='3'){
 
   output_c(0x08);
   
   }
   
  if(x[0]=='4'){
 
   output_c(0x10);
   
   }
   if(x[0]=='5'){
 
   output_c(0x20);
    }
   
    if(x[0]=='6'){
 
   output_c(0x40);
    }
    if(x[0]=='7'){
 
   output_c(0x80);
    }
   
   if(x[0]=="00"){
 
   output_high(pin_c0);

  }
   if(x[0]=="11"){
 
   output_low(pin_C1);

  }
   if(x[0]=="22"){
 
   output_low(pin_c2);

  }
   if(x[0]=="33"){
 
   output_low(pin_c3);

  }
   if(x[0]=="44"){
 
   output_low(pin_c4);

  }
   
   if(x[0]=="55"){
 
   output_low(pin_c5);

  }
   
   if(x[0]=="66"){
 
   output_low(pin_c6);

  }
   
   
   if(x[0]=="77"){
 
   output_low(pin_c7);

  }
   
   
   
   

mesaj birleştirme:: 06 Ocak 2014, 14:45:50

/*-------------------------------------------------------------------
L293D ENTEGRESİYLE DC MOTOR YÖN KONTROL DEVRE UYGULAMASI
--------------------------------------------------------------------
*/
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_e1,rcv=PIN_e0,bits=8)
//#use rs232(baud=9600,parity=N,xmit=PIN_e1,rcv=PIN_e2,bits=8)
#include <LCD420.C>

//char x;

veri(){
  char  x[80];
 
   gets(x);

   if(x[0]=='0'){
 
   output_c(0x01);

  }
   if(x[0]=='1'){
 
   output_c(0x02);
   
   }
   if(x[0]=='2'){
 
   output_c(0x04);
   
   }
   
   if(x[0]=='3'){
 
   output_c(0x08);
   
   }
   
  if(x[0]=='4'){
 
   output_c(0x10);
   
   }
   if(x[0]=='5'){
 
   output_c(0x20);
    }
   
    if(x[0]=='6'){
 
   output_c(0x40);
    }
    if(x[0]=='7'){
 
   output_c(0x80);
    }
   
   if(x[0]=="00"){
 
   output_high(pin_c0);

  }
   if(x[0]=="11"){
 
   output_low(pin_C1);

  }
   if(x[0]=="22"){
 
   output_low(pin_c2);

  }
   if(x[0]=="33"){
 
   output_low(pin_c3);

  }
   if(x[0]=="44"){
 
   output_low(pin_c4);

  }
   
   if(x[0]=="55"){
 
   output_low(pin_c5);

  }
   
   if(x[0]=="66"){
 
   output_low(pin_c6);

  }
   
   
   if(x[0]=="77"){
 
   output_low(pin_c7);

  }
   return;
}



void main(){                           //Ana Fonksiyon.
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
while(1){
veri();
}}
   
   
   
           
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
   

mesaj birleştirme:: 06 Ocak 2014, 14:48:13

c# kodları


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace seri_port
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("3" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();

        }

        private void radioButton4_Click(object sender, EventArgs e)
        {
            serialPort1.BaudRate = 600;
        }

        private void radioButton5_Click(object sender, EventArgs e)
        {
            serialPort1.BaudRate = 1200;
        }

        private void radioButton6_Click(object sender, EventArgs e)
        {
            serialPort1.BaudRate = 2400;
        }

        private void radioButton7_Click(object sender, EventArgs e)
        {
            serialPort1.BaudRate = 9600;
        }

        private void radioButton8_Click(object sender, EventArgs e)
        {
            serialPort1.BaudRate = 19200;
        }

        private void radioButton1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM1";
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM2";
        }
        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM3";
        }




        private void button4_Click(object sender, EventArgs e)
        {
          if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("4" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();

       
       
       
       
       
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("5" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();
       
        }



        private void button1_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("7" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();
       
        }


        private void button3_Click(object sender, EventArgs e)
        {
        if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("6" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();





        }



        private void button8_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("0" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();

        }

       

        private void button7_Click_1(object sender, EventArgs e)
        {
         if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("2" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();

        }

        private void button5_Click_1(object sender, EventArgs e)
        {
        if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("1" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();

       
       
       
       
       
       
       
       
       
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {
           
       
       
       
       
        }

        private void button15_Click(object sender, EventArgs e)
        {

            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }

            serialPort1.WriteLine("00" + (char)13);

            //  label1.Text = "A bilgisi gönderildi";

            serialPort1.Close();




        }

        private void button18_Click(object sender, EventArgs e)
        {

        }


    }


}

Tagli

Bu birinci ve ikinci LED'i yakma işi C# programında hangi butonlara ya da fonksiyonlara denk geliyor?

Bence seri port'u sürekli aç kapa yapmamalısın. Hız ve port ayarlarını bir kez yapıp portu açtıktan sonra bu ayarların kurcalanması iyi bir fikir değil. Ayrıca her veri gönderme işleminden sonra da tekrar kapatılmamalı.
Gökçe Tağlıoğlu

micelow

Hız ve port ayarlamalarını form un load olayına yazıp portu açmak veya kapatmak içinde bir buton tanımlayarak işlemlerini yaparsan daha sade ve anlaşılır olur internette bu şekilde bol örnek mevcut.
"Bir tek şeye ihtiyacımız var çalışkan olmak."

bbs2006

Alıntı yapılan: Tagli - 06 Ocak 2014, 17:50:19
Bu birinci ve ikinci LED'i yakma işi C# programında hangi butonlara ya da fonksiyonlara denk geliyor?

Bence seri port'u sürekli aç kapa yapmamalısın. Hız ve port ayarlarını bir kez yapıp portu açtıktan sonra bu ayarların kurcalanması iyi bir fikir değil. Ayrıca her veri gönderme işleminden sonra da tekrar kapatılmamalı.

portu hiç kapatmamamı gerekiyor. ne yapmam gerekiyor

Tagli

Programda bir tane "portu aç" düğmesi olsun. Diğer düğmeler, mesela LED yakma düğmeleri porta sadece veri bassın. Yani portu kapatmasın veya açmasınlar. Port bir kez açıldıktan sonra hız ve port ayar düğmelerini pasif et, port açıkken bu ayarlar kurcalanmasın.
Gökçe Tağlıoğlu