Protocol =============================================================================== ## Basic Specification In sending a command, firstly send header that defined as 3 characters. Secondly formatting and send each argument. Before sending a command, client must convert binary-expression to ascii-expression. (If the client sending a command without conversion, PLEN's moving is different from you intended.) No differences the command line made of upper case or lower case. Required baud-rate is **2,000,000**. ## Group of Controller Command ### $AN (Apply Native Value) |Args |Roles |Min (dec)|Max (dec)|Format | |:--------|:-------------------------|:-------:|:-------:|:----------------------| |DEVICE_ID|Set a device id. |0 |23 |0 padding,hex,2 bytes| |VALUE |Set to apply native value.|-2048 |2047 |0 padding,hex,3 bytes| *example*: If you want to apply **1000** to device **10**, send command below. ``` $an0a3e8 ``` ### $AD (Apply Diff Value) |Args |Roles |Min (dec)|Max (dec)|Format | |:--------|:-----------------------|:-------:|:-------:|:----------------------| |DEVICE_ID|Set a device id. |0 |23 |0 padding,hex,2 bytes| |VALUE |Set to apply diff value.|-2048 |2047 |0 padding,hex,3 bytes| *example*: If you want to apply **home value - 100** to device **4**, send command below. ``` $ad04f9c ``` ### $PM (Play a Motion) **Attention!** You could also use "$MP", but this is **deprecated**. |Args|Roles |Min (dec)|Max (dec)|Format | |:---|:----------------|:-------:|:-------:|:----------------------| |SLOT|Set to read slot.|0 |89 |0 padding,hex,2 bytes| *example*: If you want to play slot **4**, send command below. [See also...](http://plen.jp/playground/wiki/specifications/motion_assignment) ``` $pm04 ``` ### $SM (Stop a Motion) **Attention!** You could also use "$MS", but this is **deprecated**. *example*: If you want to stop a motion, send command below. ``` $sm ``` ### $HP (Apply Home Position) *example*: If you want to apply home position, send command below. ``` $hp ``` ## Group of Interpreter Command ### #PU (Push a Function) |Args |Roles |Min (dec)|Max (dec)|Format | |:---------|:------------------|:-------:|:-------:|:----------------------| |SLOT |Set to read slot. |0 |89 |0 padding,hex,2 bytes| |LOOP_COUNT|Set number of play.|0 |255 |0 padding,hex,2 bytes| *example*: If you want to push function that plays slot **10** **three** times, send command below. ``` #pu0a03 ``` ### #PO (Pop a Function) *example*: If you want to pop a function, send command below. ``` #po ``` ### #RI (Reset the Interpreter) *example*: If you want to reset the interpreter, send command below. ``` #ri ``` ## Group of Setter Command ### >MH (Set a Motion Header) |Args |Roles |Min (dec)|Max (dec)|Format | |:-----------|:-----------------------------------------|:-------:|:-------:|:----------------------------| |SLOT |Set to write slot. |0 |89 |0 padding,hex,2 bytes | |NAME |Set a motion name. |--- |--- |White space padding,20 bytes| |USE_LOOP |Use loop function or not. |0 |1 |True (1) or false (0), 1 byte| |LOOP_BEGIN |Set a loop beginning frame. |0 |255 |0 padding,hex,2 bytes | |LOOP_END |Set a loop ending frame. |0 |255 |0 padding,hex,2 bytes | |LOOP_COUNT |Set a loop count. (255 as infinity.) |0 |255 |0 padding,hex,2 bytes | |USE_JUMP |Use jump function or not. |0 |1 |True (1) or false (0), 1 byte| |JUMP_SLOT |Jump to the slot after stopped the motion.|0 |255 |0 padding,hex,2 bytes | |USE_EXTRA |Use extra function or not. (WIP) |0 |1 |True (1) or false (0), 1 byte| |FRAME_LENGTH|Set a frame length. |1 |20 |0 padding,hex,2 bytes | *example*: Please get more details at ">MF" section. ### >MF (Set a Motion Frame) |Args |Roles |Min (dec)|Max (dec)|Format | |:-----------------|:----------------------------|:-------:|:-------:|:----------------------| |SLOT |Set to write slot. |0 |89 |0 padding,hex,2 bytes| |FRAME_ID |Set a frame id. |1 |20 |0 padding,hex,2 bytes| |TRANSITION_TIME_MS|Set a transition time (msec).|32 |65535 |0 padding,hex,4 bytes| |VALUE[DEVICE_ID] |Set to apply value. (*1) |-32768 |32767 |0 padding,hex,4 bytes| **(*1) Sum of devices is 24 and the all are servo motors in current implementation.** *example* Introduce how to install a motion below. |Args |Values| |:-----------------|:-----| |SLOT |0 | |NAME |Test | |USE_LOOP |True | |LOOP_BEGIN |0 | |LOOP_END |1 | |LOOP_COUNT |3 | |USE_JUMP |True | |JUMP_SLOT |50 | |USE_EXTRA |False | |FRAME_LENGTH |2 | |Args |Values| |:-----------------|:-----| |TRANSITION_TIME_MS|100 | |VALUE[EVEN] |0 | |VALUE[ODD] |-1 | Please send command below. (Do not need to insert CR, LF, or CRLF actually.) ``` >MH00 Test 1 00 01 03 1 32 0 02 >MF 00 00 0064 0000ffff0000ffff0000ffff0000ffff 0000ffff0000ffff0000ffff0000ffff 0000ffff0000ffff0000ffff0000ffff >MF 00 01 0064 0000ffff0000ffff0000ffff0000ffff 0000ffff0000ffff0000ffff0000ffff 0000ffff0000ffff0000ffff0000ffff ``` If you are interested deeply, please see also [the implementation on the Control Server](https://github.com/plenprojectcompany/plen-ControlServer/blob/master/control_server/protocol/protocol.py). ### >JS (Reset the Joint Settings) *example*: If you want to reset the joint settings, send command below. ``` >js ``` ### >HO (Set a Home Value) |Args |Roles |Min (dec)|Max (dec)|Format | |:--------|:-----------------------|:-------:|:-------:|:----------------------| |DEVICE_ID|Set a device id. |0 |23 |0 padding,hex,2 bytes| |VALUE |Set to apply home value.|-2048 |2047 |0 padding,hex,3 bytes| *example*: If you want to apply **100** as home value to device **0**, send command below. ``` >ho00064 ``` ### >MA (Set a Max Value) |Args |Roles |Min (dec)|Max (dec)|Format | |:--------|:----------------------|:-------:|:-------:|:----------------------| |DEVICE_ID|Set a device id. |0 |23 |0 padding,hex,2 bytes| |VALUE |Set to apply max value.|-2048 |2047 |0 padding,hex,3 bytes| *example*: If you want to apply **100** as max value to device **0**, send command below. ``` >ma00064 ``` ### >MI (Set a Min Value) |Args |Roles |Min (dec)|Max (dec)|Format | |:--------|:----------------------|:-------:|:-------:|:----------------------| |DEVICE_ID|Set a device id. |0 |23 |0 padding,hex,2 bytes| |VALUE |Set to apply min value.|-2048 |2047 |0 padding,hex,3 bytes| *example*: If you want to apply **-1** as min value to device **10**, send command below. ``` >mi0afff ``` ## Group of Getter Command ### , "max": , "min": , "home": }, ... ] ``` ### , "codename": , "version": } ```