Exemplo n.º 1
0
        //Das zuletzt geschriebene Bit liegt an Ausgang 0 an
        //Returnwert ist der hinausgeschobene Teil
        private static int WriteByteReturn(int state)
        {
            int shiftout = 0;
            int soll;

            WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);

            for (int i = 1; i < 0x100; i = i << 1)
            {
                if (WiringPiWrapperDirect.digitalRead(ShiftOutPin) > 0)
                {
                    shiftout |= i;
                }

                soll = (state & i) > 0 ? 1 : 0;
                WiringPiWrapperDirect.digitalWrite(SerialDataPin, soll);

                Pulse(ShiftClockPin);

                for (int sleep = 0; sleep < 40; sleep++)                 // Verzögerung von In zu Out
                {
                    ;
                }
            }

            WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);
            return(shiftout);
        }
Exemplo n.º 2
0
        public static void RotaryPoller()
        {
            Console.WriteLine("Polling");

            while (true)
            {
                int binaryRotaryValue = 0;

                if (WiringPiWrapperDirect.digitalRead(DataPin) == 0)
                {
                    binaryRotaryValue += DataPinValue;
                }
                if (WiringPiWrapperDirect.digitalRead(ClockPin) == 0)
                {
                    binaryRotaryValue += ClockPinValue;
                }
                if (WiringPiWrapperDirect.digitalRead(ClickPin) == 0)                   //Pull Up/Down Vertauschung
                {
                    binaryRotaryValue += ClickPinValue;
                }

                if (binaryRotaryValue != BinaryRotaryValue)
                {
                    BinaryRotaryValue = binaryRotaryValue;
                    RotaryChanged.Set();
                }
                Thread.Sleep(1);                        //Nachdem Prellen ist doof
            }
        }
Exemplo n.º 3
0
        static void TasterWiringPi()
        {
            Console.WriteLine("Dehre");

            WiringPiWrapperDirect.WiringPiSetupGpio();
            WiringPiWrapperDirect.pinMode(17, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(18, PinType.INPUT);

            WiringPiWrapperDirect.digitalWrite(17, 0);

            bool lastButtonPressed = false;
            bool ledBurning        = false;

            //while(WirinPiWrapper.millis() < 30000)
            for (var i = 0; i < 100000000; i++)
            {
                bool buttonPressed = WiringPiWrapperDirect.digitalRead(18) > 0;

                //Draufdrücken
                if (buttonPressed && !lastButtonPressed)
                {
                    Console.WriteLine("Press");
                    if (ledBurning)
                    {
                        WiringPiWrapperDirect.digitalWrite(17, 0);
                    }
                    else
                    {
                        WiringPiWrapperDirect.digitalWrite(17, 1);
                    }

                    ledBurning = !ledBurning;

                    lastButtonPressed = true;
                }
                //Loslassen
                if (!buttonPressed && lastButtonPressed)
                {
                    Console.WriteLine("Release");
                    lastButtonPressed = false;
                    Thread.Sleep(30);                           //Prellschalter
                }
            }

            WiringPiWrapperDirect.digitalWrite(17, 0);
            Console.WriteLine("sers.");
        }
Exemplo n.º 4
0
        public static void WiringPiBenchmarkWriteReadWrite()
        {
            Console.WriteLine("Servus Luigi.");

            WiringPiWrapperDirect.WiringPiSetupGpio();

            WiringPiWrapperDirect.pinMode(17, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(19, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(18, PinType.INPUT);

            DateTime start = DateTime.Now;

            WiringPiWrapperDirect.digitalWrite(17, 0);

            int testCount = 1000000000;

            start = DateTime.Now;
            int soll;
            int ist;

            for (int i = 0; i < testCount; i++)
            {
                soll = i & 1;
                WiringPiWrapperDirect.digitalWrite(17, soll);
                //WirinPiWrapper.delayMicroseconds (1);	//Seltener Fehler, delay drückt von 2 MHz auf 0,2 MHz fehlerlos
                //for (int y = 0; y < 30; y++)			//0,55 MHz fehlerfrei!
                //	;
                ist = WiringPiWrapperDirect.digitalRead(18);
                WiringPiWrapperDirect.digitalWrite(19, ist);

                //if (WirinPiWrapper.digitalRead(18)  != soll)
                //	Console.WriteLine ("Scheisndregg " + i);
            }

            TimeSpan duration = new TimeSpan(DateTime.Now.Ticks - start.Ticks);

            Console.WriteLine("WiringPi WriteReadTime  = " + (duration.TotalMilliseconds / testCount) + "ms,  " + testCount / (duration.TotalMilliseconds * 1000) + " MHz");
        }