コード例 #1
0
        }     //function

        private void TO_RXBuffer(byte DATA)
        {
            if (this.RXptn < RX_Buffer.Length)
            {
                this.RX_Buffer[this.RXptn++] = DATA;
            }
            else
            {
                this.RX_Status = enumRX_Status.WAITING_STX_1;
            }
        }
コード例 #2
0
        //private bool STX_01_ctrl, STX_02_ctrl, ETX_01_ctrl, ETX_02_ctrl;

        public SerialPort_Control()
        {
            mySerialPort                = new SerialPort();
            mySerialPort.BaudRate       = 250000;
            mySerialPort.Parity         = Parity.None;
            mySerialPort.StopBits       = StopBits.One;
            mySerialPort.DataBits       = 8;
            mySerialPort.Handshake      = Handshake.None;
            mySerialPort.ReadTimeout    = 50;
            mySerialPort.ReadBufferSize = 200000;
            mySerialPort.DataReceived  += new SerialDataReceivedEventHandler(DataReceivedHandler);

            this.RX_Buffer            = new byte[CONST.BUFFER_SIZE_RX];
            this.RXptn                = 0;
            this.RX_COMMAND           = new sCOMMAND();
            this.RX_COMMAND.Processed = true;
            this.RX_INFO              = new sCOMMAND();
            this.RX_INFO.Processed    = true;
            this.RX_Status            = enumRX_Status.WAITING_STX_1;
            this.m_PortOpened         = false;
        }
コード例 #3
0
        private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;

            byte[] indata = Encoding.ASCII.GetBytes(sp.ReadExisting());
            for (int ii = 0; ii < indata.Length; ii++)
            {
                switch (this.RX_Status)
                {
                //STX_1
                case enumRX_Status.WAITING_STX_1:
                    if (indata[ii] == CONST.STX_1)
                    {
                        this.RX_Status = enumRX_Status.WAITING_STX_2;
                    }
                    break;

                //STX_2
                case enumRX_Status.WAITING_STX_2:
                    if (indata[ii] == CONST.STX_2)
                    {
                        this.RX_COMMAND.Processed = true;
                        this.RXptn     = 0;
                        this.RX_Buffer = new byte[CONST.BUFFER_SIZE_RX];
                        TO_RXBuffer(CONST.STX_1);
                        TO_RXBuffer(indata[ii]);
                        this.RX_Status = enumRX_Status.WAITING_PARAM;
                    }
                    else if (indata[ii] == CONST.STX_2)
                    {
                        this.RX_Status = enumRX_Status.WAITING_STX_2;
                    }
                    else
                    {
                        this.RX_Status = enumRX_Status.WAITING_STX_1;
                    }
                    break;

                //PARAM
                case enumRX_Status.WAITING_PARAM:
                    if (indata[ii] == CONST.ETX_1)
                    {
                        this.RX_Status = enumRX_Status.WAITING_ETX_2;
                    }
                    TO_RXBuffer(indata[ii]);
                    break;

                //ETX_2
                case enumRX_Status.WAITING_ETX_2:
                    if (indata[ii] == CONST.ETX_2)
                    {
                        TO_RXBuffer(indata[ii]);
                        if (this.CheckRXBufferData())
                        {
                            if (this.IsInfoPacket())
                            {
                                this.RXBuffer_to_RX_INFO();
                            }
                            else
                            {
                                this.RXBuffer_to_RXCommand();
                            }
                        }
                        else
                        {
                            MessageBox.Show("RXBuffer DATA ERROR!!!");
                        }
                        this.RX_Status = enumRX_Status.WAITING_STX_1;
                    }
                    else
                    {
                        TO_RXBuffer(indata[ii]);
                        this.RX_Status = enumRX_Status.WAITING_PARAM;
                    }
                    break;
                }
            } // for
        }     //function
コード例 #4
0
 public void Reset_RX_STATUS()
 {
     this.RX_Status = enumRX_Status.WAITING_STX_1;
 }