Education

Extron TouchLink Pro — Panel Design and Programming

TouchLink Pro (TLP series) are Extron's PoE-powered capacitive touchpanel hardware for room control interfaces. Panel design — layout, buttons, pages, logic — is done inside Global Configurator Plus (GCP) on the same canvas as the rest of the room control program. Understanding GCP's panel designer, button types, feedback mechanisms, and the relationship between panel elements and control system logic is essential for delivering professional Extron room control interfaces.

See control-systems/extron-basics for hardware specifications and control-systems/extron-globalscripter for the GlobalScripter code that drives panel logic.

ModelScreenMountResolutionPowerBest For
TLP Pro 520M5"Wall800×480PoE (802.3af)Simple rooms, single source
TLP Pro 720M7"Wall1024×600PoE (802.3af)Standard conference rooms
TLP Pro 520TG5"Table surface800×480PoE (802.3af)Huddle spaces
TLP Pro 725TG7"Table surface1024×600PoE (802.3af)Conference tables
TLP Pro 1025T10"Table + stand1280×800PoE (802.3at)Boardrooms, lecterns
TLP Pro 1725T17"Table + stand1920×1200PoE (802.3at)Executive boardrooms, auditoriums

All TLP Pro panels connect to the IPCP Pro via 10/100 Ethernet over PoE — a single Cat 6 cable handles power and communication. No separate power supply. Panels are assigned to the IPCP Pro in GCP by IP address.

PoE requirements: 5" and 7" panels use 802.3af (15.4W); 10" and 17" panels require 802.3at (30W). Confirm switch port PoE budget when specifying multiple larger panels from the same switch.

GCP Panel Designer Workflow

Accessing the Panel Designer

In GCP, the Pages tab opens the panel designer. The canvas shows the TouchLink Pro screen at native resolution. Multiple pages are managed in the page list on the left side of the Pages view.

Setting panel resolution: The canvas resolution must match the target TLP model. Set this when creating the project (System tab → Add TouchLink Pro → select model). If the resolution is wrong, buttons placed on the canvas may not align with the physical panel's touch zones.

Page Management

A GCP project can have as many pages as needed. Pages are numbered sequentially (Page 1, Page 2, etc.) and referenced by number in GlobalScripter button navigation commands.

Page TypePurposeExample
Home pagePrimary room control; shown on power-onSource select, volume, display on/off
Sub-pageSecondary controls reached from homeAdvanced settings, camera control
Popup pageOverlay shown on top of current pageConfirmation dialogs, volume overlay
Password pagePIN entry; unlocks other pagesTech/admin access

Recommended page structure for a conference room:

Page 1 — Home
  [Display On]  [Display Off]  [AV Mute]
  [HDMI 1]  [HDMI 2]  [Wireless]  [Camera]
  Volume slider + mute button
  [→ Conference Page]  [→ Settings Page]

Page 2 — Conference
  [Start Call]  [End Call]
  [Mic Mute] (large, prominent)
  [Camera On/Off]
  [← Back to Home]

Page 3 — Settings (PIN protected)
  Individual zone volumes
  Display brightness control
  System shutdown
  [← Back]

Button Types and Configuration

Standard Button

The most common element. Sends a command on press and/or release. In GCP, a button is wired to a device module action port or a GlobalScripter virtual button port.

Button properties:

  • Legend — text displayed on the button (static string or dynamic binding)
  • Active Color / Inactive Color — colors for the two visual states
  • Image — optional icon overlay on the button
  • Button Type — Toggle, Momentary, or Radio (see below)

Toggle Button

Alternates between active and inactive state with each press. Used for on/off controls (display power, mute, AV blank). Feedback from the device (RS-232 power status response) updates the toggle state independently from button presses — the button reflects actual device state, not just the last command sent.

Momentary Button

Active only while held; returns to inactive on release. Used for PTZ camera control (press-hold to pan, release to stop), volume ramp hold, or any action that should stop when touch ends.

Radio Button Group

A set of buttons where only one can be active at a time — pressing one deactivates the others. Used for source selection (only one input is active), room mode selection, or any mutually exclusive choice. In GCP, group buttons as a radio group in the button properties dialog.

Slider

Linear fader for volume, brightness, or any continuous value. The slider position maps to a value range defined in the device module. GCP sliders can be horizontal or vertical.

Slider feedback: Bind a feedback signal from the device (current volume level) to the slider position — the slider reflects actual device state. Without feedback binding, the slider shows the last sent value, not the current device value (which may differ if the device was adjusted via remote control or another input).

