Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: sezerbulanik33 - 30 Kasım 2020, 13:53:57

Başlık: Kantar C# yardım
Gönderen: sezerbulanik33 - 30 Kasım 2020, 13:53:57
Arkadaşlar merhaba internetten açık kaynak ile kantardan veri okuma deniyorum verileri doğruda alabiliyorum ama sorunum şu kantarda araba yokken serialportu açınca 0 doğru gösteriyor ama araba çıkınca serialportu kapatıp açıp kg öyle görüyorum serial port aça kapat yapmadan sürekli değerleri nasıl göreblirim
kodlar şu şekilde
public partial class Form1 : Form
    {
        string[] ports = SerialPort.GetPortNames();
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (string port in ports)
            {
                comboBox1.Items.Add(port);
                comboBox1.SelectedIndex = 0;
            }
            comboBox2.Items.Add("2400");
            comboBox2.Items.Add("4800");
            comboBox2.Items.Add("9600");
            comboBox2.Items.Add("19200");
            comboBox2.Items.Add("115200");
            comboBox2.SelectedIndex = 2;
            label3.Text = "Bağlantı Kapalı";
       
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            {
                // Form kapandığında SerialPort1 portu kapat.
                if (serialPort1.IsOpen == true)
                {
                    serialPort1.Close();
                }
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                string sonuc = serialPort1.ReadExisting();
                string[] sonuc2 = sonuc.Split(' ');
                string gelen = sonuc2[1];
                string txt = gelen;
                Boolean kontrol = false;
                for (byte a = 0; a < txt.Length; a++)
                    if (txt[a] < '0' || txt[a] > '6')
                    {
                        kontrol = true;
                        break;
                    }
                if (kontrol == true)
                {
                    System.IO.File.WriteAllText("dosya.txt", gelen, System.Text.Encoding.Default);
                 
                }
                else
                {
                    richTextBox1.Text = gelen;
                }
                timer1.Interval = 0015;
                if (richTextBox1.Text == "")
                {
                   richTextBox1.Text = "0";
                }
            }
            catch (Exception ex)
            {
                timer1.Stop();
                MessageBox.Show(ex.Message);
               
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
            if (serialPort1.IsOpen == false)
            {
                if (comboBox1.Text == "")
                    return;
                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text);
                try
                {
                    serialPort1.Open();
                    label3.ForeColor = Color.Green;
                    label3.Text = "Bağlantı Açık";
                }
                catch (Exception hata)
                {
                    MessageBox.Show("Hata:" + hata.Message);
                }
            }
            else
            {
                label3.Text = "Bağlantı kurulu !!!";
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //BAĞLANTIYI KES BUTONU
            timer1.Stop();
            if (serialPort1.IsOpen == true)
            {
                serialPort1.Close();
                label3.ForeColor = Color.Red;
                label3.Text = "Bağlantı Kapalı";
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            string s = richTextBox1.Text;
            listBox1.Items.Add(richTextBox1.Text);
        }
        private void button4_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }
    }
}
Başlık: Ynt: Kantar C# yardım
Gönderen: sifirzero - 01 Aralık 2020, 12:55:14
Pek anlamam ama while döngusu gibi birşey eklemek gerekiyor yada if sorgu yaptirabilirsin.
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 01 Aralık 2020, 13:22:32
Timer kısmında if sorugusu var ama
Başlık: Ynt: Kantar C# yardım
Gönderen: hkn_blt - 01 Aralık 2020, 13:56:28
port dinleme yapmanız gerekli;
https://www.youtube.com/watch?v=_Wb0ickT_g4
videoyu izleyebilirsiniz.
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 01 Aralık 2020, 14:28:29
Dinliyebiliyorum verileri alıyorum ama 1 veri geliyor sonra kapatıp açnca 2. veri geliyor ben kapatıp açmadan veriler sürekli gelsin istiyorum
Başlık: Ynt: Kantar C# yardım
Gönderen: muhittin_kaplan - 01 Aralık 2020, 21:55:46
gelen veriyi bir terminal programıyla dinleseniz,sonra buraya video olarak gönderseniz?

