Exemple #1
0
 private void resetAll()
 {
     mKommunikatorState = kommunikatorStateTyp.disconnected;
     allrecData = new ConcurrentQueue<byte[]>();
     allDataForTB = new Queue<string>();
     recData = new Queue<armRecVal>();
     toRequest = new List<armRequestValue>();
     toSet = new Queue<armSetting>();
     cntPing = 0;
     cntRec = 0;
     cntSend = 0;
     waitedForConfirm = 0;
     waitedForPing = 0;
     remainToRead = 0;
     currentTime = 0;
     reading = false;
     readingFirst = false;
     readingCurrentRead = 0;
 }
Exemple #2
0
        public void open(String pportName, int pbaudRate)
        {
            try
            {
                mSerialPort = new SerialPort(pportName, pbaudRate);
                mSerialPort.Open();
                mSerialPort.DataReceived += new SerialDataReceivedEventHandler(workReviced);
                mSerialPort.Encoding = Encoding.ASCII;
                Debug.WriteLine("Opened Com Port");

            }
            catch
            {
                Debug.WriteLine("Failed to Open Port on Kom Konstructor, portname:" + pportName);
                this.mKommunikatorState = kommunikatorStateTyp.error;
            }
            requestConnect = true;
            stopRequestValue(0); // RESET REQUEST VEKTOR
        }
Exemple #3
0
        public void zyklischMain()
        {
            switch (mKommunikatorState)
            {
                case kommunikatorStateTyp.connected:
                    waitedForPing++;
                    directSend("a");
                    while (allrecData.Count > 0)
                    {
                        byte[] toAnalyse;
                        if (allrecData.TryDequeue(out toAnalyse))
                        {
                            analyseRec(toAnalyse);
                        }
                    }
                    workRequestValueQue();
                    workToSet();
                    if (waitedForPing > sMaxWaitPing)
                    {
                        mKommunikatorState = kommunikatorStateTyp.disconnected;
                        Debug.WriteLine("Disconnected because didnt get ping");
                    }
                    break;
                case kommunikatorStateTyp.connecting:

                    while (allrecData.Count > 0)
                    {
                        byte[] toAnalyse;
                        if (allrecData.TryDequeue(out toAnalyse))
                        {
                            analyseRec(toAnalyse);
                        }
                    }
                    if (waitedForConfirm > sMaxWaitConfirm)
                    {
                        //mKommunikatorState = kommunikatorStateTyp.disconnected;
                        //Debug.WriteLine("Didnt connect because didnt get confirm");
                    }
                    else if (waitedForConfirm == 0)
                    {
                        mKommunikatorState = kommunikatorStateTyp.connected;
                        Debug.WriteLine("Connected!");
                        directSend("q");
                    }
                    waitedForConfirm++;
                    break;
                case kommunikatorStateTyp.disconnected:
                    if (requestConnect)
                    {
                        int res = startConnect();
                        if (res == 0)
                        {
                            mKommunikatorState = kommunikatorStateTyp.connecting;
                            waitedForConfirm = 0;
                        }
                        else
                        {
                            mKommunikatorState = kommunikatorStateTyp.error;
                            Debug.WriteLine("Failed to Start Connecting!: error: " + res);
                        }
                        requestConnect = false;
                    }
                    break;
                case kommunikatorStateTyp.error:
                    break;
                default:
                    Debug.WriteLine("Fehler Zyklisch unbekannter Zustand");
                    break;

            }
        }