Po Keys
Po Keys
Po Keys
1. Description.................................................................................................................................. 7
2. Features ...................................................................................................................................... 8
PoKeys55 ........................................................................................................................................ 8
PoKeys56E ...................................................................................................................................... 8
3. Requirements ............................................................................................................................. 9
3.1. USB devices ............................................................................................................................. 9
3.2. Network devices...................................................................................................................... 9
4. Technical specifications ............................................................................................................... 9
PoKeys55 dimensions...................................................................................................................... 9
PoKeys56E dimensions.................................................................................................................. 10
Electrical specification – limiting values......................................................................................... 11
Electrical specification – static characteristic ................................................................................. 11
Power supply for PoKeys56E ......................................................................................................... 11
5. Installation ................................................................................................................................ 12
6. Using PoKeys configuration application ..................................................................................... 13
Inactive ......................................................................................................................................... 13
Digital input .................................................................................................................................. 13
6.1.1. Direct key mapping – only for USB devices ................................................................. 13
Example: ............................................................................................................................... 13
6.1.2. Keyboard macro – only for USB devices ..................................................................... 14
6.1.3. Encoder input ............................................................................................................ 14
6.1.4. Matrix keyboard column selection ............................................................................. 14
6.1.5. Digital counter (only on PoKeys56E) ........................................................................... 14
Triggered digital input – only for USB devices................................................................................ 14
Digital output................................................................................................................................ 15
6.1.6. Matrix keyboard row selection................................................................................... 15
6.1.7. Connection signal....................................................................................................... 15
Analog input ................................................................................................................................. 15
Analog output (PoKeys55 devices only) ......................................................................................... 15
Keyboard macros – only for USB devices ....................................................................................... 17
Displaying encoder RAW values .................................................................................................... 17
Enabling fast encoders .................................................................................................................. 18
2 www.poscope.com
PoKeys user manual
3 www.poscope.com
PoKeys user manual
4 www.poscope.com
PoKeys user manual
StopEthernetDiscovery ................................................................................................................. 58
GetNumberOfDetectedNetworkDevices ....................................................................................... 58
ConnectToNetworkDevice............................................................................................................. 58
GetDeviceID .................................................................................................................................. 59
GetDeviceIDEx .............................................................................................................................. 59
GetBuildDate ................................................................................................................................ 60
GetUserID ..................................................................................................................................... 60
SetUserID...................................................................................................................................... 60
SetPinData .................................................................................................................................... 61
SetPinData .................................................................................................................................... 61
GetPinData ................................................................................................................................... 62
GetPinData ................................................................................................................................... 63
GetInput ....................................................................................................................................... 63
SetOutput ..................................................................................................................................... 64
GetAnalogInput ............................................................................................................................ 64
SetAnalogOutput .......................................................................................................................... 65
SaveConfiguration......................................................................................................................... 65
GetMatrixConfiguration ................................................................................................................ 66
SetMatrixConfiguration................................................................................................................. 67
GetPWMOutputs .......................................................................................................................... 68
SetPWMOutputs ........................................................................................................................... 69
LCDSetSettings .............................................................................................................................. 70
LCDInit .......................................................................................................................................... 71
LCDClear ....................................................................................................................................... 71
LCDGotoXY.................................................................................................................................... 71
LCDPutc ........................................................................................................................................ 72
LCDPrint........................................................................................................................................ 72
LCDSetEntryMode......................................................................................................................... 72
LCDDisplayOnOffControl ............................................................................................................... 73
LCDDefineCustomCharacter .......................................................................................................... 73
AuxilaryBusGetData ...................................................................................................................... 74
AuxilaryBusSetData ....................................................................................................................... 74
14. Interfacing with PoKeys library – C# example ........................................................................ 75
Class initialization .................................................................................................................. 75
5 www.poscope.com
PoKeys user manual
6 www.poscope.com
PoKeys user manual
1. Description
PoKeys products line consists of simple, easy-to-use USB and network devices with the extended list
of features making them powerful input/output devices. PoKeys55 devices also incorporate a virtual
USB keyboard and joystick with a simple setup. PoKeys devices enable user to design specially built
robust computer interfaces. The devices are highly adjustable and as such require no complex
knowledge on device programming. Virtual USB keyboard supports emulation of single key presses or
various programmable series of keys (keyboard macro sequences) while virtual USB joystick
emulation supports mapping of analog inputs to joystick axes and mapping of digital inputs to
joystick buttons.
If additional input and output capabilities are needed, the devices provide 55 digital 5V tolerant
inputs or outputs, 5 10-bit analog inputs (on PoKeys55) / 7 12-bit analog inputs (on PoKeys56E) with
adjustable software low-pass filter and one 10-bit analog output (on PoKeys55). These are
complemented with 6 high-speed fully configurable PWM (pulse width modulation) outputs. User
can freely set PWM period and PWM duty cycles. PWM module runs at 12 MHz (on PoKeys55) / 25
MHz (on PoKeys56E) and allows high-speed output switching.
They are controlled via included software, which enables user either to use the highly intuitive
graphical user interface. Chosen settings can be stored on device, so no special software is needed
on target system.
PoKeys devices also support up to 25 pairs of quadrature encoder signal inputs for which can be
freely connected to any of the 55 inputs on PoKeys devices. These inputs increment or decrement
the counters that can be read via provided software of other third-party applications. Changes in
those signals can trigger virtual keyboard presses on USB versions of PoKeys devices. PoKeys55
device also supports three additional fast encoder inputs that provide support, when higher
frequencies of the quadrature encoder signals are in use. PoKeys56E adds additional support for one
ultra fast quadrature encoder signal that can handle even greater frequencies of these signals with
ease.
In the cases when the application requires more than 55 inputs or outputs, PoKeys devices have the
inbuilt support for matrix keyboards sized up to 16x8 with freely assignable key codes for virtual USB
keyboard, while the PoExtBus bus feature adds the support for additional 80 digital inputs.
PoKeys devices also support hd44780-compatible character LCD displays and two serially driven 8x8
matrix LED displays.
Third-party application developers that are adding the support for PoKeys devices, are encouraged to
use the supplied communication DLL that can be simply used in the different .NET framework based
applications and various other programming languages that provide support for ActiveX interface.
To aid developers that are communicating with PoKeys devices on the low-level, the extensive
documentation on device communication protocol can be downloaded free of charge from the
product webpage.
7 www.poscope.com
PoKeys user manual
2. Features
PoKeys55
- Compatible with USB 1.1/2.0 HID standard
- Standard USB keyboard simulation (with triggering support for up/down keys)
- Standard USB joystick simulation (6 axis, 32 buttons with triggering support)
- 55 digital inputs with pull-up resistors, freely mappable to virtual USB keyboard’s keys
- 55 software controlled digital outputs
- 5 analog inputs (10-bit), freely mappable to any of virtual USB joystick axes (with adjustable
low-pass filtering support)
- 1 software controlled 10-bit analog output, controlled via included software
- Up to 25 encoder pair inputs
- Up to 64 256-character long keyboard macro sequences
- Up to 16x8 matrix keyboard with triggered keys/alternate function support
- Two 8x8 matrix LED display support
- Up to 6 high-speed fully configurable PWM outputs support (12 MHz PWM timer)
- HD44780-based character LCD support (up to 4x20 characters)
- PoExtBus support for adding up to 10 external shift registers
- Support for Connection signal output
- Intuitive and user-friendly software
- Third-party support via communication DLL library and extensive protocol specification
document that allows porting to other systems
PoKeys56E
- Ethernet 10/100 with DHCP client or fixed IP support
- TCP connection with device
- 55 digital inputs with pull-up resistors
- 55 software controlled digital outputs
- 7 analog inputs (12-bit) with adjustable low-pass filtering support
- Up to 26 encoder pair inputs (3 high-speed encoder inputs, 1 ultra high speed encoder input)
- Up to 16x8 matrix keyboard
- Two 8x8 matrix LED display support
- Up to 6 high-speed fully configurable PWM outputs support (25 MHz PWM timer)
- HD44780-based character LCD support (up to 4x20 characters)
- PoExtBus support for adding up to 10 external shift registers
- Modbus TCP support (access to digital IO, analog inputs, encoders’ counters, digital counters
values, PWM outputs, LCD display, LED matrix display, PoExtBus devices, matrix keyboard
status)
- Support for communication with devices on I2C and 1-wire buses
- Support for Connection signal output
- Communication compatible with PoKeys55 on application layer (data packet structure)
- Intuitive and user-friendly software
- Third-party support via communication DLL library and extensive protocol specification
document that allows porting to other systems
8 www.poscope.com
PoKeys user manual
3. Requirements
4. Technical specifications
PoKeys55 dimensions
If that picture is printed with no scaling, it can be used as a marking tool for holes.
9 www.poscope.com
PoKeys user manual
PoKeys56E dimensions
If that picture is printed with no scaling, it can be used as a marking tool for holes.
10 www.poscope.com
PoKeys user manual
PoKeys56E requires external 5V power supply to be connected to the board. If any additional
peripheral is connected to PoKeys56E board, combined current of peripheral and PoKeys56E board
must be taken into consideration when selecting the power supply.
Due to the protection diode in the circuit, a 0.8 V voltage drop can be observed between input
voltage and 5V pin. When supplying the PoKeys56E board with 5V power supply, take care when
connecting peripherals that require 5V supply voltage (e.g., LCD displays).
11 www.poscope.com
PoKeys user manual
5. Installation
PoKeys55 is USB 1.1/2.0 compliant device and as such requires no additional drivers for operation as
a standard USB keyboard and joystick.
PoKeys56E is an Ethernet device that requires an Ethernet connection between host computer and
the device and 5V power supply. No additional drivers are required. Network firewalls must allow all
traffic on IP/UDP port 20055.
To operate the device after the device has been configured there is no software installation
necessary on a target system.
To configure the device the supplied software must be installed and the requirements listed in
previous section of this manual must be met.
12 www.poscope.com
PoKeys user manual
PoKeys settings application is the utility for setting up the device for normal use. Upon starting the
program, the main window (Figure 1) with connection dialog is displayed. If there are PoKeys55 or
PoKeys56E devices detected to be attached to the system, the device selection box will be populated
with all devices. To easily identify a specific device, the User ID number is appended to the default
device name. To start editing device settings, click the 'Connect' button. After the current
configuration is uploaded from the device, the user interface is enabled (Figure 2).
There is graphical representation for configuration of each PoKeys device’s pin on left and right side
of main window. To change pin function, click on pin name and change its function in central ‘Pin
settings’ frame.
There are 6 main pin functions possible: inactive, digital input, triggered digital input, digital output,
analog input and analog output.
Inactive
Any pin can be set as inactive. Inactive pin is put in high-Z state with internal pull-up resistors
enabled.
Digital input
Any one of the 55 pins can be configured as digital input by selecting ‘Digital input’ option box. All
input pins have a weak pull-up resistor enabled and are 5V tollerant. If the pin polarity is inverted,
check the 'Invert pin' box.
There are several additional possibilities for digital input pin functions.
Example:
Send Alt-F4: Select F4 from drop-down box and check Alt checkbox.
Send ( (opening bracket): This key kombination differs from your system regional settings. As the
PoKeys55 devices emulate a system keyboard, key associations depend on current sytem keyboard
regional setting. To send an opening bracket symbol, one possible solution is to press Shift-8 (in most
non-English countries) or to press Shift-9. Out of this reason there are no such secondary keys listed
in drop-down box and must be entered by user as described above.
13 www.poscope.com
PoKeys user manual
Same as simple digital inputs, encoders can be assigned to direct key mapping or keyboard macro
(only with USB devices). This is possible for both directions (CW and CCW) separately. Simply set one
mapping for channel A and another for channel B. To check for proper connection and settings, there
is a special dialog that displays current encoder state. Please see section ‘Displaying encoder RAW
values’.
If needed, encoder inputs can be incremented or decremented 4x faster, therefore each complete
step will produce increment or decrement of 4 sub-steps. Using this setting, higher precision can be
obtained.
Encoder support should only be used for encoders that are hand-driven. It is not recommended to
use encoders connected to driving axes of CNC milling machines.
If switches are used in the combination with digital counters, external debouncing circuit must be
installed.
This pin mode enabled user to select a key that is pressed only when a transition in a signal occurs.
Different keys can be selected for ‘LOW-to-HIGH’ or ‘Key up’ event and for ‘HIGH-to-LOW’ or ‘Key
down’ event. Selecting the keys is similar to Direct key mapping described above.
14 www.poscope.com
PoKeys user manual
Digital output
Any one of the 55 pins can be configured as digital output by selecting ‘Digital output’ option box.
Each pin can sink or source up to 4 mA of current, with the limitation that the pins combined source
or sink current does not exceed 100 mA. If the polarity of the pin is inverted, check the 'Invert pin'
box.
Analog input
Analog input function is only available for pins 43 to 47 (on PoKeys55 devices) or for pins 41 to 47 (on
PoKeys56E devices). On PoKeys55 devices, these analog inputs can also be freely mapped to any of
the 6 joystick axis; X, Y, Z, rotation X, rotation Y and throttle. To monitor current analog input value
please see section Analog input values box. To set up joystick mappings, go to Peripherals > Joystick
settings.
To set low-pass filter for analog inputs, go to Peripherals > Analog inputs and outputs.
15 www.poscope.com
PoKeys user manual
16 www.poscope.com
PoKeys user manual
PoKeys55 devices now support keyboard macros – the key press combinations that can be up to 256
keys long. To define a keyboard macro, first select Keyboard macro mapping option for one of the
pins. ‘Edit macros’ and ‘Get names’ command buttons become enabled. To add, change or delete
macros, click the ‘Edit macros’ button. The following dialog appears
First select the macro you want to edit. To change macro name, enter desired macro name (up to 7
characters long) in 'Macro name' text box and click 'Change' button. This name is used only to help
user differentiate between multiple macros.
To set macro contents, simply enter text into 'Macro contents' text box. If there is an invalid
character found, the text appears red. When finished, click Write to write macro to device.
To open encoder RAW values dialog, go to Peripherals menu and select ‘Encoder RAW values’. The
following dialog below appears. It simply shows the list of all encoders and their current values. In
additional column, current encoder speed is displayed.
Status of the fast encoders is displayed in green, while the status of an ordinary encoder is displayed
in light grey. Inactive encoders are displayed as dark grey boxes.
17 www.poscope.com
PoKeys user manual
At the bottom of the window, there is a command button that can be used to reset the encoders’
values.
Sometimes finer control through encoders is desirable. To accomodate this need, PoKeys devices
support 3 fast encoders inputs. To enable fast encoders, go to menu 'Peripherals' and select 'Enable
fast encoders'. Fast encoders inputs are fixed to pins 1,2 for fast encoder input 1, pins 3,4 for fast
encoder input 2 and pins 15,16 for fast encoder input 3.
Fast encoders' values are mapped directly to 'normal' encoders 1, 2 and 3. To read fast encoders
RAW values, go to Peripherals menu and select ‘Encoder RAW values’, as described in previous
chapter.
PoKeys56E devices support additional ultra fast encoder that provides support for even greater
frequencies of quadrature encoder signals.
Joystick axis and buttons mapping can be setup via Joystick mapping dialog. Got to ‘Peripherals’ and
select ‘Joystick settings…’. The dialog on Figure 5 appears.
18 www.poscope.com
PoKeys user manual
Each axis can be assigned a analog input. In addition, analog to digital mapping option can be
enabled. This allows user to connect an analog joystick to a PoKeys devices and simulate key presses
for each direction of the joystick. To do so, first check ‘Map to key’ option. Then set the dead band
(when input value will be between lower and upper dead band margins, no keys will be activated)
using sliders. In the lower part of the window, select the mapping options.
For simple direct mapping (pin input status is directly reflected in joystick button status) use the
‘Direct mapping’ option and select pin number to be associated with selected joystick button. If more
advanced behavior is needed (joystick button is pressed for a short time only on transitions of pin
status), user should select ‘Triggered mapping’ option to select one pin that triggers selected joystick
button on off-to-on transition (Down Event) and one pin that triggers this joystick button on on-to-
off transition (Up Event).
If joystick button mapping is to be used in connection with encoder inputs, use ‘Triggered mapping’
option (encoder’s values cannot be directly translated into direct mapping) and select a pin with the
appropriate encoder channel. For example: pins 5 and 6 are set up as digital inputs with encoder
(channel A on pin 5 and channel B on pin 6). When pin 5 is selected as Down event pin for joystick
Button 2 and pin 6 is selected as Down event pin for joystick Button 3, rotating the encoder in
positive direction will trigger joystick Button 2 on each detent. Similarly, rotating the encoder in
negative direction, joystick Button 3 will be triggered on each detent. Up Event pin option cannot be
used in connection with encoders.
19 www.poscope.com
PoKeys user manual
To open analog inputs dialog, go to Peripherals menu and select ‘Analog inputs and outputs’. Dialog
below appears. To enable display of analog input channel, check the appropriate check box. It is
enabled only when the input is set up as analog input.
The progress bar displays the current voltage at the pin with the maximum at 3.3V. Below the input
selection boxes user can set low-pass filtering for analog inputs. When analog input signal appears to
be flickering or jumping due to analog signal noise, move the value for the filter to the right towards
label ‘slow signals’ and then press Set button.
If pin 43 is set as analog output, analog value can be set for this pin.
To start using matrix keyboard, some insight is needed into working of a matrix keyboard. Matrix
keyboard is a set of buttons, connected in a mesh. All buttons in a row share one contact, same goes
for each of the buttons in the column. If a button is pressed, a key press is detected with a periodic
scanning of each of the rows and columns. PoKeys devices use digital outputs for setting the voltage
levels on rows and read column voltage levels using digital inputs that already have internal pull-up
resistors, so no external circuitry is needed.
PoKeys also support matrix keyboard as PoExtBus Pro device, which is much quicker and simpler to
connect. See the chapter on PoExtBus Pro devices in this manual.
20 www.poscope.com
PoKeys user manual
PoKeys devices support matrix keyboards of up to 16x8 in size, simpler 3x3, 4x3, 4x4 and others are
of course fully supported.
Now, let us look how to set up a 4x3 keyboard. Open Peripherals > Matrix keyboard and set number
of rows to 4 and number of columns to 3. Now click ‘Enable matrix keyboard’. Matrix keyboard is
schematically drawn below. Even lower, key mapping settings can be selected (on PoKeys55 devices).
Associate keys as it is needed in your application and close window. Now, select 3 pins and set them
as digital inputs (column pins) and 4 pins as digital outputs (row pins). When finished, click Send to
device button and start using your matrix keyboard.
To test the matrix keyboard, set the matrix keyboard settings, assigns proper pins and send the
configuration to the device. Then open the matrix keyboard settings window again and press keys on
the matrix keyboard. Detected keys are displayed in the graphical representation of the matrix
keyboard with a colored background.
On PoKeys55 devices, to set different key presses for ‘key press’ and ‘key release’ events, check
‘Triggered mapping’ option and select different settings for ‘Down key’ (‘key press’ event) and ‘Up
key’ (‘key release’ event).
21 www.poscope.com
PoKeys user manual
PoKeys devices support matrix keyboard with alternate function keys. User can assign two different
keyboard keys to each of the matrix keyboard buttons. If Fn+ key input pin is inactive, then the
default function key is simulated. If the Fn+ key input pin is activated, an alternate function key is
simulated instead of default.
22 www.poscope.com
PoKeys user manual
PoKeys device’s PWM (pulse width modulation) module can be set up via Peripherals > PWM
outputs….
In this window, user can enter PWM period and set PWM duties for each channel. Channels can be
independantly enabled or disabled. After a change is made, user must click 'Set values' button or
23 www.poscope.com
PoKeys user manual
check 'Send to device on change' checkbox. Left position of a slider means 0% and right position
100% respectively.
User can connect almost any widely available character LCD that is based on HD44780 or similar
chipset.
Usually these displays come in various sizes - 1/2/4 line with 8/16/20 characters and colors (black
letters on green background, white letters on blue background ...).
These displays share standard pin-out that is listed in the table below:
1
Positive supply voltage depends on LCD used. User should find this information in datasheet of the LCD in use.
On PoKeys56E take special care that the power supply voltage for the LCD is adequate (there is 0.8 V of
voltage drop between power supply input and 5V pin).
24 www.poscope.com
PoKeys user manual
LCD Display can be used to display various data. A third-party application or a script can execute all
supported operations, including LCD initializing, clearing, moving cursor, setting display shifting
mode, custom character defining and of course showing text. All this is available through easy-to-use
PoKeysDevice DLL interface.
Functions of this interface can be tested through PoKeys settings application. Just open Peripherals >
Test LCD… and dialog below will appear.
User can also set entry mode settings of LCD module. Cursor can be set-up to move either right
(normally) or left after each character displayed. If 'Display' shift is enabled, whole display shifts with
every new character displayed.
Settings are processed after user clicks button 'Set Entry mode'.
Settings are processed after user clicks button 'Set LCD on/off'.
25 www.poscope.com
PoKeys user manual
User can connect one or two matrix LED displays on PoKeys device.
Additional circuitry is needed to deserialize data, used to refresh
matrix LED display.
26 www.poscope.com
PoKeys user manual
To set-up matrix LED displays, open 'Peripherals' > 'LED displays'. The following dialog appears
For each of the displays, number of rows and columns can be selected. On the bottom, after enabling
'Live test display x', user can test the displays in real-time by clicking on gray rectangles. Left-click
turn-s selected pixel on, while right-click resets selected pixel.
27 www.poscope.com
PoKeys user manual
PoExtBus support
PoExtBus bus support enables user to add additional 10 8-bit shift registers to the project based on
PoKeys device. This gives additional 80 digital outputs that can be easily controlled with included dll
interface or other 3rd party interface for PoKeys device.
On PoKeys55, device assigns pins 35, 36 and 37 to be used with PoExtBus. On PoKeys56 series, there
is a dedicated connector on the board, which serves for the PoExtBus functions.
28 www.poscope.com
PoKeys user manual
To set-up and test PoExtBus, open 'Peripherals' > PoExtBus...'. The dialog below (Figure 18) appears.
By using mouse left and right clicks, user can turn on or off each of the outputs.
29 www.poscope.com
PoKeys user manual
PoKeys56 devices support PoExtBus Pro devices that extend PoKeys56 functionality. Multiple
PoExtBus Pro and PoExtBus devices can be linked together. While the PoExtBus Pro devices and
PoExtBus devices share the same ExtBus connector, found on PoKeys56 boards, user should pay
attention in connecting devices of both types together (see the schematics below).
All PoExtBus Pro devices must be connected in parallel to each other and directly to the PoKeys56
board, while the PoExtBus devices should be connected in series after the PoExtBus Pro devices.
In order to register new device, double click on the 'Unconfigured device' icon. In the next 10
seconds press any key on the device that is about to be added. If the process is successful, status LED
on the device will stop blinking and will be constantly lit. The device will also be listed as in the dialog
below:
PoEBkb
PoEBkb devices are variously configured keyboards with optional signal LEDs under each key.
30 www.poscope.com
PoKeys user manual
The device can be virually mapped to PoKeys matrix keyboard. Third party software can set the
status of LEDs under the keys, read the light sensor that measure the amount of light in the
environment and set the intensity of the LEDs.
To map the PoEB KB to PoKeys matrix keyboard, initialize the PoExtBus Pro bus as described above in
'Adding new devices', select the keyboard in the device list and check the checkbox 'Enable mapping
to matrix keyboard'.
- PoExtBus Pro device can be connected only to PoKeys board or other PoExtBus Pro
device
- PoExtBus device can be connected to either PoKeys board, PoExtBus Pro or
PoExtBus device.
- There should be not PoExtBus device connected between any PoExtBus Pro devices
and PoKeys board
PoExtBus PoExtBus
PoKeys56 device device
device
31 www.poscope.com
PoKeys user manual
Users can freely assign their own User ID number that represents a specific PoKeys device (enables
distinguishing between different PoKeys devices in case there is more than one connected to a single
host PC). To change the User ID number, go to ‘Device’ > ‘Change user ID’ menu. Simply enter any
number between 0 and 255, and click the 'Change user ID' button.
To save the current configuration to a file, go to ‘File’ > 'Save' menu and select a new filename. To
reload a saved configuration from a file, go to ‘File’ > ‘Open’ menu and select the appropriate file. To
transfer new settings to the device, click on the ‘Save to device’ button.
On a Windows operating system, users can assign a custom shortcut key to any program shortcut.
Find the shortcut and then right click on it to show the context menu (Step 1). Select Properties (Step
2), and under the Shortcut tab (Step 3), click on the ‘Shortcut key’ text box. Proceed by typing in a
combination that you wish to assign to a particular program (Step 4). Next, open the PoKeys
application and connect to the desired PoKeys device. Click on the pin that will function as a launch
trigger for your application (Step 5). Under Key mapping, select the same keyboard combination that
you assigned to the program shortcut (Step 6). Click on the ‘Send to device’ button (Step 7) to
transfer settings to the device. This will activate the new shortcut.
32 www.poscope.com
PoKeys user manual
5
7
33 www.poscope.com
PoKeys user manual
7. PoKeys56E
PoKeys56E is a network type of PoKeys device. The device can be connected to Ethernet 10/100
network with standard RJ-45 cable. Battery holder is for future upgrades only and no battery should
be inserted into the holder.
By default, the device is set to use the DHCP functionality of the network router. User can later turn
on or off the DHCP support. If DHCP is not needed/wanted, fixed IP address can be defined for the
device. To set the network settings of the device, go to Device menu and click Change network
address...
The device communicates using TCP and UDP port of 20055. Please ensure the firewall settings
allow communication with this port. Also, please make sure that your network card (which you
have connected PoKeys56E to) has an IP address asigned with the subnet mask 255.255.255.0
(check it in IPv4 settings in your system).
Device discovery
If device IP address is set as fixed, use can connect directly to PoKeys56E device. Otherwise, UDP
discovery packet should be send as UDP broadcast packet (for details, please see the protocol
specification document). All PoKeys56E devices that receive this packet, respond with their current IP
address and serial number.
34 www.poscope.com
PoKeys user manual
Default settings
DHCP: enabled
Port: 20055
Security: Full access
After receiveing the UDP discovery packet and if the DHCP server is not available, PoKeys56E will use
the temporary address of x.x.x.250, where x.x.x is the subnet address (with 255.255.255.0 subnet
mask). This enables user to reconfigure the device with the proper IP address. To do this, click on the
Configure button.
IP address of the device can be entered in the text box on the right and added to the list by clicking
the button 'Add'. The list of additional devices is saved on application exit.
Security
Due to exposed nature of a network device, an authentication mechanism was implemented in
PoKeys56E that allows three levels of access rights:
- Full access (default): the device is fully accessible from the network
- Read-only access: unauthorized users are allowed only to fetch data from the device, while
an authenticated users can acccess all functions of the device
- Full lock: unauthorised users can not neither read or write to the device. A user password is
required to unlock access.
35 www.poscope.com
PoKeys user manual
The security is set up in PoKeys configuration software – on the Device menu, click Set device
security... The password can contain any character and can be up to 32 characters long.
Modbus support
PoKeys56E supports slave (server) operation of Modbus TCP communication protocol. Modbus TCP
compatible devices on the network can read the values from the device and set the outputs. To
elevate the security, user can define which peripherals are accessible via Modbus TCP.
Modbus TCP uses TCP protocol on port 502 (default), which can be changed in Modbus settings
(accessible from the menu Device – Modbus configuration...). The Modbus TCP connection is
disconnected after 3 seconds of inactivity (this default value can be changed in the Modbus settings).
Discrete inputs/outputs
Supported operations:
0x01: Read coils
0x02: Read discrete input
0x05: Write single coil
0x0F: Write multiple coils
36 www.poscope.com
PoKeys user manual
Registers
Supported operations:
0x03: Read holding register
0x04: Read input register
0x06: Write single register
0x10: Write multiple registers
Where
37 www.poscope.com
PoKeys user manual
Web interface
PoKeys56E devices can be monitored through the simple web interface. To open the interface, use
your internet browser and type in the IP address of the PoKeys56E board. The following page will be
displayed:
The status of the input pins, encoder values and analog inputs is continuously and dynamically
refreshed.
Developers can access status of the inputs by fetching the file /devStat.xml from PoKeys56E board.
38 www.poscope.com
PoKeys user manual
Suppose that the PoKeys56E is at the pokeysdemo.poscope.com (change this address to the address
of your own PoKeys56E device).
The following dialog will appear. Enter the address of the PoKeys56 board in the field on the right
and click on 'Add'.
pokeysdemo.poscope.com
Then click on 'OK'. If the connection was established successfully, PoKeys56E will be shown in the list
of the devices.
39 www.poscope.com
PoKeys user manual
I2C protocol
The I2C bus was designed by Philips in the early '80s to allow easy communication between
components which reside on the same circuit board. Philips Semiconductors migrated to NXP in
2006. The name I2C translates into "Inter IC". Sometimes the bus is called IIC or I²C bus.
PoKeys56E devices support communication with I2C slave devices, connected to the PoExtBus
connector. As both I2C and PoExtBus use the same connector, PoExtBus functions are turned off for
the time when I2C is activated (PoExtBus functionality can be moved to pins 35,36,37 as with
PoKeys55 devices).
Marking the pin closer to the bottom of the board (the oposite side of either Ethernet or USB
connector) as pin 1, the I2C devices should be connected as follows:
Protocol can be tested via PoKeys configuration software. Click on Peripherals > I2C bus test... The
following dialog appears.
2
Figure 25: I C protocol test dialog
40 www.poscope.com
PoKeys user manual
1-Wire protocol
1-Wire is a device communications bus system designed by Dallas Semiconductor Corp. that provides
low-speed data, signaling, and power over a single signal.[1] 1-Wire is similar in concept to I²C, but
with lower data rates and longer range. It is typically used to communicate with small inexpensive
devices such as digital thermometers and weather instruments.
PoKeys56E devices support communication with 1-Wire slave devices (without parasitic power
supply), connected to the pin 55 with external pull-up resistor (of approximately 5 kΩ).
Protocol can be tested via PoKeys configuration software. Click on Peripherals > 1-Wire bus test...
The following dialog appears.
41 www.poscope.com
PoKeys user manual
In the software bundle included with the PoKeys device, there is also a console interface application,
which enables command-line style communication with the device (figure 6). To start using the
console application, go Start>Run…, type cmd and press Enter. Navigate to the folder, where
PoKeysConsole.exe is located (usually C:\Program Files\PoKeys\).
Supported operations
Description: Enumerates and prints out all the detected PoKeys55 devices with their User IDs.
Description: Prints out the detailed description of the device, i.e. the device’s serial number,
firmware version and User ID.
Description: Before any operation can be executed, host software must connect to PoKeys55 device,
using Connect to PoKeys55 device operation.
Description: After the settings have been changed, they need to be sent to the device. This is
accomplished with via the Save configuration operation. ‘Connect to PoKeys55 device’ operation
must be executed before this operation!
Description: Prints out the current pin setting. If the pin ID parameter is omitted, settings for all the
pins are printed out.
42 www.poscope.com
PoKeys user manual
The last parameter is used to define polarity of digital input and output pins. It must be either + (non-
inverted polarity) or - (inverted polarity).
Description: Reads and prints out current digital input value on selected pin.
Description: Reads and prints out current analog input value on selected pin. Pin ID must be between
43 and 47, since only these pins support analog to digital conversion.
Description: Sets the digital output to specified value. Value can be any number between 0 (0 V) and
1023 (3.3 V).
43 www.poscope.com
PoKeys user manual
44 www.poscope.com
PoKeys user manual
1. Relays
2. LEDs
3. High-current LEDs
45 www.poscope.com
PoKeys user manual
4. Switches
This example shows how easy is to set up a digital input pin for direct key mapping
46 www.poscope.com
PoKeys user manual
7. Select ‘Direct key mapping’ and from drop-down box select Escape
47 www.poscope.com
PoKeys user manual
48 www.poscope.com
PoKeys user manual
49 www.poscope.com
PoKeys user manual
50 www.poscope.com
PoKeys user manual
If configuration editor cannot be used to reconfigure the device because of endless key presses from
the device, simple reset procedure should be executed.
PoKeys configuration software is backing up current configuration state (except keyboard macro
sequences) on each connection start.
These configuration files can be found in the local application folder (system folder – usually
c:\Documents and settings\{username}\Local Settings\Application Data\PoKeys55\ on Windows
2000, XP or C:\Users\{username}\AppData\Local\PoKeys55\), named backup1.pkc, backup2.pkc and
backup3.pkc with backup3.pkc being the oldest configuration.
51 www.poscope.com
PoKeys user manual
I misconfigured the device. Now the device starts pressing virtual keys before I can do
anything. What can I do?
If you misconfigured the device in such a way that configuration utility cannot be used to repair the
configuration, see the section ‘Quick resetting the device configuration’ in this manual.
I have two (or more) PoKeys devices connected on one system and cannot differentiate
the devices to set the configurations.
It is advised that the users assign different UserID numbers to each of the device connected to a
system. Please see the section ’0
52 www.poscope.com
PoKeys user manual
Note: on PoKeys55 boards with serial number above 11500, this problem is removed.
I have an encoder connected to the PoKeys device and when I read the raw data, the
number climbs to 255 and then loops back around. Shouldn't the number continue to
increase (or decrease depending on which way I turn the shaft)?
RAW data is an 8-bit number and this is normal behavior and is named overflow. If you wish to use
greater range, you should extend it in your program. Check the RAW data register periodically and
calculate differences between states of the register at these periodic times in 8-bit space. Then use
the difference calculated to increment or decrement your own 16-bit, 32-bit or wider register.
I have connected a switch to pin 4 and now PoKeys55 is not recognized by the computer
anymore.
You must have connected normally-closed switch to pin 4 and therefore connected pin 4 to ground.
At boot (connecting PoKeys55 to USB) this means that PoKeys55 is entering system boot and
therefore cannot be used from the computer. Please use another pin for normally-closed switches.
Note: on PoKeys55 boards with serial number above 11500, this problem is removed.
I have connected a switch to pin 54 and now PoKeys55 is connecting in recovery mode on
every boot.
You must have connected normally-closed switch to pin 54 and therefore connected pin 4 to ground.
At boot (connecting PoKeys55 to USB) this means that PoKeys device is entering recovery mode and
therefore cannot be used from the third-party software. Please use another pin for normally-closed
switches. Also see chapter 9: Quick resetting the device configuration.
53 www.poscope.com
PoKeys user manual
If cables are routed inside electrically ‘dirty’ environment, use simple RC filter on those signals as
illustrated below.
If connecting switches to PoKeys device with long cables, use the schematics below. When using
matrix keyboard connected to PoKeys device with long cables, it is also advised to use the schematics
below for digital input pins. This filter should not be used on digital output pins!
My problem is that when I start the program, everything works good for about 3 to 5
seconds, then the CPU “lock up” and the only way to recover is to unplug the PoKeys
device.
The problem occurs because you are writing 'dirty' code. You create object every time you need to
use it in a loop, but you forget do properly dispose it. Best way to use PoKeys DLL in an application
that read or writes data in a loop, is to create a global object and initialize it once at the start of
application, and use its functions to read or write in a loop. This way the communication is much
faster.
If you are using Visual Basic development environment, add a reference to PoKeysDevice DLL and use
object browser to find proper declaration. Via object browser you can also access the list of all
supported functions, which will also be used by Intelli sense in editor.
54 www.poscope.com
PoKeys user manual
For PoKeys55 devices with serial numbers between 10000 and 11499:
Due to some hardware changes, some features had to be moved between pins, some problematic
pins were removed.
55 www.poscope.com
PoKeys user manual
56 www.poscope.com
PoKeys user manual
int EnumerateDevices()
Arguments:
none
Remarks:
Arguments:
deviceIndex
Index of the PoKeys device
Remarks:
Index is not UserID of the PoKeys device and therefore can change if more than one PoKeys
device is used at a time. Function returns True if connection is established or False if there
were errors.
DisconnectDevice
Terminate the connection with the device.
void DisconnectDevice()
Arguments:
none
Remarks:
This function should be called before class disposal or changing of the device.
57 www.poscope.com
PoKeys user manual
StartEthernetDiscovery
Starts the automatic discovery of PoKeys56E devices.
void StartEthernetDiscovery ()
Arguments:
none
Remarks:
StopEthernetDiscovery
Stops the automatic discovery of PoKeys56E devices.
void StopEthernetDiscovery ()
Arguments:
none
Remarks:
GetNumberOfDetectedNetworkDevices
Returns the number of detected PoKeys56E devices.
int GetNumberOfDetectedNetworkDevices()
Arguments:
none
Remarks:
ConnectToNetworkDevice
Connects to PoKeys56E device with the specified IPv4 address in format xxx.xxx.xxx.xxx (e.g.,
192.168.0.105, 192.168.050.002, etc.). If connection is established successfully, returns True.
58 www.poscope.com
PoKeys user manual
Arguments:
address
Remarks:
GetDeviceID
Retrieve device ID data, i.e. serial number and firmware version.
Arguments:
serialNumber
Variable in which serial number will be saved to
firmwareVersion
Variable in which firmware version will be saved to
pinNum
Variable in which number of pins will be saved to
Remarks:
GetDeviceIDEx
Retrieve device ID data, i.e. serial number and firmware version.
Arguments:
serialNumber
Variable in which serial number will be saved to
firmwareVersionMajor
Variable in which firmware major version will be saved to
59 www.poscope.com
PoKeys user manual
firmwareVersionMinor
Variable in which firmware minor version will be saved to
Remarks:
GetBuildDate
Retrieve firmware build date.
Arguments:
buildDate
Variable in which build date will be saved to
Remarks:
GetUserID
Retrieve user ID.
Arguments:
userID
Variable in which user ID will be saved to
Remarks:
SetUserID
Set user ID.
Arguments:
newUserID
New user ID
Remarks:
It is advised that each PoKeys device on a system should have its unique user ID. Returns
False on error.
60 www.poscope.com
PoKeys user manual
SetPinData
Set pin data – pin's function and options.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
pinFunction
pullUpDownResistor
invertPin
Remarks:
It is advised to use function SetPinData with only 2 parameters (pinID and pinFunction).
Returns False on error.
SetPinData
Set pin data – pin's function and options.
Arguments:
pinID
61 www.poscope.com
PoKeys user manual
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
pinFunction
Remarks:
GetPinData
Get pin data – pin's function and options.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
pinFunction
pullUpDownResistor
invertPin
pinPossibleFunctions
62 www.poscope.com
PoKeys user manual
Remarks:
It is advised to use function GetPinData with only 2 parameters (pinID and pinFunction).
Returns False on error.
GetPinData
Get pin data – pin's function and options.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
pinFunction
Remarks:
GetInput
Get digital input status.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
inputState
63 www.poscope.com
PoKeys user manual
Remarks:
Pin must be set as digital input for this command to function properly. Returns False on error.
SetOutput
Set digital output status.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
outputState
Remarks:
Pin must be set as digital output before this operation will function properly. On device
initialization, pins are NOT set as outputs even if they are configured so. Before using the pins
as digital outputs SetPinFunction must be called to set the direction of the pin. This must be
repeated on every startup. Returns False on error.
GetAnalogInput
Get analog input status.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
inputValue
64 www.poscope.com
PoKeys user manual
Variable in which analog value will be saved to. Use byte type for 8-bit analog values
and int type for 10-bit analog values
Remarks:
The returned value is between 0 and 255 (8-bit resolution) or 0 and 1023 (10-bit resolution).
0 means 0 V on input, while 255 respectively 1023 means Vdd (approximately 3.3V) on input.
Returns False on error.
SetAnalogOutput
Get analog input status.
Arguments:
pinID
Pin ID is zero-based pin index on the device (output marked as 1 therefore has index
0)
value
Remarks:
The value specified must be between 0 and 255 (8-bit resolution) or 0 and 1023 (10-bit
resolution). 0 means 0 V on output, while 255 respectively 1023 means Vdd (approximately
3.3V) on output. Returns False on error.
SaveConfiguration
Saves current device configuration to non-volatile flash memory.
bool SaveConfiguration()
Arguments:
none
65 www.poscope.com
PoKeys user manual
Remarks:
This function takes some time to complete. Is meantime, communication with the device is
not possible. Returns False on error.
GetMatrixConfiguration
Get complete matrix keyboard configuration.
Arguments:
configuration
width, height
row_pins
An array of 8 bytes, each having an index of a pin that is associated with the row.
Row pins must be set as digital outputs.
column_pins
An array of 8 bytes, each having an index of a pin that is associated with the column.
Column pins must be set as digital inputs.
macro_mapping
An array of 64 boolean values (see below for numbering hint). If the value is set to
true, instead of key press simulation, macro is run.
keycodes
keymodifiers
An array of 64 byte values (see below for numbering hint). It contains key modifiers.
Keys indexing:
66 www.poscope.com
PoKeys user manual
No matter what dimensions the matrix keyboard has, the following scheme is used
for keys indexing. A1 is always 0, B1 1, A2 8, ... For example, if user connects a 3x3
matrix keyboard, keys have indexes: 0, 1, 2, 8, 9, 10, 16, 17, 18.
A B C D E F G H
1 0 1 2 3 4 5 6 7
2 8 9 10 11 12 13 14 15
3 16 17 18 19 20 21 22 23
4 24 25 26 27 28 29 30 31
5 32 33 ...
Remarks:
Row pins must be set as digital outputs and column pins as digital inputs respectively.
Returns False on error.
SetMatrixConfiguration
Set complete matrix keyboard configuration.
Arguments:
configuration
width, height
row_pins
An array of 8 bytes, each having an index of a pin that is associated with the row.
column_pins
An array of 8 bytes, each having an index of a pin that is associated with the column.
macro_mapping
An array of 64 boolean values (see below for numbering hint). If the value is set to
true, instead of key press simulation, macro is run.
67 www.poscope.com
PoKeys user manual
keycodes
keymodifiers
An array of 64 byte values (see below for numbering hint). It contains key modifiers.
Keys indexing:
No matter what dimensions the matrix keyboard has, the following scheme is used
for keys indexing. A1 is always 0, B1 1, A2 8, ... For example, if user connects a 3x3
matrix keyboard, keys have indexes: 0, 1, 2, 8, 9, 10, 16, 17, 18.
A B C D E F G H
1 0 1 2 3 4 5 6 7
2 8 9 10 11 12 13 14 15
3 16 17 18 19 20 21 22 23
4 24 25 26 27 28 29 30 31
5 32 33 ...
Remarks:
GetPWMOutputs
Get complete PWM outputs configuration
Arguments:
channels
period
68 www.poscope.com
PoKeys user manual
32-bit PWM period value. PWM module of a PoKeys55 device runs at 12 Mhz, so a
value of 12 000 000 produces a period of 1 second. PWM module on PoKeys56E
devices runs at 25 MHz, so a value of 25 000 000 produces a period of 1 second.
duty_values
An array of 6 32-bit unsigned integers, each representing the value of PWM duty for
each channel. Minimum value is 0, maximum value is the same as period.
Remarks:
When using PWM enabled pins, digital inputs and outputs are inactive. Returns False on
error.
SetPWMOutputs
Set complete PWM outputs configuration
Arguments:
channels
period
32-bit PWM period value. PWM module of a PoKeys55 device runs at 12 Mhz, so a
value of 12 000 000 produces a period of 1 second. PWM module on PoKeys56E
devices runs at 25 MHz, so a value of 25 000 000 produces a period of 1 second.
duty_values
69 www.poscope.com
PoKeys user manual
An array of 6 32-bit unsigned integers, each representing the value of PWM duty for
each channel. Minimum value is 0, maximum value is the same as period.
Remarks:
When using PWM enabled pins, digital inputs and outputs are inactive. Returns False on
error.
LCDSetSettings
Set LCD settings.
Arguments:
option
rows
cols
Remarks:
Enabling LCD support does NOT disable pins. Special care should be taken when
simultanously using LCD designated pins for LCD display and digital inputs or outputs.
70 www.poscope.com
PoKeys user manual
LCDInit
Initializes the LCD module.
bool LCDInit()
Arguments:
No arguments needed
Remarks:
No remarks.
LCDClear
Clears LCD display.
bool LCDClear()
Arguments:
No arguments needed
Remarks:
No remarks.
LCDGotoXY
Move cursor to position x (column), y (row)
Arguments:
Column
Row
Remarks:
71 www.poscope.com
PoKeys user manual
LCDPutc
Displays one character on LCD module.
Arguments:
character
Remarks:
LCDPrint
Displays string on LCD
Arguments:
LCDText
Remarks:
LCDSetEntryMode
Set option for 'Entry mode'.
Arguments:
CursorMoveDirection
DisplayShift
Remarks:
72 www.poscope.com
PoKeys user manual
No remarks.
LCDDisplayOnOffControl
Set option for 'On/off control'.
Arguments:
DisplayOnOff
CursorOnOff
CursorBlinkingOnOff
Remarks:
No remarks.
LCDDefineCustomCharacter
Defines one custom character.
Arguments:
Character code
characterData
Remarks:
No remarks.
73 www.poscope.com
PoKeys user manual
AuxilaryBusGetData
Reads PoExtBus enabled setting.
Arguments:
auxilaryBusEnabled
Remarks:
No remarks.
AuxilaryBusSetData
Sets-up PoExtBus settings and data.
Arguments:
auxilaryBusEnabled
dataBytes
Remarks:
No remarks.
74 www.poscope.com
PoKeys user manual
Preinitialization
C#
Class initialization
PoKeysDevice_DLL.PoKeysDevice cPoKeys = new PoKeysDevice_DLL.PoKeysDevice();
The command returns the number of USB PoKeys devices detected on the system.
Getting device's serial number, user ID, firmware version and pin count:
int iSerialNumber = 0;
int iFirmwareVersion = 0;
int iPinNum = 0;
byte iUserID = 0;
Before any data can be read from or written to the device, the command ConnectToDevice
must be executed. It's parameter is a device's index and not the userID! (therefore can be
changed when multiple devices are connected at a time).
75 www.poscope.com
PoKeys user manual
The example below enumerates PoKeys56E devices, connects to every one of them and
displays its user ID and type in the listbox named lstEthDevices.
// Enumerate and list ethernet devices
MyDevice.StartEthernetDiscovery();
byte userID = 0;
lstEthDevices.Items.Clear();
lstEthDevices.Items.Add("Searching....");
lstEthDevices.Enabled = false;
lstEthDevices.Refresh();
Application.DoEvents();
Thread.Sleep(2000);
MyDevice.StopEthernetDiscovery();
if (MyDevice.GetNumberOfDetectedNetworkDevices() > 0)
{
lstEthDevices.Enabled = true;
lstEthDevices.Items.Clear();
cmdEthConnect.Enabled = true;
}
else
{
lstEthDevices.Items.Clear();
lstEthDevices.Items.Add("No device detected");
cmdEthConnect.Enabled = false;
}
for (int k = 0; k < MyDevice.GetNumberOfDetectedNetworkDevices(); k++)
{
// Three possibilites to connect to network device...
MyDevice.ConnectToNetworkDevice(MyDevice.EthDeviceIP[k]);
// Also
//MyDevice.ConnectToNetworkDevice(MyDevice.GetNetworkDeviceAddress(k));
//MyDevice.COM_GetNetworkDeviceData(ptr, 0);
//netData = (PoKeysDevice_DLL.sPoKeysNetworkDeviceData)Marshal.PtrToStructure(ptr,
typeof(PoKeysDevice_DLL.sPoKeysNetworkDeviceData));
//MyDevice.ConnectToNetworkDevice(netData.IPAddress);
MyDevice.GetUserID(ref userID);
lstEthDevices.Items.Add(MyDevice.GetDeviceTypeName() + " (" + userID + ")");
MyDevice.DisconnectDevice();
}
Remarks: the array MyDevice.EthDeviceIP holds the IP addresses of all detected devices in
the process of automatic discovery.
PoKeys56E has a short connection timeout setting of 3 seconds. After no data is received for
this period, the connection with the host is terminated.
76 www.poscope.com
PoKeys user manual
In this example 0 (Pin 1) is used for a pin ID. Pin IDs are 0 based.
bit 0 – Enable key mapping: to enable key mapping for a specific pin, this bit must be set to 1
bit 1 – enable direct key mapping: when this bit is set to 1, pin actions are directly reflected as a
keyboard key
bit 2 – enable keyboard macro mapping: when this bit is set to 1, special macro sequence is sent on
pin activation
77 www.poscope.com
PoKeys user manual
0 None
1 Rx
2 Ry
3 X
4 Y
5 Throttle
myDevice.BlockGetInput1(ref values_1_32);
// Read pins 33 to 55
bool[] values_33_55 = new bool[23];
myDevice.BlockGetInput2(ref values_33_55);
myDevice.BlockGetInputAll55(ref values);
// 10-bit mode
byte[] channels = { 42, 43, 45};
int[] values = new int[channels.Length];
78 www.poscope.com
PoKeys user manual
{
if ((n & (1 << i)) > 0) states [i] = false; else states [i] = true;
}
MyDevice.BlockSetOutput1(ref states); // Update pins 1 to 32
}
cPoKeys.MacroModifyLength(iMacroID, iMacroNewLen);
Delete macro
This command deletes specific macro.
byte iMacroID = 0;
cPoKeys.MacroDelete(iMacroID);
79 www.poscope.com
PoKeys user manual
byte iIndex = 5;
byte iKeyCode = 10;
byte iKeyModifier = 0;
cPoKeys.MacroGetFreeSpace(ref iFreeSpace);
cPoKeys.MacroGetActiveMacros(ref bActiveMacros);
// 1s delay
System.Threading.Thread.Sleep(1000);
while (true)
{
Application.DoEvents();
System.Threading.Thread.Sleep(100);
80 www.poscope.com
PoKeys user manual
// PWM base clock is 12 MHz (or 25 MHz on PoKeys56 devices), so 1 ms takes 12000 (25000)
cycles
float ms = MyDevice.GetPWMFrequency() / 1000;
uint period = (uint)(ms * 20); // 20 ms period
bool[] macros = new bool[128]; // This must always be the size of 128
byte[] keys = new byte[128]; // This must always be the size of 128
byte[] modifiers = new byte[128]; // This must always be the size of 128
byte configuration = 1;
byte numrows = 4;
byte numcols = 4;
MyDevice.GetMatrixKeyboardKeyStatus(ref KeyStates);
81 www.poscope.com
PoKeys user manual
MyDevice.AuxilaryBusSetData(1, dataOut);
MyDevice.GetTickCounter(ref ticks);
// Activate I2C
MyDevice.I2CSetStatus(true);
// Write 0 to the device at the address 0x90 (LM75 command: set address)
data[0] = 0;
MyDevice.I2CStartWrite(0x90, 1, data);
MyDevice.I2CGetWriteStatus(ref stat);
if (stat != 1)
{
MessageBox.Show("Error writing");
return;
}
// Read temperature – read two bytes from the device at the address of 0x90
MyDevice.I2CStartRead(0x90, 2);
// This operation was quite fast, so no wait is needed...
MyDevice.I2CGetReadStatus(ref stat, ref data);
if (stat == 1)
{
MessageBox.Show("Temperature: " + data[0] + "°C");
}
else
82 www.poscope.com
PoKeys user manual
{
MessageBox.Show("Error reading");
}
// Deactivate I2C
MyDevice.I2CSetStatus(false);
MyDevice.prot1WireSetStatus(true);
data[0] = 0xCC;
data[1] = 0x44;
MyDevice.prot1WireStartWriteAndRead(2, 0, data);
Thread.Sleep(1000);
data[0] = 0xCC;
data[1] = 0xBE;
MyDevice.prot1WireStartWriteAndRead(2, 9, data);
Thread.Sleep(10);
byte len = 0;
MyDevice.prot1WireGetReadStatus(ref stat, ref data, ref len);
if (stat == 1)
{
MessageBox.Show("Temperature: " + (((data[1] << 8) + data[0]) >> 4) + "°C");
}
else
{
MessageBox.Show("Error reading");
}
83 www.poscope.com
PoKeys user manual
To move the PoKeys55 device to a new level some major changes to interface were imminent.
Pi n function 1 was removed (this was directly key mapped pin function). Instead, key mapping
functionality was added to any digital input pin. Key mapping type (none/direct/macro) can be set via
changed Key mapping command as shown in above example.
On PoKeys55 devices with serial numbers greater than 10133 and lower than 11500 there is a flawed
connection for pin 13. Please do not use this pin.
Note: on PoKeys55 boards with serial number above 11500, this problem is removed.
Note: on PoKeys55 boards with serial number above 11500, this problem is removed.
84 www.poscope.com
PoKeys user manual
Affected: PoKeys56E
85 www.poscope.com
PoKeys user manual
The material contained in this release is licensed, not sold. PoLabs grants a license to the person who installs this softwar e,
subject to the conditions listed below.
1. Access
The licensee agrees to allow access to this software only to persons who have been informed of and agree to abide by these
conditions.
2. Usage
The software in this release is for use only with PoLabs products or with data collected using PoLabs products.
3. Copyright
PoLabs claims the copyright of, and retains the rights to, all material (software, documents etc) contained in this release.
You may copy and distribute the entire release in its original state, but must not copy individual items within the release
other than for backup purposes.
4. Liability
PoLabs and its agents shall not be liable for any loss or damage, howsoever caused, related to the use of PoLabs equipment
or software, unless excluded by statute.
7. Viruses
This software was continuously monitored for viruses during production, however the user is responsible for virus checking
the software once it is installed.
8. Support
No software is ever error-free, but if you are unsatisfied with the performance of this software, please contact our technical
support staff, who will try to fix the problem within a reasonable time.
9. Upgrades
We provide upgrades, free of charge, from our web site at www.poscope.com. We reserve the right to charge for updates
or replacements sent out on physical media.
10. Trademarks
Windows is a registered trademark of Microsoft Corporation. PoKeys, PoKeys55, PoKeys56E, PoScope, PoLabs and others
are internationally registered trademarks.
support: www.poscope.com
86 www.poscope.com