private void GetSysexMessage(SysexCommand command, byte[] sndMessage) { ClearSysemMessage(); //返信専用コマンドは受信待ちせずに終了する。 switch (command) { case SysexCommand.I2C_REPLY: case SysexCommand.PIN_STATE_RESPONSE: case SysexCommand.CAPABILITY_RESPONSE: case SysexCommand.ANALOG_MAPPING_RESPONSE: return; default: break; } firmata.sendSysex(command, sndMessage.AsBuffer()); Task.Delay(100); //タイムアウトを監視しながら受信をまつ DateTime startTime = DateTime.Now; while (rcvCmd == -1) { if ((DateTime.Now - startTime).Milliseconds > 100) { GetSysexMessage(command, sndMessage); } } }
private void NeoPixelRegister(byte pin, byte count) { byte[] message = new byte[2]; message[0] = (byte)(pin); message[1] = (byte)(count); firmata.sendSysex(NEOPIXEL_REGISTER, message.AsBuffer()); }