コード例 #1
0
ファイル: DmdDevice.cs プロジェクト: markadr/dmd-extensions
        public void RenderAlphaNumeric(NumericalLayout layout, ushort[] segData, ushort[] segDataExtended)
        {
            if (!_isOpen)
            {
                Init();
            }
            _vpmAlphaNumericSource.NextFrame(new AlphaNumericFrame(layout, segData, segDataExtended));
            _dmdFrame.width  = Width;
            _dmdFrame.height = Height;

            //Logger.Info("Alphanumeric: {0}", layout);
            switch (layout)
            {
            case NumericalLayout.__2x16Alpha:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x16Alpha(segData)));
                break;

            case NumericalLayout.None:
            case NumericalLayout.__2x20Alpha:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x20Alpha(segData)));
                break;

            case NumericalLayout.__2x7Alpha_2x7Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Alpha_2x7Num(segData)));
                break;

            case NumericalLayout.__2x7Alpha_2x7Num_4x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Alpha_2x7Num_4x1Num(segData)));
                break;

            case NumericalLayout.__2x7Num_2x7Num_4x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Num_2x7Num_4x1Num(segData)));
                break;

            case NumericalLayout.__2x7Num_2x7Num_10x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Num_2x7Num_10x1Num(segData, segDataExtended)));
                break;

            case NumericalLayout.__2x7Num_2x7Num_4x1Num_gen7:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Num_2x7Num_4x1Num_gen7(segData)));
                break;

            case NumericalLayout.__2x7Num10_2x7Num10_4x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Num10_2x7Num10_4x1Num(segData)));
                break;

            case NumericalLayout.__2x6Num_2x6Num_4x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x6Num_2x6Num_4x1Num(segData)));
                break;

            case NumericalLayout.__2x6Num10_2x6Num10_4x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x6Num10_2x6Num10_4x1Num(segData)));
                break;

            case NumericalLayout.__4x7Num10:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render4x7Num10(segData)));
                break;

            case NumericalLayout.__6x4Num_4x1Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render6x4Num_4x1Num(segData)));
                break;

            case NumericalLayout.__2x7Num_4x1Num_1x16Alpha:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render2x7Num_4x1Num_1x16Alpha(segData)));
                break;

            case NumericalLayout.__1x16Alpha_1x16Num_1x7Num:
                _vpmGray2Source.NextFrame(_dmdFrame.Update(AlphaNumeric.Render1x16Alpha_1x16Num_1x7Num(segData)));
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(layout), layout, null);
            }
        }
コード例 #2
0
 public AlphaNumericFrame(NumericalLayout layout, ushort[] segData, ushort[] segDataExtended)
 {
     SegmentData         = segData;
     SegmentDataExtended = segDataExtended;
     SegmentLayout       = layout;
 }
コード例 #3
0
ファイル: DmdDevice.cs プロジェクト: markadr/dmd-extensions
 public static void RenderAlphaNum(NumericalLayout numericalLayout, IntPtr seg_data, IntPtr seg_data2)
 {
     _dmdDevice.RenderAlphaNumeric(numericalLayout, InteropUtil.ReadUInt16Array(seg_data, 64), InteropUtil.ReadUInt16Array(seg_data2, 64));
 }
コード例 #4
0
 private static void InternalRenderAlphaNumDevice(DeviceInstance device, NumericalLayout numericalLayout, IntPtr seg_data, IntPtr seg_data2)
 {
     device.DmdDevice.RenderAlphaNumeric(numericalLayout, InteropUtil.ReadUInt16Array(seg_data, 64), InteropUtil.ReadUInt16Array(seg_data2, 64));
 }
コード例 #5
0
 public static void RenderAlphaNum(NumericalLayout numericalLayout, IntPtr seg_data, IntPtr seg_data2) => InternalRenderAlphaNumDevice(DefaultDevice, numericalLayout, seg_data, seg_data2);
コード例 #6
0
 public static void RenderAlphaNumDevice(int id, NumericalLayout numericalLayout, IntPtr seg_data, IntPtr seg_data2) => InternalRenderAlphaNumDevice(GetDevice(id), numericalLayout, seg_data, seg_data2);
