Esempio n. 1
0
        // UART受信時
        private void onUpdateUartRx(object sender, KoshiEventArgs e)
        {
            string data = e.data;

            char c;

            for (int i = 0; i < data.Length; i++)
            {
                //Serial.println("RECV ");
                c = (char)data[i];

                switch (rxState)
                {
                /* 電文開始待ち状態 */
                case STATE_READY:
                    /* 電文開始コードが来たら電文受信中状態へ */
                    if (c == '#')
                    {
                        //Serial.println("STX ");
                        rxState = STATE_RECEIVING;
                        rxPtr   = 0;
                    }
                    break;

                /* 電文受信中状態 */
                case STATE_RECEIVING:
                    /* もしも電文開始コードが来たら受信中のデータを破棄 */
                    if (c == '#')
                    {
                        //Serial.println("STX ");
                        rxPtr = 0;
                    }
                    /* 電文終了コードが来たら、受信した電文のコマンドを実行 */
                    else if (c == '$')
                    {
                        //Serial.println("ETX ");
                        rxBuff[rxPtr] = '\0';
                        SerialComGyro_callback(rxBuff);
                        rxState = STATE_READY;
                    }
                    /* 1文字受信 */
                    else
                    {
                        rxBuff[rxPtr] = c;
                        rxPtr++;
                        if (rxPtr >= 5000)
                        {
                            rxState = STATE_READY;
                        }
                    }
                    break;

                default:
                    rxState = STATE_READY;
                    break;
                }
            }
        }
Esempio n. 2
0
 // デバイス切断時
 private void onDisconnect(object sender, KoshiEventArgs e)
 {
     // ロギング中なら停止
     if (logCsv.isOpen)
     {
         logCsv.stop();
         this.BeginInvoke((Action)(() => { buttonLog.Text = "ログ開始"; }));
     }
 }
Esempio n. 3
0
        // デバイス接続時
        private void onConnect(object sender, KoshiEventArgs e)
        {
            // パラメータ読み出しコマンド送信
            koshiClient.uartWrite("#l$");

            // グラフのクリア
            this.BeginInvoke((Action)(() =>
            {
                chart1.Series[0].Points.Clear();
                chart1.Series[1].Points.Clear();
                chart2.Series[0].Points.Clear();
                chart2.Series[1].Points.Clear();
                chart3.Series[0].Points.Clear();
                chart3.Series[1].Points.Clear();
                chart3.Series[2].Points.Clear();
                chart3.Series[3].Points.Clear();
                chart3.Series[4].Points.Clear();
            }));
        }