parent
							
								
									01f71d20bc
								
							
						
					
					
						commit
						5b896b1f0d
					
				@ -0,0 +1,3 @@ | 
				
			||||
\chapter{Hardware Realization} | 
				
			||||
 | 
				
			||||
\todo{TODO} | 
				
			||||
@ -0,0 +1,48 @@ | 
				
			||||
\chapter{Client Software} | 
				
			||||
 | 
				
			||||
With the communication protocol clearly defined in chapters \ref{sec:tinyframe} and \ref{sec:units-overview}, respective \ref{sec:wireless} for the wireless gateway, the implementation of a client software is relatively straightforward. | 
				
			||||
 | 
				
			||||
Two proof-of-concept client libraries have been developed in languages C and Python; the Python library can be accessed from MATLAB scripts thanks to the MATLAB's two-way Python integration \cite{matlabpy}. Controlling GEX from MATLAB may be useful when additional processing is required, e.g. with data from the \gls{ADC}; however, in many cases, an open source alternative native to Python exists that could be used for the same purpose, such as the NumPy and SciPy libraries \cite{numpyscipy}. | 
				
			||||
 | 
				
			||||
\section{General Library Structure} | 
				
			||||
 | 
				
			||||
The structure of a GEX support library is in all cases similar: | 
				
			||||
 | 
				
			||||
\begin{itemize} | 
				
			||||
	\item \textbf{USB or serial port access} | 
				
			||||
	 | 
				
			||||
		This is the only platform-dependent part of the library. Unix-based systems provide a standardized POSIX API to configure the serial port. A raw access to \gls{USB} endpoints is possible using the libUSB C library. Access to the serial port or \gls{USB} from C on MS Windows has not been investigated, but should be possible using proprietary APIs.  | 
				
			||||
		 | 
				
			||||
		Accessing the serial port or \gls{USB} endpoints from Python is more straightforward thanks to the cross platform libraries \textit{PySerial} and \textit{PyUSB}. | 
				
			||||
		 | 
				
			||||
	\item \textbf{TinyFrame}  | 
				
			||||
	 | 
				
			||||
		The \textit{TinyFrame} protocol library can be used directly in desktop C applications, and it has been ported to Python and other languages. | 
				
			||||
		  | 
				
			||||
	\item \textbf{Higher-level GEX logic}  | 
				
			||||
	 | 
				
			||||
		The host side of the communication protocol described in chapter \ref{sec:tinyframe} should be implemented as a part of the library. This includes the reading and writing of configuration files, unit list read-out, command payload building, and asynchronous event parsing. | 
				
			||||
		 | 
				
			||||
		Additional utilities may be defined on top of this basic protocol support for the command API of different GEX units, as described in \ref{sec:units-overview}. Those unit-specific ``drivers'' are available in the provided Python library. | 
				
			||||
\end{itemize} | 
				
			||||
 | 
				
			||||
\section{C Library} | 
				
			||||
 | 
				
			||||
The full C API available to a user program can be found in the library header files. An example of a simple application built with the API is shown below: | 
				
			||||
 | 
				
			||||
\todo[inline]{add the example} | 
				
			||||
 | 
				
			||||
\section{Python Library} | 
				
			||||
 | 
				
			||||
The Python library is more advanced than the C library, as it implements the raw USB access and includes support classes for each unit type.  | 
				
			||||
 | 
				
			||||
\todo[inline]{describe the API and add an example} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
\todo[inline]{Measurement / evaluation examples here...} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
									
										Binary file not shown.
									
								
							
						
					Loading…
					
					
				
		Reference in new issue