Jump to content

Component: USB HID (Comms: USB)

From Flowcode Help
Revision as of 20:59, 16 November 2021 by Wiki bot (talk | contribs)
Author Matrix Ltd
Version 1.4
Category Comms: USB


USB HID component

Component to create and communicate using a standard HID type USB class. Compatible with simulation and USB enabled microcontroller devices PIC/dsPIC/AVR. Note that AVR is currently in Beta and may have problems with custom descriptors.

Detailed description

No detailed description exists yet for this component

Examples

Here are some examples to get you started with USB HID communications using Flowcode.

HID Mouse

Reads a EB014 keypad and depending on the key pressed sends the appropriate movement and button clicks to control the mouse.

The speed is set by the speed variable which can range from 1 to 127.

Mouse Keypad Example

Key breakdown: 1 = UpLeft, 2=Up, 3=UpRight, 4=Left, 6=Right, 7=DownLeft, 8=Down, 9=DownRight, *=Left Click, #=Right Click.


Reads two encoders and moves the mouse cursor based on their movement since the last operation.

A switch on pin B0 can be used to toggle the left mouse click on and off and pin B1 can be connected to an LED to show the status of the left mouse button.

The EB073 encoders board connected to PortB will allow all of this functionality.


Mouse Encoder Example


HID Keyboard

Converts a ASCII character into a keypress that will be sent to the USB host device.

A demo string is provided which is then broken down into characters and sent to the USB host.

Keyboard Example


Here is a file showing the standard HID keyboard scan codes to help make sense of the example.

File:HID Keyboard Scan Codes.xls


With the example running if you create a text file and highlight the text file then the USB device will populate the file with data.


E.g.

HelloFromYourUSBKeyboardDevice12345

HelloFromYourUSBKeyboardDevice12345

HelloFromYourUSBKeyboardDevice12345


Currently only compatible with the following characters: 0123456789!"£$%^&*()/\*-+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n\t


A complete list of keyboard scan codes can be found here under section 7 - Keyboards.

http://www.freebsddiary.org/APC/usb_hid_usages.php


HID Descriptor Tool

This tool allows you to create your own descriptors which can then be inserted into the HID descriptor property with the custom descriptor type selected.

File:HID Descriptor Tool.zip

Downloadable macro reference

ReceiveByte
Receives a byte from the USB. 
- BYTE Idx
 
- BYTE Return


SetSerialNumber
Allows the device serial number to be edited. 
- STRING SerialNumber
 
- VOID Return


SendData
Sends the contents of the transmit buffer to the USB. 
- BYTE Return


CheckRx
Checks for any incoming data. Returns the number of data bytes received since the last check. 
- BYTE Return


UpdateData
Allows a byte of the transmit buffer to be assigned. 
- BYTE idx
 
- BYTE value
 
- VOID Return


ReceiveString
Receives a string of bytes from the USB 
- BYTE NumBytes
 
- STRING Return


SendDataDirect
Sends data directly to the USB 
- STRING Data
 
- BYTE Return


Initialise
Starts up the USB connection and waits for the device driver to be correctly installed on the PC.  
- BYTE Return


PULSFALL
Sets the pulse waveform negative edge to <nrf> micro seconds. (Lower limit: 5ns - Upper limit: 99.9ns). 
[[File:]] - Fall
Sets the pulse waveform negative edge in micro seconds (5ns - 99.9ns). 
- VOID Return


DCOFFS
Sets the dc offset to <nrf> Volts. (Lower limit: -4.500 Vdc - Upper limit: 4.500 Vdc). 
[[File:]] - DCOffset
Sets the dc offset in Volts(Vdc) (4.500 Vdc - 4.500 Vdc). 
- VOID Return


PRE
Sets the Parallel Port Enable Register to the value <nrf>. 
- BYTE Status
Set register value 0-255 
- VOID Return


CALIBRATION
Sets the calibration mode to <START>, <SAVE>, or <ABORT>. <nrf> represents the calibration password. 
- BYTE Mode
0 = START, 1 = SAVE, 2 = ABORT 
- ULONG Password
Calibration password 
- VOID Return


