void OnSysex(object sender, SysexEventArgs args) { /* Console.WriteLine("Sysex messge received (Command: {1}, {0})", BitConverter.ToString(args.Data), args.Command.ToFirmataCommandString()); */ }
protected void OnSysex(object sender, SysexEventArgs Args) { switch (Args.Command) { case Command.REPORT_FIRMWARE: if (Args.Data==null || Args.Data.Length <= 0) break; Queue<byte> buffer = new Queue<byte>(Args.Data); int major = (int) buffer.Dequeue(); int minor = (int) buffer.Dequeue(); string name = Encoding.ASCII.GetString(buffer.ToArray().From7BitAsBytes()); if (FirmwareReportEvent!=null) FirmwareReportEvent.Invoke(this, new FirmwareReportEventArgs(major,minor,name)); break; case Command.SAMPLING_INTERVAL: // int interval = Args.Data.From7Bit()[0]; Console.WriteLine("Sampling interval message received! New Interval: {0}",interval); break; case Command.CAPABILITY_RESPONSE: string report = ""; int pinCount = 0; int digitalPins = 0; int analogPins = 0; int servoPins = 0; int pwmPins = 0; int shiftPins = 0; int i2cPins = 0; for(int a=0; a<Args.Data.Length; a++) { pinCount++; report += "Pin "+pinCount.ToString()+":\r\n"; while(Args.Data[a]!=0x7f) { PinMode mode = (PinMode) Args.Data[a++]; switch(mode) { case PinMode.ANALOG: analogPins++; break; case PinMode.INPUT: case PinMode.OUTPUT: digitalPins++; break; case PinMode.SERVO: servoPins++; break; case PinMode.PWM: pwmPins++; break; case PinMode.I2C: i2cPins++; break; case PinMode.SHIFT: shiftPins++; break; } int resolution = Args.Data[a++]; report += " Mode: "+Util.PinModeToString(mode); report += "("+resolution.ToString()+" bit)\r\n"; } } digitalPins /= 2; report += "Total number of pins: "+pinCount.ToString()+"\r\n"; report += string.Format("{0} digital, {1} analog, {2} servo, {3} pwm and {4} i2c pins\r\n",digitalPins,analogPins,servoPins,pwmPins,i2cPins); Console.WriteLine(report); break; } }