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