SWPMKRFREQ
Sets the sweep marker to <nrf> Hz. (Lower limit: 10kHz - Upper limit: 100kHz). 
[[File:]] - Frequency
Set the sweep marker in Hertz(Hz) (10kHz - 100kHz). 
- VOID Return


MODAMSRC
Sets AM waveform source to; 0 = INT, 1 = EXT. 
[[File:]] - Source
Sets AM waveform source (0 = INT, 1 = EXT). 
- VOID Return


AMPUNIT
Sets the amplitude units to; 0 = VPP, 1 = VRMS, 2 = DBM. 
- BYTE Units
Sets the amplitude units (0 = VPP, 1 = VRMS, 2 = DBM). 
- VOID Return


ESRRet
Returns the value in the standard event status register in <nr1> 
- BYTE Return


QERRet
Query and clear error register 
- BYTE Return


SWPTIME
Sets the sweep time to <nrf> seconds 
[[File:]] - Seconds
Set the sweep time in seconds. 
- VOID Return


MODHOPFREQ
Sets HOP frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 50MHz). 
[[File:]] - Frequency
Sets HOP frequency in Hertz(Hz) (1uHz - 50MHz). 
- VOID Return


PULSWID
Sets the pulse waveform width to <nrf> sec. (Lower limit: 20ns - Upper limit: 1Ms). 
[[File:]] - Seconds
Sets the pulse waveform width in seconds (20ns - 1Ms). 
- VOID Return


PRERet
Returns the value in the Parallel Poll Enable Register in <nr1> numeric format. The syntax of the response is <nr1><rmt>. 
- BYTE Return


AMPL
Sets the amplitde to <nrf> in the units as specified by the AMPUNIT command. (Range = 10mVpp - 10Vpp) 
[[File:]] - Amplitude
Sets the amplitude (10mVpp - 10Vpp). Units specificied by AMPUNIT command. 
- VOID Return


MODPOLFSK
Sets FSK trigger slope to; 0 = POS, 1 = NEG. 
[[File:]] - Slope
Set FSK trigger slope (0 = POS, 1 = NEG). 
- VOID Return


PULSEDGE
Sets the pulse waveform edges (positive and negative edge) to <nrf> micro Sec. Value zero sets to the minimum value allowed (Lower limit: 5ns - Upper limit: 40us). 
[[File:]] - Edges
Sets the pulse waveform edges in micro seconds (5ns - 40us). 
- VOID Return


ARB4Ret
Returns the binary-data from an existing abbitrary wavefrom memory location. 
- UINT Return


ARBLOAD
<cpd> sets the output waveform type to <DC>,<SINC>, <EXPRISE>,<LOGRISE>,<RAMPUP>,<RAMPDN>, <TRIANG>,<SQUARE>, <ARB1>,<ARB2>,<ARB3>, <ARB4>, <"USERNAME1">, <"USERNAME2">, <"USERNAME3">, <"USERNAME4">. 
- STRING Type
Waveform Type 
- VOID Return


ESERet
Returns the value in the Standard Event Status Enable Register in <nr1> numeric format. The syntax of the response is <nr1><rmt>. 
- BYTE Return


SLVRST
Sets the SLAVE generator ready to be synchronised 
- VOID Return


SQRSYMM
Sets the square waveform symmetry to <nrf> %. (Lower limit: 20 - Upper limit: 80) 
[[File:]] - Symmetry
Sets the square waveform symmetry in percent (20 - 80). 
- VOID Return


OUTPUT
Sets the output to; 0 = ON, 1 = OFF, 2 = NORMAL, 3 = INVERT. 
- BYTE SetOutput
Set the output. (0 = ON, 1 = OFF, 2 = NORMAL, 3 = INVERT). 
- VOID Return


MODPWMDEVWDT
Sets the PWM waveform deviation to <nrf> sec. 
[[File:]] - Sec
 
- VOID Return


