Esempio n. 1
0
        public Data GetData(int id)
        {
            if (!port.IsOpen)
            {
                port.Open();
            }
            MyModbus modbus = new MyModbus();

            byte[] tByte = modbus.GetReadFrame((byte)0x01, (byte)0x03, (byte)0x02, (byte)0x01, 8);
            port.Write(tByte, 0, 8);
            port.Write(";");
            byte[] tRecvBytes = new byte[32];
            port.Read(tRecvBytes, 0, 32);
            string tRecvText = OnGetData(tRecvBytes, 2);
            UInt32 tData     = Convert.ToUInt32(tRecvText, 16);

            byte[] lByte = modbus.GetReadFrame((byte)0x01, (byte)0x03, (byte)0x05, (byte)0x01, 8);
            port.Write(lByte, 0, 8);
            port.Write(";");
            byte[] lRecvBytes = new byte[32];
            port.Read(tRecvBytes, 0, 32);
            string lRecvText = OnGetData(tRecvBytes, 2);
            UInt32 lData     = Convert.ToUInt32(lRecvText, 16);

            double t = (double)tData;

            temperature = (1.0 / (1.0 / (25 + 273.15) + 1.0 / 3435.0 * (Math.Log(1024.0 / t) - 1.0)) - 273.15);
            light       = (double)lData;
            id++;

            Data data = new Data(id, "COM3", 9600, temperature, light, 0, 0, 0, 0, 0, "", "");

            return(data);
        }
Esempio n. 2
0
        public void WriteLED(double rV, double gV, double yV, double bV, double wV)
        {
            if (!port.IsOpen)
            {
                port.Open();
            }
            red    = rV;
            green  = gV;
            yellow = yV;
            blue   = bV;
            white  = wV;

            int[] LED = new int[5];
            LED[0] = (int)rV;
            LED[1] = (int)gV;
            LED[2] = (int)yV;
            LED[3] = (int)bV;
            LED[4] = (int)wV;
            string[] sLED      = new string[5];
            string   LED_Write = "";

            for (int j = 0; j < 5; j++)
            {
                if (LED[j] >= 10)
                {
                    sLED[j] = "00" + LED[j].ToString();
                }
                else
                {
                    sLED[j] = "000" + LED[j].ToString();
                }
                LED_Write += sLED[j];
            }
            List <byte>   bWrite = new List <byte>();
            List <string> sWrite = new List <string>();

            for (int j = 0; j < LED_Write.Length; j += 2)
            {
                sWrite.Add(LED_Write.Substring(j, 2));
            }
            for (int j = 0; j < sWrite.Count; j++)
            {
                bWrite.Add(Convert.ToByte(sWrite[j], 16));
            }
            byte[] myWrite = bWrite.ToArray();

            MyModbus modbus = new MyModbus();

            byte[]      text  = modbus.GetReadFrame(0x01, 0x10, 0x06, 0x05, 8);
            List <byte> bText = new List <byte>();
            int         i     = 0;

            for (int j = 0; j < 6; j++)
            {
                bText.Add(text[i]);
                i++;
                if (i == 6)
                {
                    bText.Add(0x0A);
                    foreach (byte wb in myWrite)
                    {
                        bText.Add(wb);
                    }
                }
            }
            byte[] LED_Text = bText.ToArray();
            ushort crc      = MyModbus.CRC16(LED_Text, 0, LED_Text.Length - 3);

            bText.Add(MyModbus.WORD_HI(crc));
            bText.Add(MyModbus.WORD_LO(crc));
            byte[] myText = bText.ToArray();
            port.Write(myText, 0, myText.Length);
            port.Write(";");
            port.Close();
        }
 private void btConnect_Click(object sender, EventArgs e)
 {
     MyModbus.Disconnect();
     MyModbus.Connect(this.txtIP.Text, Convert.ToInt32(txtPort.Text));
 }