PhilipsSignageDisplaySicp 1.0.1
dotnet add package PhilipsSignageDisplaySicp --version 1.0.1
NuGet\Install-Package PhilipsSignageDisplaySicp -Version 1.0.1
<PackageReference Include="PhilipsSignageDisplaySicp" Version="1.0.1" />
paket add PhilipsSignageDisplaySicp --version 1.0.1
#r "nuget: PhilipsSignageDisplaySicp, 1.0.1"
// Install PhilipsSignageDisplaySicp as a Cake Addin #addin nuget:?package=PhilipsSignageDisplaySicp&version=1.0.1 // Install PhilipsSignageDisplaySicp as a Cake Tool #tool nuget:?package=PhilipsSignageDisplaySicp&version=1.0.1
This project was created to manage a Philips 10BDL3051T display through the Philips SICP protocol. The protocol defines about 50 different commands but only the commands supported by the 10BDL3051T has been implemented (in Philips10BDL3051TClient
). See instructions below if you require support for a different display. Note that many commands implemented for 10BDL3051T works for other models as well.
Documentation of the SICP protocol can be found online: Documentation of the SICP protocol, v1.99, 25 May 2017
SICP stands for Serial (Ethernet) Interface Communication Protocol.
Install
A release package has been published to Nuget: https://www.nuget.org/packages/PhilipsSignageDisplaySicp
dotnet add package PhilipsSignageDisplaySicp
Usage
var displayIpAddress = IPAddress.Parse("192.168.1.100");
using (var socket = new SicpSocket(displayIpAddress, keepAlive: true))
{
// SICP client for Philips 10BDL3051T (10" Android tablet).
// can be used for other Philiips displays as well (except led strip)
var client = new Philips10BDL3051TClient(socket);
// print hardware and software information
Console.WriteLine(client.GetPlatformAndModelInfo());
// turn off the screen
client.EnableScreen(false);
// set volume to 50%
client.SetVolume(0.50);
// set led strip color to blue
client.EnableLedStrip(Color.Blue);
}
See more examples in the sample console project.
Features implemented for Philips 10BDL3051T
The Philips 10BDL3051T is a 10 inch tablet running Android 4.4, with hardware and software suitable for signage solutions. It is perfect fit for room booking displays or control panels.
The USA market has an almost identical product called 10BDL4151T.
To my knowledge this is the complete feature set implemented by 10BDL3051T.
- Controlling LED light
EnableLedStrip(Color color)
DisableLedStrip
GetLedStrip
- Toggling screen on and off
IsScreenOn
EnableScreen(bool enabled = true)
- Controlling the speaker volume
GetVolume
SetVolume(double speakerVolumePercentage)
- Controlling which input/app is active. E.g. browser, media player, PDF player or custom app.
GetInputSource
SetInputSource(InputSource inputSource)
- Schedule of when apps/inputs are activated. (Note: updating of schedule was very buggy in my device)
GetSchedule(SchedulePage schedule)
SetSchedule(SchedulePage schedulePage, Schedule schedule)
- Disabling touch support
IsTouchEnabled
SetTouchEnabled(bool enabled = true)
- Setting what is display during boot of the display
GetPowerOnLogo
SetPowerOnLogo(PowerOnLogo powerOnLogo)
- Deactivating USB and MicroSD ports to protect from malware and intrusions
IsExternalPortsEnabled
EnableExternalPorts(bool enabled = true)
- Control which group the display is part of
GetGroupId
SetGroupId(byte groupId)
- Misc. hardware and model information
GetOperatingHours
GetSerialCode
GetModelInfo
GetPlatformInfo
- Reset the display to factory settings
PerformFactoryReset
Implementing a custom display client
If you have a different display than the Philips 10BDL3051T, then you may need to create a custom SICP client. This can be done in the following manner.
Create a new class and inherit from
PhilipsSicpClient
:public class CustomPhilipsClient : PhilipsSicpClient { public CustomPhilipsClient(SicpSocket socket, byte monitorId = 1, byte groupId = 0) : base(socket, monitorId, groupId) { } }
Implement the command methods you need. Read the documentation to know how to format your command parameters. In this example we will implement the "4.1 Power state" command.
public virtual bool GetPowerState() { var message = Get(SicpCommands.PowerStateGet); // power is on when first parameter equals to 0x02 return message.CommandParameters[0] == 0x02; } public virtual void SetPowerState(bool powerState) { Set(SicpCommands.PowerStateSet, powerState.ToByte(trueValue: 0x02, falseValue: 0x01)); }
Instantiate your new client by passing in a SicpSocket instance.
var socket = new SicpSocket(IPAddress.Parse("192.168.1.100")); var client = new CustomPhilipsClient(socket); var powerState = client.GetPowerState(); client.SetPowerState(!powerState);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.1 | 6,340 | 3/17/2019 |
1.0.0 | 520 | 3/17/2019 |
0.1.0-alpha | 415 | 3/13/2019 |