示例#1
0
 private void COMPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
 {
     if (firstStart)
     {
         Display.Series[0].Points.Clear();
         Display.Series[1].Points.Clear();
         Display.Series[2].Points.Clear();
         firstStart = false;
     }
     if (NumMode.Checked == false)
     {
         byte[] buf = new byte[COMPort.BytesToRead];
         COMPort.Read(buf, 0, buf.Length);
         foreach (Byte mes in buf)
         {
             countByte++;
             value = value << 8 | mes;
             if (countByte == length)
             {
                 //Display.Series[seriousCount].Points.AddY(value);
                 this.Invoke(new Action(() =>
                 {
                     Display.Series[seriousCount].Points.AddY(value);
                 }));
                 value = 0;
                 seriousCount++;
                 countByte = 0;
             }
             if (seriousCount == seriousnum)
             {
                 seriousCount = 0;
             }
         }
     }
     else
     {
         byte[] buf = new byte[COMPort.BytesToRead];
         COMPort.Read(buf, 0, buf.Length);
         foreach (Byte mes in buf)
         {
             countByte++;
             value = value * 10 + (mes - '0');
             if (countByte == length)
             {
                 //Display.Series[seriousCount].Points.AddY(value);
                 this.Invoke(new Action(() =>
                 {
                     Display.Series[seriousCount].Points.AddY(value);
                 }));
                 value = 0;
                 seriousCount++;
                 countByte = 0;
             }
             if (seriousCount == seriousnum)
             {
                 seriousCount = 0;
             }
         }
     }
 }
示例#2
0
    public static void ThreadReadProcess()
    {
        COMPort cp = new COMPort("COM2");

        cp.Open();
        while (true)
        {
            Thread.Sleep(100);
            if (cp.Read() > 0)
            {
                Console.WriteLine(System.Text.Encoding.ASCII.GetString(cp.getBuffer()));
            }
        }
    }
示例#3
0
 private void ModbusSendReceive(object param)
 {
     lock (this)
     {
         try
         {
             ModbusParam parameters;
             if (param is ModbusParam)
             {
                 parameters = (ModbusParam)param;
             }
             else
             {
                 throw new ModbusPDUException("Wrong parametrization of ModbusSendReceive method.");
             }
             byte[] responseFrame = new byte[(int)parameters.ResponseSize];
             COMPort.DiscardInBuffer();
             COMPort.Write(parameters.RequestADU, 0, parameters.RequestADU.Length);
             Thread.Sleep(ResponseWaitingDelay);
             COMPort.Read(responseFrame, 0, (int)parameters.ResponseSize);
             byte[] adu = ModbusSerialPDU.extractADU(responseFrame);
             if (responseFrame[1] > (byte)127)
             {
                 throw new ModbusPDUException(String.Format("Modbus application error : function {0:X}, exception {1:X}", responseFrame[1], responseFrame[2]));
             }
             else
             if (responseFrame[1] == 0x03)
             {
                 Int16[] values = GetValuesFromResponseADU03(adu);
                 ModbusDataReceived(values);
             }
         }
         catch (Exception ex)
         {
             commException = ex;
             ModbusError(ex);
         }
     }
 }
示例#4
0
        private void btnRead_Click(object sender, EventArgs e)
        {
            byte[] buff = new byte[41];
            buff[0] = 0xaa;
            buff[1] = 0x52; // R

            for (int i = 2; i < 40; i++)
            {
                buff[i] = 0;
            }

            buff[40] = 0x5d;

            COMPort.Open();
            COMPort.Write(buff, 0, 41);

            int cnt = 0;

            while (cnt < 40)
            {
                if (COMPort.BytesToRead > 40)
                {
                    cnt = COMPort.Read(buff, 0, 41);
                }
            }
            COMPort.Close();

            chkPPMA.Checked = (buff[2] == 1);
            if (buff[3] - 4 < 7)
            {
                cbFrameA.SelectedIndex = buff[3] - 4;
            }
            if (buff[4] - 1 < 16)
            {
                cbChannelsA.SelectedIndex = buff[4] - 1;
            }

            if (buff[5] < 17)
            {
                cbChA1.SelectedIndex = buff[5];
            }
            if (buff[6] < 17)
            {
                cbChA2.SelectedIndex = buff[6];
            }
            if (buff[7] < 17)
            {
                cbChA3.SelectedIndex = buff[7];
            }
            if (buff[8] < 17)
            {
                cbChA4.SelectedIndex = buff[8];
            }
            if (buff[9] < 17)
            {
                cbChA5.SelectedIndex = buff[9];
            }
            if (buff[10] < 17)
            {
                cbChA6.SelectedIndex = buff[10];
            }
            if (buff[11] < 17)
            {
                cbChA7.SelectedIndex = buff[11];
            }
            if (buff[12] < 17)
            {
                cbChA8.SelectedIndex = buff[12];
            }
            if (buff[13] < 17)
            {
                cbChA9.SelectedIndex = buff[13];
            }
            if (buff[14] < 17)
            {
                cbChA10.SelectedIndex = buff[14];
            }
            if (buff[15] < 17)
            {
                cbChA11.SelectedIndex = buff[15];
            }
            if (buff[16] < 17)
            {
                cbChA12.SelectedIndex = buff[16];
            }
            if (buff[17] < 17)
            {
                cbChA13.SelectedIndex = buff[17];
            }
            if (buff[18] < 17)
            {
                cbChA14.SelectedIndex = buff[18];
            }
            if (buff[19] < 17)
            {
                cbChA15.SelectedIndex = buff[19];
            }
            if (buff[20] < 17)
            {
                cbChA16.SelectedIndex = buff[20];
            }

            chkPPMB.Checked = (buff[21] == 1);
            if (buff[22] - 4 < 7)
            {
                cbFrameB.SelectedIndex = buff[22] - 4;
            }
            if (buff[23] - 1 < 16)
            {
                cbChannelsB.SelectedIndex = buff[23] - 1;
            }

            if (buff[24] < 17)
            {
                cbChB1.SelectedIndex = buff[24];
            }
            if (buff[25] < 17)
            {
                cbChB2.SelectedIndex = buff[25];
            }
            if (buff[26] < 17)
            {
                cbChB3.SelectedIndex = buff[26];
            }
            if (buff[27] < 17)
            {
                cbChB4.SelectedIndex = buff[27];
            }
            if (buff[28] < 17)
            {
                cbChB5.SelectedIndex = buff[28];
            }
            if (buff[29] < 17)
            {
                cbChB6.SelectedIndex = buff[29];
            }
            if (buff[30] < 17)
            {
                cbChB7.SelectedIndex = buff[30];
            }
            if (buff[31] < 17)
            {
                cbChB8.SelectedIndex = buff[31];
            }
            if (buff[32] < 17)
            {
                cbChB9.SelectedIndex = buff[32];
            }
            if (buff[33] < 17)
            {
                cbChB10.SelectedIndex = buff[33];
            }
            if (buff[34] < 17)
            {
                cbChB11.SelectedIndex = buff[34];
            }
            if (buff[35] < 17)
            {
                cbChB12.SelectedIndex = buff[35];
            }
            if (buff[36] < 17)
            {
                cbChB13.SelectedIndex = buff[36];
            }
            if (buff[37] < 17)
            {
                cbChB14.SelectedIndex = buff[37];
            }
            if (buff[38] < 17)
            {
                cbChB15.SelectedIndex = buff[38];
            }
            if (buff[39] < 17)
            {
                cbChB16.SelectedIndex = buff[39];
            }
        }