Aşağıda çok uzun zaman önce yaptığım, seriport uygulaması var. seriporttan aldığı veriye göre grafik oluşturan bir uyglama. VB .net ile.
https://yadi.sk/d/E8lfo1Lne9KIgA
Başlık: Ynt: Kantar C# yardım
Gönderen: Proteus - 01 Aralık 2020, 22:16:02
Selamlar ,
Kantarlarda protokoller var 3 çeşit isimlerini unuttum ama mantığı şöyle
1. İstek cevap
2.Surekli sana veri basar
3.De var ama tam olarak hatırlamıyorum yanlış bilgi vermek istemiyorum.
Hangi protokolde çalıştığına emin ol
Düzenleme: hatırladım şimdi üstüne ağırlık koyunca ağırlık stabil olunca display de veri basar
Başlık: Ynt: Kantar C# yardım
Gönderen: isa_olcer - 02 Aralık 2020, 04:11:51
Kantar teknik servisinde çalışıyorum donanım olarak bir sorun var ise yardımcı olabilirim. İndikatörün marka modeli nedir?
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 02 Aralık 2020, 10:18:13
3.Seçenek hocam ağırlık stabil olunca gösteriyor
 indikatör modeli ZemicA12e
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 02 Aralık 2020, 14:55:57
Alıntı yapılan: hkn_blt - 01 Aralık 2020, 13:56:28port dinleme yapmanız gerekli;
https://www.youtube.com/watch?v=_Wb0ickT_g4
videoyu izleyebilirsiniz.
Burdaki gibi yaptım hocam ama Bu seferde istediğim değerin dışında bol 0 lı ve farklı simgelerle sonuç geliyor sadece kg nasıl getirecem kırpma işlemi nasıl yapacam
Başlık: Ynt: Kantar C# yardım
Gönderen: Proteus - 02 Aralık 2020, 15:31:09
Süper ! Ozaman senkronızasyon sağlaman lazım eğer sağlayamazsan.
İstek cevap'a çevir kantarı öyle sorgula
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 02 Aralık 2020, 15:45:28
Alıntı yapılan: Proteus - 02 Aralık 2020, 15:31:09Süper ! Ozaman senkronızasyon sağlaman lazım eğer sağlayamazsan.
İstek cevap'a çevir kantarı öyle sorgula
hocam malesef bu konuda hiç bilgim yok açık kaynaklarla bişeler yapmaya çalışıyorum
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 02 Aralık 2020, 15:48:12
Başka bir açık kaynak buldum tam istediğim gibi çalışıyor aslında ama ağırlık varken değeri gösteriyor ama istediğim kısmı yani sadece kg kısmını almak istiyorum
(https://i.ibb.co/JdsMDzW/ae7c86dc-2972-46e9-bd8b-9a210e9bd9c0.jpg) (https://ibb.co/JdsMDzW)
00040 kısmını sadece nasıl gösterebilirim textboxta
private string veri;
        int sayac;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.PortName = "COM1";
                serialPort1.BaudRate = 9600;
                serialPort1.DataBits = 8;
                serialPort1.Handshake = Handshake.None;
                serialPort1.Open();
                serialPort1.ReadTimeout = 500;
                serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
            }
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            veri = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));
        }
        private void DisplayText(object sender, EventArgs e)
        {
            textBox1.AppendText(veri);
            timer1.Start();


        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            sayac = sayac + 1;
            if (sayac == 20)
            {
                sayac = 0;
                textBox1.Text = "";
                timer1.Stop();
            }

        }
    }
Başlık: Ynt: Kantar C# yardım
Gönderen: ACM - 02 Aralık 2020, 18:13:35
A12 ayarları var bende ama aynı indikatörmi bakmak lazım , ön panelin resmi varmı ?

00040 haricinde datalarda geliyordur mutlaka ama terminal programın göstermiyor olabilir. Gelen byte grupta mutlaka bir başlangıç verisi vardır  , bu veri her zaman aynı sırada olur . Örn   "'+&(=S..,00040^ş*" bu şelilde bir katar düşün. Bu katarda S her zaman 6. sırada olur. Sen S yi bekleyeceksin gelince 3 hane atlayacak ve 5 hane alacaksın.Özetle gelen katarı dikkatlice izle sırası ve karakteri değişmeyen veriyi bul. Yada bu katarların hepsini kopyala burada paylaş beraber bakalım.
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 02 Aralık 2020, 18:32:38
Hocam yukarda resmini attım zaten
Başlık: Ynt: Kantar C# yardım
Gönderen: ACM - 02 Aralık 2020, 21:10:02
Alıntı yapılan: sezerbulanik33 - 02 Aralık 2020, 18:32:38Hocam yukarda resmini attım zaten

 İndikatörün resminden bahsemiştim , eğer aynı indikatör ise ayarını verecektim , data gönderimini devamlı gönderim olarak ayarlayacaktınız , işler kolaylaşırdı o zaman.
   Sen C# biliyormusun ? Bu iş için açık kaynağa gerek yok. Tüm yapacağın gelen veriyi bir stringe yükleyip içinden ayıklama yapacaksın o kadar. Vb olsa yardımcı olurdum.
Başlık: Ynt: Kantar C# yardım
Gönderen: kamilsorhan - 03 Aralık 2020, 16:40:13
Siz,kodları  vb olarak yazın arkadaş ,internetten bazı linkleri kullanarak vb'yi c# 'a çevirsin.
Başlık: Ynt: Kantar C# yardım
Gönderen: sezerbulanik33 - 06 Aralık 2020, 12:30:17
Alıntı yapılan: A.C.M - 02 Aralık 2020, 21:10:02İndikatörün resminden bahsemiştim , eğer aynı indikatör ise ayarını verecektim , data gönderimini devamlı gönderim olarak ayarlayacaktınız , işler kolaylaşırdı o zaman.
   Sen C# biliyormusun ? Bu iş için açık kaynağa gerek yok. Tüm yapacağın gelen veriyi bir stringe yükleyip içinden ayıklama yapacaksın o kadar. Vb olsa yardımcı olurdum.

(https://i.ibb.co/Lrn7jt5/4ab1695d-5640-4ac5-a027-e86540a9bcc7.jpg) (https://ibb.co/Lrn7jt5)
BUYRUN HOCAM
Buyurun Hocam.