예제 #1
0
        public string arduinoUploading()
        {
            isUploading = true;
            arduinoBoardInterface.CloseArduinoConnection();
            arduinoBoardInterface.arduinoDataReceived -= serialData_NewarduinoDataReceived;
            bool isLocked = true;
            if (File.Exists(Path.Combine(batchFilePath, arduinoSourceFile) + ".upload"))
            {
                while (isLocked)
                {
                    try
                    {
                        File.Delete(Path.Combine(batchFilePath, arduinoSourceFile) + ".upload");
                        isLocked = false;
                    }
                    catch { }
                }
                //File.Delete(Path.Combine(batchFilePath, arduinoSourceFile) + ".upload");
            }
            Thread.Sleep(500);
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.FileName = Path.Combine(batchFilePath, arduinoSourceFile) + "_Upload.bat";
            p.StartInfo.CreateNoWindow = true;
            //p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.Start();

            string filename = Path.Combine(batchFilePath, arduinoSourceFile) + ".upload";
            string filename2 = Path.Combine(batchFilePath, arduinoSourceFile) + "_temp.upload";

            isLocked = true;
            while (isLocked)
            {
                try
                {
                    File.Move(filename, filename2);
                    isLocked = false;
                }
                catch { }
            }

            File.Move(filename2, filename);

            Thread.Sleep(1000);

            arduinoBoardInterface = new ArduinoBoard(arduinoPort);
            arduinoBoardInterface.OpenArduinoConnection();
            arduinoBoardInterface.arduinoDataReceived += serialData_NewarduinoDataReceived;
            isUploading = false;

            string str = filterOutputUpload(File.OpenText(filename).ReadToEnd());

            return str;
        }
예제 #2
0
        public void arduinoStart(string loginName, string aPort, string lID, string cID, string userPermission, ref DateTime date)
        {
            lastDevType = "arduino";

            startCheckUserTimer();

            if (clientUserBuffer != null)
            {
                if (clientUserBuffer.FindIndex(p => p.LoginName == loginName) >= 0)
                {
                    clientUserBuffer.RemoveAll(p => p.LoginName == loginName);
                    clientID--;
                }
            }

            clientID++;

            lastLabID = lID;
            lastDevID = cID;

            AddUserToUserLiveLog(loginName);

            Console.WriteLine(string.Format("\n{0} , client : {1} , Name : {2}", DateTime.Now.ToShortTimeString(), clientID, loginName));
            date = DateTime.Now;

            if (clientID == 1)
            {
                arduinoSourceCodeBuffer = new List<bufferTextList>();
                arduinoSerialDataBuffer = new List<bufferTextList>();
                clientUserBuffer = new List<bufferUserList>();
                bufferUserList newuser = new bufferUserList() { LoginName = loginName, Permission = userPermission, DateIn = date, DateStamp = date };
                clientUserBuffer.Add(newuser);

                if (userPermission == "rw")
                {
                    arduinoPort = aPort;
                    arduinoSourceFile = getArduinoTempFile(loginName);
                    batchFilePath = createBatchFiles(arduinoSourceFile, aPort);
                }
                arduinoBoardInterface = new ArduinoBoard(arduinoPort);
                arduinoBoardInterface.OpenArduinoConnection();
                arduinoBoardInterface.arduinoDataReceived += serialData_NewarduinoDataReceived;

                return;
            }

            if (clientUserBuffer.FindIndex(p => p.LoginName == loginName) >= 0)
                clientUserBuffer.RemoveAll(p => p.LoginName == loginName);

            bufferUserList mynewuser = new bufferUserList() { LoginName = loginName, DateIn = date, Permission = userPermission, DateStamp = date };
            clientUserBuffer.Add(mynewuser);
            if (userPermission == "rw")
            {
                arduinoPort = aPort;
                arduinoSourceFile = getArduinoTempFile(loginName);
                batchFilePath = createBatchFiles(arduinoSourceFile, aPort);
            }
        }