SWPMODE
Sets the sweep mode to <CONT> or <TRIG>. 0 = CONT, 1 = TRIG. 
[[File:]] - Mode
Set the sweep mode (0 = CONT, 1 = TRIG). 
- VOID Return


MODFSKRATE
Sets FSK rate to <nrf> Hz. (Lower limit: 2mHz - Upper limit: 100kHz). 
[[File:]] - Rate
Sets FSK rate in Hertz(Hz) (2mHz - 100kHz). 
- VOID Return


BST
Sets the burst mode to; 0 = <OFF>, 1 = <NCYC>, 2= <GATED>, 3 = <INFINITE>. 
- BYTE MODE
Sets the burst mode (0 = OFF, 1 = NCYC, 2 = GATED, 3 = INFINITE). 
- VOID Return


SYNCTYPE
Sets the sync type to; 0 = AUTO, 1 = CARRIER, 2 = MODULATION, 3 = SWEEP, 4 = BURST, 5 = TRIGGER. 
- BYTE Type
Set the sync type (0 = AUTO, 1 = CARRIER, 2 = MODULATION, 3 = SWEEP, 4 = BURST, 5 = TRIGGER). 
- VOID Return


MODPWMSHAPE
Sets PWM waveform shape to; 0 = SINE, 1 = SQUARE, 2 = RAMPUP, 3 = RAMPDN, 4 = TRIANG, 5 = NOISE, 6 = DC, 7 = SINC, 8 = EXPRISE, 9 = LOGRISE, 10 = ARB1, 11 = ARB2, 12 = ARB3, 13= ARB4. 
- BYTE Shape
Sets PWM waveform shape (1 = SINE, 2 = SQUARE, 3 = RAMPUP, 4 = RAMPDN, 5 = TRIANG, 6 = NOISE, 7 = DC, 8 = SINC, 9 = EXPRISE, 10 = LOGRISE, 11 = ARB1, 12 = ARB2, 13 = ARB3, 14= ARB4). 
- VOID Return


LOLVL
Sets the amplitude-low-level to <nrf> Volts. (Lower limit: 5.000 V - Upper limit: -0.010 V). 
[[File:]] - LowLevel
Sets the amplitude-low-level in Volts(V) (-5.000 V - -0.010 V). 
- VOID Return


SAV
Saves the complete instrument setup to the setup-file named <nrf> 
- BYTE StoreLocation
Memory location of register (0-9) 
- VOID Return


TRG
This command is the same as pressing the TRIGGER key. 
- VOID Return


ARBDCOFFS
Sets the arbritary dc waveform offset to <nrf> volts. 
[[File:]] - OffsetVoltage
Set the offset voltage 
- VOID Return


SWPTRGPOL
Sets the sweep trigger slope to; 0 = POS, 1 = NEG. 
[[File:]] - Slope
Set the sweep trigger slope (0 = POS, 1 = NEG). 
- VOID Return


PULSRISE
Sets the pulse waveform negative edge to <nrf> micro seconds. (Lower limit: 5ns - Upper limit: 99.9ns). 
[[File:]] - Rise
Sets the pulse waveform positive edge in micro seconds (5ns - 99.9ns). 
- VOID Return


MODAMSHAPE
Sets AM waveform shape to: 0 = SINE, 1 = SQUARE, 2 = RAMPUP, 3 = RAMPDN, 4 = TRIANG, 5 = NOISE, 6 = DC, 7 = SINC, 8 = EXPRISE, 9 = LOGRISE, 10 = ARB1, 11 = ARB2, 12 = ARB3, 13= ARB4. 
- BYTE Shape
Sets AM waveform shape (1 = SINE, 2 = SQUARE, 3 = RAMPUP, 4 = RAMPDN, 5 = TRIANG, 6 = NOISE, 7 = DC, 8 = SINC, 9 = EXPRISE, 10 = LOGRISE, 11 = ARB1, 12 = ARB2, 13 = ARB3, 14= ARB4). 
- VOID Return


CLKSRC
Sets the clock source to; 0 = INT, 1 = EXT. 
[[File:]] - Source
Sets the clock source (0 = INT, 1 = EXT). 
- VOID Return


