Haberler:

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

Ana Menü

Kantar C# yardım

Başlatan sezerbulanik33, 30 Kasım 2020, 13:53:57

sezerbulanik33

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();
        }
    }
}

sifirzero

Pek anlamam ama while döngusu gibi birşey eklemek gerekiyor yada if sorgu yaptirabilirsin.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sezerbulanik33

Timer kısmında if sorugusu var ama

hkn_blt

port dinleme yapmanız gerekli;
https://www.youtube.com/watch?v=_Wb0ickT_g4
videoyu izleyebilirsiniz.

sezerbulanik33

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

muhittin_kaplan

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

Proteus

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

isa_olcer

Kantar teknik servisinde çalışıyorum donanım olarak bir sorun var ise yardımcı olabilirim. İndikatörün marka modeli nedir?

sezerbulanik33

3.Seçenek hocam ağırlık stabil olunca gösteriyor
 indikatör modeli ZemicA12e

sezerbulanik33

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

Proteus

Süper ! Ozaman senkronızasyon sağlaman lazım eğer sağlayamazsan.
İstek cevap'a çevir kantarı öyle sorgula

sezerbulanik33

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

sezerbulanik33

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

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();
            }

        }
    }

ACM

#13
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.

sezerbulanik33

Hocam yukarda resmini attım zaten