コード例 #7
0
        public void RenderAlphaNumeric(AlphaNumericFrame frame)
        {
            if (_currentLayout == NumericalLayout.None || _currentLayout != frame.SegmentLayout)
            {
                ShowDisplays(frame.SegmentLayout);
                _currentLayout = frame.SegmentLayout;
            }
            Logger.Info("New frame type {0}", frame.SegmentLayout);

            switch (frame.SegmentLayout)
            {
            case NumericalLayout.__2x16Alpha:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 16).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 16, 16).ToArray());
                break;

            case NumericalLayout.__2x20Alpha:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 20).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 20, 20).ToArray());
                break;

            case NumericalLayout.__2x7Alpha_2x7Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                break;

            case NumericalLayout.__2x7Alpha_2x7Num_4x1Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 28, 2).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 30, 2).ToArray());
                break;

            case NumericalLayout.__2x7Num_2x7Num_4x1Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 28, 2).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 30, 2).ToArray());
                break;

            case NumericalLayout.__2x7Num_2x7Num_10x1Num:
                var data10x1 = new ushort[10];
                new ArraySegment <ushort>(frame.SegmentData, 28, 4).ToArray().CopyTo(data10x1, 0);
                new ArraySegment <ushort>(frame.SegmentDataExtended, 0, 6).ToArray().CopyTo(data10x1, 4);
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                SendToDisplay(5, data10x1);
                break;

            case NumericalLayout.__2x7Num_2x7Num_4x1Num_gen7:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 28, 2).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 30, 2).ToArray());
                break;

            case NumericalLayout.__2x7Num10_2x7Num10_4x1Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 28, 2).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 30, 2).ToArray());
                break;

            case NumericalLayout.__2x6Num_2x6Num_4x1Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 6).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 6, 6).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 12, 6).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 18, 6).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 24, 2).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 26, 2).ToArray());
                break;

            case NumericalLayout.__2x6Num10_2x6Num10_4x1Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 6).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 6, 6).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 12, 6).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 18, 6).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 24, 2).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 26, 2).ToArray());
                break;

            case NumericalLayout.__4x7Num10:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 7).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 21, 7).ToArray());
                break;

            case NumericalLayout.__6x4Num_4x1Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 4).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 4, 4).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 8, 4).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 12, 4).ToArray());
                SendToDisplay(4, new ArraySegment <ushort>(frame.SegmentData, 16, 4).ToArray());
                SendToDisplay(5, new ArraySegment <ushort>(frame.SegmentData, 20, 4).ToArray());
                SendToDisplay(6, new ArraySegment <ushort>(frame.SegmentData, 24, 2).ToArray());
                SendToDisplay(7, new ArraySegment <ushort>(frame.SegmentData, 26, 2).ToArray());
                break;

            case NumericalLayout.__2x7Num_4x1Num_1x16Alpha:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 7).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 7, 7).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 14, 4).ToArray());
                SendToDisplay(3, new ArraySegment <ushort>(frame.SegmentData, 18, 16).ToArray());
                break;

            case NumericalLayout.__1x16Alpha_1x16Num_1x7Num:
                SendToDisplay(0, new ArraySegment <ushort>(frame.SegmentData, 0, 16).ToArray());
                SendToDisplay(1, new ArraySegment <ushort>(frame.SegmentData, 16, 16).ToArray());
                SendToDisplay(2, new ArraySegment <ushort>(frame.SegmentData, 32, 7).ToArray());
                break;
            }
        }
