Пример #1
0
        private void serialP_zpracovat(byte data)
        {
            if (InvokeRequired)
            {
                Invoke(new Action <byte>(serialP_zpracovat), data);
            }
            else
            {
                if (data == 13)
                {
                    int vstup = Convert.ToInt32(strPort[1]) - 48;     // převede ze znaku na ASCII kod, kde '0' je 48
                    if (strPort[0] == '0' && strPort[2] == 'A')
                    {
                        if (textBox2.Text == "")
                        {
                            textBox2.Text = ".";
                        }
                        int    plen = strPortPoc - 3 + textBox2.TextLength - 1;
                        Char[] p1   = new Char[plen];
                        int    i    = 0;
                        while (strPort[i + 3] != '.')
                        {
                            p1[i] = strPort[i + 3];
                            i++;
                        }
                        int j;
                        for (j = 0; j < textBox2.TextLength; j++)
                        {
                            p1[i + j] = textBox2.Text[j];
                        }
                        i += j;
                        while (i < plen)
                        {
                            p1[i] = strPort[i + 3 - textBox2.TextLength + 1];
                            i++;
                        }
                        Double hodn = Convert.ToDouble(new String(p1));

                        int cil = kamPoslatHodnotu(vstup);
                        // odešle změřenou hodnotu
                        usercontrol[vstup - 1].odeslanoHodnot++;
                        odesilac.inBufferKlav(hodn.ToString() + textBox3.Text);
                        for (i = 0; i < poKazdeHodn.getpoc(); i++)
                        {
                            //poKazdeHodn
                            //if((int)poKazdeHodn.getzprava(i).Msg==(int)Tkomun.WMessages.WM_KEYDOWN)
                            odesilac.inBufferZprava(poKazdeHodn.getzprava(i));
                        }
                        for (j = 0; j < usercontrol2max; j++)
                        {
                            if (poNHodn[j].numericUpDown1.Value != 0 && usercontrol[vstup - 1].odeslanoHodnot % poNHodn[j].numericUpDown1.Value == 0)
                            {
                                odesilac.inBufferKlav(poNHodn[j].textBox1.Text);
                                for (i = 0; i < poNHodn[j].getPocZprav(); i++)
                                {
                                    //poNHodn
                                    odesilac.inBufferZprava(poNHodn[j].getZprava(i));
                                }
                            }
                        }
                        odesilac.odeslat(cil);
                        listBox1.Items.Add(hodn.ToString() + " ze vstupu " + vstup.ToString());
                    }
                    if (strPort[0] == '9')      // nějaká chyba
                    {
                        if (strPort[2] == '1')
                        {
                            labelChyba.Text = "nepřipojené nebo vypnuté měřidlo na vstupu: " + vstup.ToString();
                        }
                        if (strPort[2] == '2')
                        {
                            labelChyba.Text = "chyba formátu dat došlých z měřidla na vstupu: " + vstup.ToString();
                        }
                        if (checkBoxChyboveHlaseni.Checked)
                        {
                            int cil = kamPoslatHodnotu(vstup);
                            odesilac.inBufferKlav("chyba");
                            odesilac.odeslat(cil);
                        }
                    }
                    //listBox1.Items.Add(new String(strPort));
                    strPortPoc = 0;
                }
                else
                {
                    strPort[strPortPoc] = (char)data;
                    strPortPoc++;
                }
            }
        }
Пример #2
0
 public int getPocZprav()
 {
     return(poNHodn.getpoc());
 }