URL
                    https://opencores.org/ocsvn/etherlab/etherlab/trunk
                
            Subversion Repositories etherlab
[/] [etherlab/] [trunk/] [net/] [EtherExamples/] [examples/] [SequenceLight.cs] - Rev 2
Compare with Previous | Blame | View Log
/******************************************************************************* ETHERLAB - FPGA To C# To LABVIEW Bridge ******************************************************************************** ** Copyright (C)2012 Mathias Hörtnagl <mathias.hoertnagl@gmail.com> ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/using System;using System.Threading;namespace EtherLab.Examples{/// <summary>/// Demonstartes sample usage of EtherLab. Controlls a sequence/// light with an EtherLab connection./// </summary>class SequenceLight{static void Main(string[] args){/*** Create a new instance of EtherSocket with default* destination MAC. The first parameter identifies the* network device to select.*/EtherSocket es = new EtherSocket(0, "00:1f:16:01:95:a5");// Indicates, wich LED is on.byte run = 0x01;// The current states of the 4 switches.ushort switches;while (true){// Update channel H (LED).es.update(EChannel.CHANNEL_H, run);// Send the updated LED data.es.send();// Read the switch states.switches = es.read(EChannel.CHANNEL_H);// If rightmost switch is on, rotate right, else left.run = set(switches, 0) ? ror(run, 1) : rol(run, 1);// Wait, to see the sequence light show happen.Thread.Sleep(500);}}/// <summary>/// Checks, if bit is set./// </summary>/// <param name="val">The bit field.</param>/// <param name="bit">The bit to check.</param>/// <returns>True, if bit is set.</returns>public static Boolean set(ushort val, int bit){return (val & (1 << bit)) != 0;}/// <summary>/// Bitwise rotate left./// </summary>/// <param name="val">The bit field.</param>/// <param name="sh">The number of bits to rotate.</param>/// <returns>Left rotated bit field.</returns>public static byte rol(byte val, int sh){return (byte)(val<<sh | val >> (8 - sh));}/// <summary>/// Bitwise rotate right./// </summary>/// <param name="val">The bit field.</param>/// <param name="sh">The number of bits to rotate.</param>/// <returns>Right rotated bit field.</returns>public static byte ror(byte val, int sh){return (byte)(val >> sh | val << (8 - sh));}}}