コード例 #8
0
        private void ShowDisplays(NumericalLayout layout)
        {
            //Logger.Info("New type of {0}", layout);
            // todo teardown current if open
            switch (layout)
            {
            case NumericalLayout.__2x16Alpha:                     // jokrz_l6 - Jokerz (L-6)
                ShowDisplay(0, 16, 1, SegmentType.Alphanumeric);
                ShowDisplay(1, 16, 1, SegmentType.Alphanumeric);
                break;

            case NumericalLayout.__2x20Alpha:                     // badgirls - Bad Girls
                ShowDisplay(0, 20, 1, SegmentType.Alphanumeric);
                ShowDisplay(1, 20, 1, SegmentType.Alphanumeric);
                break;

            case NumericalLayout.__2x7Alpha_2x7Num:                     // untested
                ShowDisplay(0, 7, 1, SegmentType.Alphanumeric);
                ShowDisplay(1, 7, 1, SegmentType.Alphanumeric);
                ShowDisplay(2, 7, 1, SegmentType.Numeric8);
                ShowDisplay(3, 7, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x7Alpha_2x7Num_4x1Num:                     // hs_l3 - High Speed (L-3)
                ShowDisplay(0, 7, 1, SegmentType.Alphanumeric);
                ShowDisplay(1, 7, 1, SegmentType.Alphanumeric);
                ShowDisplay(2, 7, 1, SegmentType.Numeric8);
                ShowDisplay(3, 7, 1, SegmentType.Numeric8);
                ShowDisplay(4, 2, 1, SegmentType.Numeric8);
                ShowDisplay(5, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x7Num_2x7Num_4x1Num:                     //  sstb - Supersonic (7-digit conversion)
                ShowDisplay(0, 7, 1, SegmentType.Numeric8);
                ShowDisplay(1, 7, 1, SegmentType.Numeric8);
                ShowDisplay(2, 7, 1, SegmentType.Numeric8);
                ShowDisplay(3, 7, 1, SegmentType.Numeric8);
                ShowDisplay(4, 2, 1, SegmentType.Numeric8);
                ShowDisplay(5, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x7Num_2x7Num_10x1Num:                     // untested
                ShowDisplay(0, 7, 1, SegmentType.Numeric8);
                ShowDisplay(1, 7, 1, SegmentType.Numeric8);
                ShowDisplay(2, 7, 1, SegmentType.Numeric8);
                ShowDisplay(3, 7, 1, SegmentType.Numeric8);
                ShowDisplay(4, 10, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x7Num_2x7Num_4x1Num_gen7:                     // bk_l4 - Black Knight (L-4)
                ShowDisplay(0, 7, 1, SegmentType.Numeric8);
                ShowDisplay(1, 7, 1, SegmentType.Numeric8);
                ShowDisplay(2, 7, 1, SegmentType.Numeric8);
                ShowDisplay(3, 7, 1, SegmentType.Numeric8);
                ShowDisplay(4, 2, 1, SegmentType.Numeric8);
                ShowDisplay(5, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x7Num10_2x7Num10_4x1Num:                     // sshtl_l3 - Space Shuttle (L-3)
                ShowDisplay(0, 7, 1, SegmentType.Numeric10);
                ShowDisplay(1, 7, 1, SegmentType.Numeric10);
                ShowDisplay(2, 7, 1, SegmentType.Numeric10);
                ShowDisplay(3, 7, 1, SegmentType.Numeric10);
                ShowDisplay(4, 2, 1, SegmentType.Numeric8);
                ShowDisplay(5, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x6Num_2x6Num_4x1Num:                     // topaz_l1 - Topaz (Shuffle) (L-1)
                ShowDisplay(0, 6, 1, SegmentType.Numeric8);
                ShowDisplay(1, 6, 1, SegmentType.Numeric8);
                ShowDisplay(2, 6, 1, SegmentType.Numeric8);
                ShowDisplay(3, 6, 1, SegmentType.Numeric8);
                ShowDisplay(4, 2, 1, SegmentType.Numeric8);
                ShowDisplay(5, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x6Num10_2x6Num10_4x1Num:                     // untested
                ShowDisplay(0, 6, 1, SegmentType.Numeric10);
                ShowDisplay(1, 6, 1, SegmentType.Numeric10);
                ShowDisplay(2, 6, 1, SegmentType.Numeric10);
                ShowDisplay(3, 6, 1, SegmentType.Numeric10);
                ShowDisplay(4, 2, 1, SegmentType.Numeric8);
                ShowDisplay(5, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__4x7Num10:                     // atlantis
                ShowDisplay(0, 7, 1, SegmentType.Numeric10);
                ShowDisplay(1, 7, 1, SegmentType.Numeric10);
                ShowDisplay(2, 7, 1, SegmentType.Numeric10);
                ShowDisplay(3, 7, 1, SegmentType.Numeric10);
                break;

            case NumericalLayout.__6x4Num_4x1Num:                     // alcat - Alley Cats
                ShowDisplay(0, 4, 1, SegmentType.Numeric8);
                ShowDisplay(1, 4, 1, SegmentType.Numeric8);
                ShowDisplay(2, 4, 1, SegmentType.Numeric8);
                ShowDisplay(3, 4, 1, SegmentType.Numeric8);
                ShowDisplay(4, 4, 1, SegmentType.Numeric8);
                ShowDisplay(5, 4, 1, SegmentType.Numeric8);
                ShowDisplay(6, 2, 1, SegmentType.Numeric8);
                ShowDisplay(7, 2, 1, SegmentType.Numeric8);
                break;

            case NumericalLayout.__2x7Num_4x1Num_1x16Alpha:                     // untested
                ShowDisplay(0, 7, 1, SegmentType.Numeric8);
                ShowDisplay(1, 7, 1, SegmentType.Numeric8);
                ShowDisplay(2, 4, 1, SegmentType.Numeric8);
                ShowDisplay(3, 16, 1, SegmentType.Alphanumeric);
                break;

            case NumericalLayout.__1x16Alpha_1x16Num_1x7Num:                      // untested
                ShowDisplay(0, 16, 1, SegmentType.Alphanumeric);
                ShowDisplay(1, 16, 1, SegmentType.Numeric8);
                ShowDisplay(2, 7, 1, SegmentType.Numeric8);
                break;
            }
        }