コード例 #1
0
ファイル: SketchList.cs プロジェクト: hackup/TapecartFlasher
        public void ReadSketchList()
        {
            string exePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            //string exePath = Application.StartupPath;

            SketchVersions = new List <SketchVersion>();

            DirectoryInfo dirInfo = new DirectoryInfo(exePath);

            FileInfo[] files = dirInfo.GetFiles("TapecartFlasher*.hex");

            foreach (FileInfo file in files)
            {
                string[] list = Path.GetFileNameWithoutExtension(file.Name).Split('_');
                if (list.Length != 5)
                {
                    continue;
                }

                SketchVersion.ArduinoType arduinoType = SketchVersion.ArduinoNameToType(list[1]);
                if (arduinoType == SketchVersion.ArduinoType.None)
                {
                    continue;                     // invalid arduino type
                }
                int majorVersion;
                if (!int.TryParse(list[2], out majorVersion))
                {
                    continue;                     // invalid major version
                }
                int minorVersion;
                if (!int.TryParse(list[3], out minorVersion))
                {
                    continue;                     // invalid major version
                }
                int apiVersion;
                if (!int.TryParse(list[4], out apiVersion))
                {
                    continue;                     // invalid major version
                }
                SketchVersion version = new SketchVersion(majorVersion, minorVersion, apiVersion, arduinoType);
                version.Filename = file.Name;

                SketchVersions.Add(version);

                SketchVersions.Sort(delegate(SketchVersion x, SketchVersion y)
                {
                    return(x.SortCompareTo(y));
                });
            }
        }
コード例 #2
0
        public static ArduinoModel?ArduinoTypeToModel(SketchVersion.ArduinoType arduinoType)
        {
            switch (arduinoType)
            {
            case SketchVersion.ArduinoType.ARDUINO_UNO:
                return(ArduinoModel.UnoR3);

            case SketchVersion.ArduinoType.ARDUINO_NANO:
                return(ArduinoModel.NanoR3);

            case SketchVersion.ArduinoType.ARDUINO_MEGA2560:
                return(ArduinoModel.Mega2560);

            case SketchVersion.ArduinoType.ARDUINO_PROMICRO:
                return(ArduinoModel.Micro);
            }
            return(null);
        }
コード例 #3
0
        public bool GetArduinoSketchVersion(out int majorVersion, out int minorVersion, out int apiVersion, out SketchVersion.ArduinoType arduinoType)
        {
            majorVersion = 0;
            minorVersion = 0;
            apiVersion   = 0;
            arduinoType  = SketchVersion.ArduinoType.None;

            if (_serialPort == null)
            {
                return(false);
            }

            byte[] recvData;
            _serialPort.ReadTimeout = 15000;             // 15 seconds
            int result = SendCmd(CmdGroups.CMDGROUP_ARDUINO, (byte)ArduinoCmds.ARDUINOCMD_VERSION, null, 4, out recvData);

            _serialPort.ReadTimeout = CurrentTimeout;

            if (result != 0)
            {
                return(false);
            }

            minorVersion = recvData[0];
            majorVersion = recvData[1];
            apiVersion   = recvData[2];
            arduinoType  = (SketchVersion.ArduinoType)recvData[3];

            return(true);
        }