private ArduinoSession CreateSerialSession(IDataConnection connection, int timeout = -1) { var session = new ArduinoSession(connection); session.TimeOut = timeout; session.MessageReceived += (o, e) => { Assert.Fail("MessageReceived event triggered"); }; session.EvintFirmata().AnalogStateReceived += (o, e) => { Assert.Fail("AnalogStateReceived event triggered"); }; session.EvintFirmata().DigitalStateReceived += (o, e) => { Assert.Fail("DigitalStateReceived event triggered"); }; session.EvintI2C().I2CReplyReceived += (o, e) => { Assert.Fail("I2CReplyReceived event triggered"); }; session.EvintString().StringReceived += (o, e) => { Console.WriteLine("Received: '{0}'", e.Text); }; return(session); }
/// <summary> /// Creates an observable object tracking <see cref="AnalogState" /> messages for a specific channel. /// </summary> /// <param name="channel">The channel to track</param> /// <returns> /// An <see cref="IObservable{AnalogState}" /> interface /// </returns> public static IObservable <AnalogState> CreateAnalogStateMonitor(this ArduinoSession session, int channel) { if (channel < 0 || channel > 15) { throw new ArgumentOutOfRangeException(nameof(channel), Messages.ArgumentEx_ChannelRange0_15); } return(new AnalogStateTracker(session.EvintFirmata(), channel)); }
public static IObservable <DigitalPinState> CreateDigitalStateChangeMonitor(this ArduinoSession session, int port) { if (port < 0 || port > 15) { throw new ArgumentOutOfRangeException(nameof(port), Messages.ArgumentEx_PortRange0_15); } return(new DigitalStateChangeTracker(session.EvintFirmata(), port)); }
private const byte SYSEX_REALTIME = 0X7F; // MIDI Reserved for realtime messages ///// <summary> ///// Event, raised for every SysEx (0xF0) and ProtocolVersion (0xF9) message not handled by an <see cref="IFirmataProtocol"/>'s Get method. ///// </summary> ///// <remarks> ///// When e.g. method <see cref="RequestBoardCapability"/> is invoked, the party system's response message raises this event. ///// However, when method <see cref="GetBoardCapability"/> or <see cref="GetBoardCapabilityAsync"/> is invoked, the response is returned ///// to the respective method and event <see cref="MessageReceived"/> is not raised. ///// ///// This event is not raised for either analog or digital I/O messages. ///// </remarks> //event MessageReceivedHandler MessageReceived; ///// <summary> ///// Event, raised when an analog state message (command 0xE0) is received. ///// </summary> ///// <remarks> ///// The frequency at which analog state messages are being sent by the party system can be set with method <see cref="SetSamplingInterval"/>. ///// </remarks> //event AnalogStateReceivedHandler AnalogStateReceived; ///// <summary> ///// Event, raised when a digital I/O message (command 0x90) is received. ///// </summary> ///// <remarks> ///// Please note that the StandardFirmata implementation for Arduino only sends updates of digital port states if necessary. ///// When none of a port's digital input pins have changed state since a previous polling cycle, no Firmata.sendDigitalPort message ///// is sent. ///// <para> ///// Also, calling method <see cref="SetDigitalReportMode"/> does not guarantee this event will receive a (first) Firmata.sendDigitalPort message. ///// Use method <see cref="GetPinState"/> or <see cref="GetPinStateAsync"/> inquiring the current pin states. ///// </para> ///// </remarks> //event DigitalStateReceivedHandler DigitalStateReceived; /// <summary> /// Creates an observable object tracking <see cref="AnalogState"/> messages. /// </summary> /// <returns>An <see cref="IObservable{AnalogState}"/> interface</returns> public static IObservable <AnalogState> CreateAnalogStateMonitor(this ArduinoSession session) { return(new AnalogStateTracker(session.EvintFirmata())); }
public static IObservable <DigitalPinState> CreateDigitalStateChangeMonitor(this ArduinoSession session) { return(new DigitalStateChangeTracker(session.EvintFirmata())); }