コード例 #1
0
ファイル: EncoderTests.cs プロジェクト: jens-a-e/libFirmataCS
 void OnSysex(object sender, SysexEventArgs args)
 {
     /*
       Console.WriteLine("Sysex messge received (Command: {1}, {0})",
                 BitConverter.ToString(args.Data),
                 args.Command.ToFirmataCommandString());
                 */
 }
コード例 #2
0
ファイル: Decoder.cs プロジェクト: jens-a-e/libFirmataCS
        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;
              }
        }