Last modified by Eric Nantel on 2022/11/01 07:26

Show last authors
1 (% style="width:710px" %)
2 |(((
3 **Serial Protocols**
4 )))
5 |(((
6 Many hardware devices communication with the computer using a serial protocol. Some are simple ASCII-based protocols, but others can be more complex binary ones that require checksums. No matter, both can easily be made in FlowBotics.
7
8 Let's use the Lynxmotion SSC-32 servo controller board as an example of an ASCII protocol. If you open any of the Lynxmotion projects, you will find the "//LM SC-32 + Comport//" module inside a few levels of schematics that handles all the protocol communications and COM port management.
9
10 This module does a few things. The left portion pre-processes the virtual robot's data to get them ready to be encoded into the protocol for transfer to the SSC-32 board. The right portion takes the protocol data received from the SSC-32 board, and extracts various state and input pin signals.
11
12 The two main workhorses of the schematic is the //"LM SC-32 Engine//" and "//Comport//" modules:
13 )))
14 |(% style="text-align:center" %)[[image:lynxmotion-ssc-32-protocol-engine.png||height="241" width="500"]]
15 |The engine module has all the protocol encoding logic, so let's take a look at that.
16 |(((
17 **Using Ruby**
18 )))
19 |In this case, we implemented the protocol using a Ruby module, but it could also be implemented using the FlowBotics graphical language.
20 |(% style="text-align:center" %)[[image:lynxmotion-ssc-32-protocol-ruby.png||width="500"]]
21 |(((
22 The code is pretty simple:
23
24 1. Wait until new "//data//" signals arrive.
25 1*. Note: The "//i//" variable has the number of the input that changed. In this case "//data//" is input "//0//".
26 1. Loop through all the positions in the data array, and make the servo position string.
27 1. Output the servo string, and the "//outputs//" string.
28 1. Every other time, also output the input poll string.
29 1. Finally, output the "//Q//" query string.
30
31 The four output strings are output as four different signals because there's some additional logic (offscreen) that treats them a bit differently. If you have any questions about how this works, ask us in [[our forum>>https://community.robotshop.com/forum/c/lynxmotion/13]] and we'll be glad to explain it to you!
32
33 For documentation of the Ruby language, we recommend [[the Ruby Doc site>>url:https://www.ruby-doc.org/core-1.9.1/]].
34 )))
35 |[[<< Back to Developer Zone>>doc:ses-software.flowbotics.developers.WebHome]]
36
37
Copyright RobotShop 2018