gs_lesson3 Example¶
Python Version¶
Model Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # Import classes for input/output channels
from cis_interface.interface.CisInterface import CisInput, CisOutput
# Initialize input/output channels
in_channel = CisInput('input')
out_channel = CisOutput('output')
# Loop until there is no longer input or the queues are closed
while True:
# Receive input from input channel
# If there is an error, the flag will be False
flag, msg = in_channel.recv()
if not flag:
print("No more input.")
break
# Print received message
print(msg)
# Send output to output channel
# If there is an error, the flag will be False
flag = out_channel.send(msg)
if not flag:
print("Error sending output.")
break
|
Model YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | models:
- name: python_model
language: python # Runs the python script using default Python
args: ./src/gs_lesson3.py
inputs:
- input
outputs:
- output
connections:
- input_file: ./Input/input.txt
output: input
- input: output
output: ./output.txt
|
Matlab Version¶
Model Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | % Initialize input/output channels
in_channel = CisInterface('CisInput', 'input');
out_channel = CisInterface('CisOutput', 'output');
flag = true;
% Loop until there is no longer input or the queues are closed
while flag
% Receive input from input channel
% If there is an error, the flag will be False.
[flag, msg] = in_channel.recv();
if (~flag)
disp('No more input.');
break
end
% Print received message
fprintf('%s\n', char(msg));
% Send output to output channel
% If there is an error, the flag will be False
flag = out_channel.send(msg);
if (~flag)
disp('Error sending output.');
break
end
end
|
Model YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | models:
- name: matlab_model
language: matlab # Runs the script using a Matlab engine
args: ./src/gs_lesson3.m
inputs:
- input
outputs:
- output
connections:
- input_file: ./Input/input.txt
output: input
- input: output
output: ./output.txt
|
C Version¶
Model Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h>
// Include methods for input/output channels
#include "CisInterface.h"
#define MYBUFSIZ 1000
int main(int argc, char *argv[]) {
// Initialize input/output channels
cisInput_t in_channel = cisInput("input");
cisOutput_t out_channel = cisOutput("output");
// Declare resulting variables and create buffer for received message
int flag = 1;
char buf[MYBUFSIZ];
// Loop until there is no longer input or the queues are closed
while (flag >= 0) {
// Receive input from input channel
// If there is an error or the queue is closed, the flag will be negative
// Otherwise, it is the size of the received message
flag = cis_recv(in_channel, buf, MYBUFSIZ);
if (flag < 0) {
printf("No more input.\n");
break;
}
// Print received message
printf("%s\n", buf);
// Send output to output channel
// If there is an error, the flag will be negative
flag = cis_send(out_channel, buf, flag);
if (flag < 0) {
printf("Error sending output.\n");
break;
}
}
return 0;
}
|
Model YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | models:
- name: c_model
language: c # Compiles the C code with necessary cis_interface libraries
args: ./src/gs_lesson3.c
inputs:
- input
outputs:
- output
connections:
- input_file: ./Input/input.txt
output: input
- input: output
output: ./output.txt
|
C++ Version¶
Model Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <iostream>
// Include methods for input/output channels
#include "CisInterface.hpp"
#define MYBUFSIZ 1000
int main(int argc, char *argv[]) {
// Initialize input/output channels
CisInput in_channel("input");
CisOutput out_channel("output");
// Declare resulting variables and create buffer for received message
int flag = 1;
char buf[MYBUFSIZ];
// Loop until there is no longer input or the queues are closed
while (flag >= 0) {
// Receive input from input channel
// If there is an error or the queue is closed, the flag will be negative
// Otherwise, it is the size of the received message
flag = in_channel.recv(buf, MYBUFSIZ);
if (flag < 0) {
std::cout << "No more input." << std::endl;
break;
}
// Print received message
std::cout << buf << std::endl;
// Send output to output channel
// If there is an error, the flag will be negative
flag = out_channel.send(buf, flag);
if (flag < 0) {
std::cout << "Error sending output." << std::endl;
break;
}
}
return 0;
}
|
Model YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | models:
- name: cpp_model
language: c++ # Compiles the C code with necessary cis_interface libraries
args: ./src/gs_lesson3.cpp
inputs:
- input
outputs:
- output
connections:
- input_file: ./Input/input.txt
output: input
- input: output
output: ./output.txt
|