ARB1DEFRet
Returns user specified waveform name, waveform pint interpolation state and waveform length of ARB1. 
- STRING Return


BEEP
Sound one beep. 
- VOID Return


SWPCNTFREQ
Sets the sweep centre frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 50MHz). 
[[File:]] - Frequency
Sets the sweep centre frequency in Hertz(Hz) (1uHz - 50MHz). 
- VOID Return


SWP
Sets the sweep to <ON> or <OFF>. 0 = ON, 1 = OFF. 
[[File:]] - Sweep
Enable or disable the sweep (0 = ON, 1 = OFF). 
- VOID Return


BSTTRGSRC
Sets the burst trigger source to; 0 = INT, 1 = EXT, 2 = MAN. 
- BYTE Source
Set the burst trigger source (0 = INT, 1 = EXT, 2 = MAN). 
- VOID Return


MODPWMFREQ
Sets PWM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz). 
[[File:]] - Frequency
Sets PWM waveform frequency in Hertz(Hz) (1uHz - 20kHz). 
- VOID Return


ARB2Ret
Returns the binary-data from an existing abbitrary wavefrom memory location. 
- UINT Return


RST
Resets the instrument parameters to their default values. 
- VOID Return


RMPSYMM
Sets the ramp waveform symmetry to <nrf> %. (Lower limit: 0 - Upper limit: 100) 
[[File:]] - Symmetry
Sets the ramp waveform symmetry in percent (0 - 100). 
- VOID Return


BSTCOUNT
Sets the burst count to <nrf> cycles, maximum 1048575 cycles. 
[[File:]] - Count
Sets the burst count in cycles (1 - 1048575). 
- VOID Return


SWPMKR
Sets the sweep marker to <ON> or <OFF>. 0 = ON, 1 = OFF. 
[[File:]] - Marker
Enable or disable the sweep marker (0 = ON, 1 = OFF). 
- VOID Return


PULSFREQ
Sets the pulse waveform frequency to <nrf> Hz (Lower limit: 1uHz - Upper limit: 50MHz). 
[[File:]] - Frequency
Sets the pulse waveform frequency in Hertz(Hz) (1uHz - 50MHz). 
- VOID Return


MODFMDEV
Sets FM waveform deviation to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 25MHz). 
[[File:]] - Deviation
Sets FM waveform deviation in Hertz(Hz) (1uHz - 25MHz). 
- VOID Return


RCL
Recalls the instrument setup contained in store <nrf>. 
- BYTE StoreLocation
Memory location (0-9) 
- VOID Return


ESESet
Sets the standard event status enable register to the value of <nrf>. (Lower limit: 0 - Upper limit: 255) 
- BYTE Value
Enable the register to this value. (0 - 255) 
- VOID Return


LOCAL
Returns the instrument to local opertion and unlocks the keyboard. 
- VOID Return


SWPSPNFREQ
Sets the sweep frequency span to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 50.25kHz). 
[[File:]] - Frequency
Set the sweep frequency span in Hertz(Hz) (1uHz - 50.25kHz). 
- VOID Return


CALSTEP
Step to the next calibration point. 
- VOID Return


OPC
Sets the Operation Complete bit (bit 0) in the Standard Event Status Register. This will happen immediately the command is executed because of the sequential nature of all operations. 
- VOID Return


SRERet
Returns the value of the Service Request Enable Register in <nr1> numeric format. 
- BYTE Return


MODPMFREQ
Sets PM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz). 
[[File:]] - Frequency
Sets FM waveform frequency in Hertz(Hz) (1uHz - 20kHz). 
- VOID Return


ARBRESIZE
Changes the size of arbritary waveform <cpd> to <nrf>. 
[[File:]] - Size
Size of waveform 
- STRING Waveform
Arbritary Waveform 
- VOID Return


LRN
Intall data from a previous *LRN? command. 
- VOID Return