Label (Static and Dynamic)

Static label: Fixed text — section headers, room name, instruction text ("Press SOURCE to begin").

Dynamic label: Bound to a GlobalScripter string variable. Updates in real time as the variable changes. Common uses:

  • Current source name ("Now showing: HDMI 1")
  • Meeting title from room booking system ("Staff Meeting — ends 3:00 PM")
  • System status ("System warming up..." / "Ready")
  • Current time (using the IPCP Pro's system clock)

Images and Backgrounds

Background images: JPG or PNG placed behind all buttons on a page. Common uses: company logo, room photo, architectural rendering of the room layout. Import via GCP → Pages → Page Properties → Background Image.

Button images: Icon overlay on a button (power icon, speaker icon, camera icon). Makes buttons self-explanatory without requiring text labels. Extron provides an icon library in GCP; custom icons can be imported as PNG.

File size: Keep background images under 200KB for fast page-load performance on the panel. Large images cause visible delays when navigating between pages.

Feedback — Keeping Panel State Accurate

Feedback is the mechanism that updates panel elements based on actual device state. Without feedback, buttons and sliders show what was sent, not what the device is actually doing.

Feedback Sources

  1. RS-232 polling response — the IPCP Pro periodically queries device status; RS232_Receive parses the response and calls SetButtonState() or SetLabel()
  2. Device event — device sends an unsolicited status update (power state change, input change); RS232_Receive handles it immediately
  3. GCP Feedback Block — for devices with defined feedback in their device module, GCP automatically wires device status ports to panel element feedback without GlobalScripter code

Feedback Code Pattern

// In GlobalScripter: update display power button based on RS-232 response
function RS232_Receive(port, data) {
    if (port === rs232_display) {
        // Sony display response: "POWR0000\r\n" (off) or "POWR0001\r\n" (on)
        if (data.indexOf("POWR0001") !== -1) {
            SetButtonState(tlp1, 1, 1, 1);   // Display On button = active (green)
            SetButtonState(tlp1, 1, 2, 0);   // Display Off button = inactive
            SetLabel(tlp1, 1, 20, "Display ON");
        } else if (data.indexOf("POWR0000") !== -1) {
            SetButtonState(tlp1, 1, 1, 0);
            SetButtonState(tlp1, 1, 2, 1);   // Display Off button = active
            SetLabel(tlp1, 1, 20, "Display OFF");
        }
    }
}

Poll Timer for Feedback Reliability

Device state can change without the control system sending a command (someone uses the display remote). A poll timer ensures feedback stays accurate:

// Poll display power state every 30 seconds
var poll_timer;

function InitializePolling() {
    poll_timer = CreateTimer();
    StartRepeatingTimer(poll_timer, 30000);   // 30 second interval
}

function Timer_Event(timer) {
    if (timer === poll_timer) {
        Send(rs232_display, "POWR?\x0D");   // query power state
    }
}

Multi-Page Navigation

A button that switches pages uses the GoToPage() function in GlobalScripter:

function Button_Press(tlp, page, button) {
    if (button === 50) {                    // "Conference" button
        GoToPage(tlp, 2);                   // go to page 2
    }
    if (button === 51) {                    // "Back" button
        GoToPage(tlp, 1);                   // return to home
    }
    if (button === 52) {                    // "Settings" (PIN protected)
        GoToPage(tlp, 10);                  // PIN entry page
    }
}

Auto-Return to Home

A common requirement: if no button is pressed for 60 seconds, return to the home page automatically:

var inactivity_timer;

function ResetInactivityTimer() {
    StopTimer(inactivity_timer);
    StartTimer(inactivity_timer, 60000);    // restart 60-second countdown
}

// Called on every button press
function Button_Press(tlp, page, button) {
    ResetInactivityTimer();
    // ... rest of button logic
}

function Timer_Event(timer) {
    if (timer === inactivity_timer) {
        GoToPage(tlp1, 1);                  // return to home page
    }
}

Popup pages overlay the current page without replacing it. Used for:

  • Volume sliders (appear over whatever page is active, dismiss on tap outside)
  • Confirmation dialogs ("Are you sure you want to end the meeting?")
  • Status overlays ("System shutting down — please wait")
// Show a popup
ShowPopup(tlp1, 5);         // show page 5 as popup

// Hide the popup
HidePopup(tlp1, 5);

// Auto-dismiss popup after 5 seconds
ShowPopup(tlp1, 5);
StartTimer(popup_dismiss_timer, 5000);

function Timer_Event(timer) {
    if (timer === popup_dismiss_timer) {
        HidePopup(tlp1, 5);
    }
}

PIN Protection

A PIN-protected page restricts access to advanced settings:

var entered_pin = "";
var CORRECT_PIN = "1234";

// Digit buttons (1–9, 0) on PIN entry page
function Button_Press(tlp, page, button) {
    if (page === 10) {                      // PIN page
        if (button >= 1 && button <= 10) {  // digit buttons 1–10 (10 = "0")
            var digit = (button === 10) ? "0" : String(button);
            entered_pin += digit;
            SetLabel(tlp1, 10, 20, RepeatChar("*", entered_pin.length));

            if (entered_pin.length === 4) {
                if (entered_pin === CORRECT_PIN) {
                    entered_pin = "";
                    GoToPage(tlp1, 3);      // go to settings page
                } else {
                    entered_pin = "";
                    SetLabel(tlp1, 10, 20, "Incorrect PIN");
                    StartTimer(clear_label_timer, 2000);
                }
            }
        }
        if (button === 11) {                // Clear button
            entered_pin = "";
            SetLabel(tlp1, 10, 20, "");
        }
    }
}

function RepeatChar(ch, n) {
    var s = "";
    for (var i = 0; i < n; i++) { s += ch; }
    return s;
}

Panel Commissioning

Assigning Panel to IPCP Pro in GCP

  1. System tab → IPCP Pro → Properties → IP Devices
  2. Add TouchLink Pro by IP address
  3. Set the panel's IP address in its own network settings (via panel front-screen settings or DHCP reservation)
  4. Panel connects to the IPCP Pro automatically when both are on the same network

Panel Software Version

Verify the TLP Pro firmware matches the GCP version used to program it:

  • In Toolbelt, check the TLP Pro firmware version
  • In GCP, check Help → About for the GCP version and its compatible TLP firmware range
  • Update TLP firmware via Toolbelt if needed before final upload

Testing Panel Layout on Hardware

The GCP panel designer shows a preview at the design-stage resolution, but the only reliable test is on the physical panel. Finger-sized touch zones that look sufficient at 100% zoom on a monitor may be too small in practice. Key checks:

  • Touch every button — confirm all register reliably with a finger (not a stylus)
  • Check button spacing — adjacent buttons should have at least 8px gap; larger for primary actions
  • Verify dynamic labels update as expected
  • Confirm page navigation goes to the correct page
  • Test inactivity timer returns to home page

Common Pitfalls

  • Panel resolution mismatch. Building a 7" panel UI at 1024×600 and deploying to a 5" panel at 800×480 crops the right side and bottom of the page. Always set the canvas resolution to match the target panel before starting layout. If the project uses multiple panel sizes, create separate page sets for each resolution.

  • Feedback not wired — buttons show incorrect state. A "Display On" button that lights up when pressed but doesn't reflect the display turning off (via remote control or auto-off timer) confuses operators. Every toggle button should have feedback from the device bound to it. Without feedback, the panel lies — it shows what was sent, not what's actually happening.

  • Touchpanel IP address conflict. Two TLP panels on the same IP address causes both to behave erratically — one or both panels show incorrect states, button presses may not register, or one panel takes control while the other stops responding. Assign static IPs (or DHCP reservations by MAC address) to every TLP panel in the project and document them in the system IP list.

  • Page navigation button on wrong page number. GoToPage(tlp1, 2) in GlobalScripter references page 2 in the GCP page list. If pages are reordered, renumbered, or new pages are inserted between existing ones, GoToPage calls go to the wrong page silently. Always verify page numbers in the GCP page list after any page structure changes.

  • Large background images slow page transitions. A background image over 500KB causes a noticeable pause when navigating to that page on older TLP models. Optimize images to JPEG at 80% quality and resize to the panel's native resolution before import. The operator experience of a 1-second black screen during page transition is unacceptable and avoidable.

  • PoE budget not calculated for 10" and 17" panels. TLP Pro 1025T and 1725T require 802.3at (30W) PoE. A switch provisioned for only 802.3af (15.4W) per port will not fully power these panels — symptoms include panels that partially power on, display dimly, or reboot randomly. Confirm switch port PoE class (af vs. at) before finalizing the design and specification.

We use optional analytics cookies to understand site usage and improve the experience. You can accept or reject.