コード例 #1
0
ファイル: SplitflapRail.cs プロジェクト: galgalesh/Splitflaps
 private void GotoCharacter(int characterPosition, SplitflapConfig splitflapConfig)
 {
     while (splitflapConfig.CurrentPosition != characterPosition)
     {
         Thread.Sleep(100);
         GoOne(splitflapConfig);
     }
 }
コード例 #2
0
ファイル: SplitflapRail.cs プロジェクト: galgalesh/Splitflaps
        private void GoOne(SplitflapConfig splitflapConfig)
        {
            foreach(PortExpanderPlug portExpanderPlug in portExpanderplugList)
            {
                if((portExpanderPlug.Address == splitflapConfig.PortExpanderAddress) && (portExpanderPlug.Row2 == splitflapConfig.Row2))
                {
                    OutputPortRow2.Write(portExpanderPlug.Row2);

                    //get current byte
                    byte value = 0;
                    if(splitflapConfig.Side == PortExpanderPlug.Sides.A)
                    {
                        value = portExpanderPlug.CurrentByteA;
                    } else {
                        value = portExpanderPlug.CurrentByteB;
                    }

                    // toggle bit
                    value ^= (byte)(1 << splitflapConfig.PortExpanderBit);

                    // write new byte
                    portExpanderPlug.WriteToPins(value, splitflapConfig.Side);

                    splitflapConfig.CurrentPosition++;
                    break;
                }
            }
        }