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); } }
public AlphaNumericFrame(NumericalLayout layout, ushort[] segData, ushort[] segDataExtended) { SegmentData = segData; SegmentDataExtended = segDataExtended; SegmentLayout = layout; }
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)); }
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)); }
public static void RenderAlphaNum(NumericalLayout numericalLayout, IntPtr seg_data, IntPtr seg_data2) => InternalRenderAlphaNumDevice(DefaultDevice, numericalLayout, seg_data, seg_data2);
public static void RenderAlphaNumDevice(int id, NumericalLayout numericalLayout, IntPtr seg_data, IntPtr seg_data2) => InternalRenderAlphaNumDevice(GetDevice(id), numericalLayout, seg_data, seg_data2);
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; } }
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; } }