Arduino interface with c#

Does that pick up the Leonardo as a feasible port?

Below something that I would consider

If you want to query from the PC, you can send something like

<id,q,param>
  1. id; the device that is connected to the leonardo that you want to communicate with
  2. q; command to query the device identified by id
  3. param; the field that you want to query from the device, can be a numeric value or a text like temperature. humidity

At the Arduino side, you can parse the command; for guidance, you can look at Robin's Serial Input Basics - updated (example 3).

The reply from the Leonardo can be

<id,r,c,value>
  1. id; the device that is connected to the leonardo that the reply came from
  2. r; rply from the device identified by id
  3. c; reply code; 0 = OK, other value = error
  4. value; value of the requested field; not transmitted or empty on error

If the devices send data on their own to the Leonardo, you can e.g. use a capital 'R' instead of 'r'.

To set a parameter, you can use something like

<id,s,param=value>
  1. id; the device that is connected to the leonardo that you want to communicate with
  2. q; command to query the device identified by id
  3. param; parameter that you want to set on the device, can be a numeric value or a text like temperature. humidity
  4. value; the value to set the parameter to

The reply could be something like

<id,r,c>
  1. id; the device that is connected to the leonardo that the reply came from
  2. r; rply from the device identified by id
  3. c; reply code; 0 = OK, other value = error

Note on id:
You can use id 0 for communication with the Leonardo itself if needed, your devices would be 1, 2