Remote Control Interface

The PICSimLab remote control interface supports TCP connections using telnet or nc (netcat).

The default port is 5000 and can be changed in configuration windows.

The 'rlwrap' command can be used for best command edition support in telnet or nc:

 rlwrap nc 127.0.0.1 5000

The supported commands can be shown using the “help” command:

 help
List of supported commands:
  dumpe [a] [s]- dump internal EEPROM memory
  dumpf [a] [s]- dump Flash memory
  dumpr [a] [s]- dump RAM memory
  exit         - shutdown PICSimLab
  get ob       - get object value
  help         - show this message
  info         - show actual setup info and objects
  pins         - show pins directions and values
  pinsl        - show pins formated info
  quit         - exit remote control interface
  reset        - reset the board
  set ob vl    - set object with value
  sync         - wait to syncronize with timer event
  version      - show PICSimLab version
Ok

The “info” command show all available "objects" and values:

info
Board:     Arduino Uno
Processor: atmega328p
Frequency:   16000000 Hz
Use Spare: 1
    board.out[00] LD_L= 254
  part[00]: LEDs
    part[00].out[08] LD_1= 254
    part[00].out[09] LD_2= 30
    part[00].out[10] LD_3= 254
    part[00].out[11] LD_4= 254
    part[00].out[12] LD_5 254
    part[00].out[13] LD_6= 254
    part[00].out[14] LD_7= 254
  part[01]: Buzzer
    part[01].out[02] LD_1= 140
  part[02]: Push buttons
    part[02].in[00] PB_1= 1
    part[02].in[01] PB_2= 0
    part[02].in[02] PB_3= 1
    part[02].in[03] PB_4= 1
    part[02].in[04] PB_5= 1
    part[02].in[05] PB_6= 1
    part[02].in[06] PB_7= 1
    part[02].in[07] PB_8= 1
Ok

The “pins” command show all pins directions and digital values:

pins
  pin[01] ( PC6/RST) < 0                 pin[15] (  PB1/~9) > 0 
  pin[02] (   PD0/0) < 1                 pin[16] ( PB2/~10) > 0 
  pin[03] (   PD1/1) < 1                 pin[17] ( PB3/~11) > 0 
  pin[04] (   PD2/2) < 1                 pin[18] (  PB4/12) < 0 
  pin[05] (  PD3/~3) > 0                 pin[19] (  PB5/13) > 0 
  pin[06] (   PD4/4) < 1                 pin[20] (     +5V) < 1 
  pin[07] (     +5V) < 1                 pin[21] (    AREF) < 0 
  pin[08] (     GND) < 0                 pin[22] (     GND) < 0 
  pin[09] (  PB6/X1) < 0                 pin[23] (  PC0/A0) < 0 
  pin[10] (  PB7/X2) < 0                 pin[24] (  PC1/A1) < 0 
  pin[11] (  PD5/~5) < 1                 pin[25] (  PC2/A2) < 0 
  pin[12] (  PD6/~6) < 1                 pin[26] (  PC3/A3) < 0 
  pin[13] (   PD7/7) < 1                 pin[27] (  PC4/A4) > 0 
  pin[14] (   PB0/8) > 0                 pin[28] (  PC5/A5) > 0 
Ok

The “pinsl” command show all pins info in text formatted output:

pinsl
28 pins [atmega328p]:
  pin[01] D I 0 000 0.000 "PC6/RST " 
  pin[02] D I 1 200 0.000 "PD0/0   " 
  pin[03] D I 1 200 0.000 "PD1/1   " 
  pin[04] D I 1 200 0.000 "PD2/2   " 
  pin[05] D O 0 007 0.000 "PD3/~3  " 
  pin[06] D I 1 200 0.000 "PD4/4   " 
  pin[07] P I 1 200 0.000 "+5V     " 
  pin[08] P I 0 000 0.000 "GND     " 
  pin[09] D I 0 000 0.000 "PB6/X1  " 
  pin[10] D I 0 000 0.000 "PB7/X2  " 
  pin[11] D I 1 200 0.000 "PD5/~5  " 
  pin[12] D I 1 200 0.000 "PD6/~6  " 
  pin[13] D I 1 200 0.000 "PD7/7   " 
  pin[14] D O 0 000 0.000 "PB0/8   " 
  pin[15] D O 0 000 0.000 "PB1/~9  " 
  pin[16] D O 0 000 0.000 "PB2/~10 " 
  pin[17] D O 0 006 0.000 "PB3/~11 " 
  pin[18] D I 0 000 0.000 "PB4/12  " 
  pin[19] D O 0 000 0.000 "PB5/13  " 
  pin[20] P I 1 200 0.000 "+5V     " 
  pin[21] R I 0 000 0.000 "AREF    " 
  pin[22] P I 0 000 0.000 "GND     " 
  pin[23] A I 0 000 0.875 "PC0/A0  " 
  pin[24] A I 0 000 1.925 "PC1/A1  " 
  pin[25] A I 0 000 2.700 "PC2/A2  " 
  pin[26] A I 0 000 4.275 "PC3/A3  " 
  pin[27] D O 1 179 0.000 "PC4/A4  " 
  pin[28] D O 1 186 0.000 "PC5/A5  " 
Ok

You can view one input/output state using the “get” command:

get board.out[00]

get part[02].in[01]

Its possible use the “get” command to view individual pins state:

#digital state
get pin[19]
pin[19]= 0 
Ok

#digital mean value (0-200)
get pinm[19]
pin[18]= 100 
Ok

#analog state
get apin[25]
apin[25]= 2.700
Ok

#all info
get pinl[13]
pin[13] D I 1 200 0.000 "PD7/7   "
Ok

And set value of one input using the “set” command:

set part[02].in[01]  0
set part[02].in[01]  1

Or set value of one pin using the “set” command:

#digital
set pin[10]  2

#analog
set apin[20] 2.345

For windows users putty telnet client is a good option.