MODPMSHAPE
Sets PM waveform shape to; 0 = SINE, 1 = SQUARE, 2 = RAMPUP, 3 = RAMPDN, 4 = TRIANG, 5 = NOISE, 6 = DC, 7 = SINC, 8 = EXPRISE, 9 = LOGRISE, 10 = ARB1, 11 = ARB2, 12 = ARB3, 13= ARB4. 
- BYTE Shape
Sets PM waveform shape (1 = SINE, 2 = SQUARE, 3 = RAMPUP, 4 = RAMPDN, 5 = TRIANG, 6 = NOISE, 7 = DC, 8 = SINC, 9 = EXPRISE, 10 = LOGRISE, 11 = ARB1, 12 = ARB2, 13 = ARB3, 14= ARB4). 
- VOID Return


ARB4
Loads the binary-data to an existing arbitrary waveform memory location ARB4. 
- BYTE Waveform
 
- VOID Return


CLKSRRet
Returns the clock source <INT> or <EXT>. 
[[File:]] - Return


MODPMDEV
Sets PM waveform deviation to <nrf> degrees. (Lower limit: -360° - Upper limit: 360°). 
[[File:]] - Degrees
Sets PM waveform deviation in degrees (-360 - 360). 
- VOID Return


MSTLOCK
Sends signal to SLAVE generator to get synchronised 
- VOID Return


HILVL
Sets the amplitude-high-level to <nrf> Volts. (Lower limit: -0.490 V - Upper limit: 5.000 V). 
[[File:]] - HighLevel
Sets the amplitude-high-level in Volts(V) (-0.490 V - 5.000 V). 
- VOID Return


ARB3
Loads the binary-data to an existing arbitrary waveform memory location ARB3. 
- UINT Waveform
 
- VOID Return


WAVE
Sets the waveform type. 0 = SINE, 1 = SQUARE, 2 = RAMP, 3 = TRIANG, 4 = PULSE, 5 = NOISE, 6 = ARB 
- BYTE WaveType
0 = SINE, 1 = SQUARE, 2 = RAMP, 3 = TRIANG, 4 = PULSE, 5 = NOISE, 6 = ARB. 
- VOID Return


CALADJ
Adjust the selected calibration value by <nrf> (Lower limit: -100 - Upper limit: 100). 
[[File:]] - Calibrate
Adjust the selected calibration value (-100 - 100). 
- VOID Return


STBRet
Returns the value of the Status Byte Register in <nr1> numeric format. 
- BYTE Return


ARB2
Loads the binary-data to an existing arbitrary waveform memory location ARB2. 
- UINT Waveform
 
- VOID Return


EERRet
Query and clear execution error number register. 
- STRING Return


MODFMSRC
Sets FM waveform source to; 0 INT, 1 = EXT. 
[[File:]] - Source
Sets FM waveform source (0 = INT, 1 = EXT). 
- VOID Return


MODAMFREQ
Sets AM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz). 
[[File:]] - Frequency
Sets AM waveform frequency in Hertz(Hz) (1uHz - 20kHz). 
- VOID Return


ESE
Sets the Standard Event Status Enable Register to the value of <nrf>. 
- BYTE Value
Value of register 0-255 
- VOID Return


ARB1
Loads the binary-data to an existing arbitrary waveform memory location ARB1. 
- UINT Waveform
16 Bit binary number for arbitrary waveform. 
- VOID Return


ARB4DEFRet
Returns user specified waveform name, waveform pint interpolation state and waveform length of ARB4. 
- STRING Return


CLS
Clears status byte register of the interface. 
- VOID Return


MSTRELOCK
Resynchronises the two generators in MASTER-SLAVE mode. 
- VOID Return


NOISLVL
Sets the output noise level to <nr1> %. (Lower limit: 0% - Upper limit: 50%) 
- BYTE Percent
Sets the output noise level in percent. (0 - 50) 
- VOID Return


LOCKMODE
Sets the synchronising mode to; 0 = MASTER, 1 = SLAVE, 2 = INDEP. 
- BYTE Mode
Sets the synchronising mode (0 = MASTER, 1 = SLAVE, 2 = INDEP). 
- VOID Return


