ModuleRead()
Description
Reads values from a Bpod module, via its serial connection to the state machine. (i.e. Module --> State Machine --> MATLAB)
IMPORTANT: The state machine must be manually configured to relay bytes from the module to the USB port, in order for ModuleRead() to work. Set the current relayed module with: BpodSystem.StartModuleRelay(ModuleName). When you are done exchanging data with the module, you must call BpodSystem.StopModuleRelay() before using the state machine. If you do not call StopModuleRelay(), bytes relayed from the module may interfere with expected USB transmissions. Example code below shows proper usage.
Syntax
Values = ModuleRead(ModuleName, nValues, [Datatype])
Parameters
ModuleName: The module's name (a character array). See BpodSystem.Modules for the names of connected modules.
Values: Value(s) to send to the module. By default, values are 'uint8'.
(optional) DataType: An integer data type. Supported types are:
uint8
uint16
uin32
int8
int16
int32
Returns
Values: An array of values returned from the module
Examples
% Example1: Sends the character array "Hi there" via the state machine, to EchoModule1. Then, read the echo module's reply
BpodSystem.StartModuleRelay('EchoModule1'); % Relay bytes from EchoModule1
ModuleWrite('EchoModule1', 'Hi there'); % Write character string "Hi there" to EchoModule1
Reply = ModuleRead('EchoModule1, 8); % Read 8 bytes (the length of "Hi there") from EchoModule1
BpodSystem.StopModuleRelay; % Cancel the relay from EchoModule1
% Example2: Sends two 32-bit integers to SillyModule2. Reads SillyModule's reply - four 16-bit unsigned integers.
BpodSystem.StartModuleRelay('SillyModule2');
ModuleWrite('SillyModule2', [102483 297438], 'uint32');
Reply = ModuleRead('SillyModule2, 4, 'uint16');
BpodSystem.StopModuleRelay;