コード例 #1
0
ファイル: MainForm.cs プロジェクト: pmk9440/FFT_C_sharp
        private void MainComPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            sw.Start();
            byte[] Length       = new byte[4];
            int    DataLength   = 0;
            int    OutputLength = 0;

            int  ReadByteCount = MainComPort.BytesToRead;
            byte TempBuff      = 0x00;

            if (MainComPort.BytesToRead > 0)
            {
                for (int j = 0; j < ReadByteCount; j++)
                {
                    TempBuff           = (byte)MainComPort.ReadByte();
                    RxBuffer[NRXCOUNT] = TempBuff;

                    if (RxBuffer[0] == STX)
                    {
                        NRXCOUNT++;
                        if (NRXCOUNT >= 5)
                        {
                            if (DataLength == 0)
                            {
                                for (int i = 0; i < 4; i++)
                                {
                                    Length[i] = RxBuffer[i + 1];
                                }
                                DataLength   = ByteToInt(Length);
                                OutputLength = Complex.TransSize(DataLength / 8);
                            }

                            if (NRXCOUNT == DataLength + 6)
                            {
                                if (RxBuffer[NRXCOUNT - 1] == ETX)
                                {
                                    ParsingData(DataLength + 6, OutputLength);
                                    NRXCOUNT = 0;
                                }
                                else
                                {
                                    NRXCOUNT = 0;
                                }
                            }
                        }
                    }
                    else
                    {
                        NRXCOUNT = 0x00;
                    }
                }
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: pmk9440/FFT_C_sharp
        private void SendData(double[] Data, int InputLength)
        {
            byte[] TxBuffer    = new byte[(InputLength + 1) * 8];
            byte[] TempData    = new byte[8];
            byte[] Length      = new byte[4];
            byte[] Temp        = new byte[2];
            byte[] CheckSum    = new byte[2];
            int    nTxCount    = 5;
            int    nTempCount  = 0;
            Int16  intCheckSum = 0;

            Length      = IntToByte(InputLength * 8 + 2);
            TxBuffer[0] = STX;
            TxBuffer[TxBuffer.Length - 1] = ETX;
            for (int i = 0; i < 4; i++)
            {
                TxBuffer[i + 1] = Length[i];
            }

            try
            {
                for (int i = 0; i < InputLength; i++)
                {
                    TempData = DoubleToByte(Data[i]);

                    for (int j = 0; j < 8; j++)
                    {
                        TxBuffer[nTxCount + j] = TempData[j];
                    }

                    nTxCount += 8;
                }

                // Checksum
                intCheckSum = 0x00;
                for (int i = 5; i < TxBuffer.Length - 3; i++)
                {
                    Temp[nTempCount] = TxBuffer[i];
                    nTempCount++;
                    if (nTempCount == 2)
                    {
                        intCheckSum += BitConverter.ToInt16(Temp, 0);
                        nTempCount   = 0;
                    }
                }

                CheckSum = BitConverter.GetBytes(intCheckSum);
                TxBuffer[TxBuffer.Length - 3] = CheckSum[0];
                TxBuffer[TxBuffer.Length - 2] = CheckSum[1];
                MainComPort.Write(TxBuffer, 0, TxBuffer.Length);
            }
            catch (Exception) { }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: pmk9440/FFT_C_sharp
        private void BtnSerialDisconnect_Click(object sender, EventArgs e)
        {
            MainComPort.Close();
            BtnSerialConnect.Enabled    = true;
            BtnSerialDisconnect.Enabled = false;

            StatusPortName.Text   = "";
            StatusBaudRate.Text   = "";
            StatusDataBits.Text   = "";
            StatusStopBits.Text   = "";
            StatusParityBits.Text = "";
            StatusHandShake.Text  = "";
            StatusPort.Text       = "CLOSED";
        }