ADDRESSRet
Returns the instruments address 
[[File:]] - Return


MODPMSRC
Sets PM waveform source to; 0 INT, 1 = EXT. 
[[File:]] - Source
Sets PM waveform source (0 = INT, 1 = EXT). 
- VOID Return


MODPWMSRC
Sets PWM waveform source to; 0 = INT, 1 = EXT. 
[[File:]] - Source
Sets PWM waveform source (0 = INT, 1 = EXT). 
- VOID Return


MOD
Sets modulation to; 0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM. 
- BYTE Modulation
Sets modulation (0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM). 
- VOID Return


ISTRet
Returns IST local message as defined by IEEE Std. 488.2. The syntax of the response is 0<rmt>, if the local message is false, or 1<rmt>, if the local message is true. 
[[File:]] - Return


LRNRet
Returns the complete setup of the instrument as a binary data block 
[[File:]] - Return


OPCRet
Query Operation Complete status. The response is always 1<rmt> and will be available immediately the command is executed because all commands are sequential. 
[[File:]] - Return


SWPTYPE
Sets the sweep type to; 0 = LINUP, 1 = LINDN, 2 = LINUPDN, 3 = LINDNUP, 4 = LOGUP, 5 = LOGDN, 6 = LOGUPDN, 7 = LOGDNUP. 
- BYTE Type
Set the sweep type (0 = LINUP, 1 = LINDN, 2 = LINUPDN, 3 = LINDNUP, 4 = LOGUP, 5 = LOGDN, 6 = LOGUPDN, 7 = LOGDNUP). 
- VOID Return


PULSRANGE
Sets PWM waveform source to <1>, <2> or <3>; 1 = 1, 2 = 2, 3 = 3. 
- BYTE Range
Sets the pulse rise and fall range. (1, 2 or 3) 
- VOID Return


TSTRet
The generator has no self test capability and the response is always 0 <rmt>. 
[[File:]] - Return


BSTTRGPOL
Sets the burst trigger slope to; 0 = POS, 1 = NEG. 
[[File:]] - Slope
Set the burst trigger slope (0 = POS, 1 = NEG). 
- VOID Return


ARB3Ret
Returns the binary-data from an existing abbitrary wavefrom memory location. 
- UINT Return


BSTPHASE
Sets the burst phase to <nrf> degrees. (Lower limit: -360 - Upper limit: 360) 
[[File:]] - Degrees
Sets the burst phase in degrees (-360 - 360) 
- VOID Return


IDNRet
Returns the instrument identification. The IDN is saved to the variable passed from the function 'ReturnIDN'. The return parameter is TRUE when the IDN is successfully returned. 
- STRING ReturnIDN
 
- STRING Return


SWPTRGPER
Sets the sweep trigger period to <nrf> seconds 
[[File:]] - Seconds
Set the sweep trigger period in seconds. 
- VOID Return


PULSDLY
Sets the waveform delay to <nrf> sec 
[[File:]] - Sec
 
- VOID Return


Initialise
Opens the COM port ready for communications. 
- VOID Return



Property reference

Properties
Vendor ID
USB vendor identifier tied to the manufacturer of the USB device 
Product ID
USB product identifier 
Device Name
Name used to identify the device 
Manufacturer
Manufacturer of the device 
Major Version
Firmware major version 
Minor Version
Device firmware minor version  
Enumeration Timeout
Specifies if the initialise routine is allowed to timeout instead of waiting forever for success 
Maximum Current (mA)
Maximum current the host should source to the device - max 500mA 
Country Code
Specific country code - if required 
Descriptor Select
Built in descriptor selection  
HID Descriptor
Contents of the HID descriptor 
Subclass
USB Subclass - Normally only mice and keyboards are boot devices 
Interface
Standard HID interface type 
Transmit Packet Size
Number of bytes to send to the PC  
Transmit Period (ms)
Delay between transmit packets 
Receive Packet Size
Number of bytes to receive from the PC 
Receive Period (ms)
Delay between receive packets 
Connections
Simulations
Label
Simulation label used to indicate the USB HID component on the panel.