Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 3
1

Контроль присутствия и учета рабочего времени

24.05.2015, 11:05. Показов 4250. Ответов 7
Метки нет (Все метки)

Прошу помощи, давно не писал на C#, но вот пришло время диплома, взял тему контроля присутствия и учета рабочего времени. Имеется в наличии Arduino Uno, RFID reader, 5 карточек и программа на C#. Скетч для Arduino уже написал, а вот с написанием программы на C# загвоздка. Вот пример моего кода, пока что сделал так, чтобы работало по нажатии кнопки, но нужно сделать так, чтобы программа открывалась и ждала, пока придет информация с Arduino через COM port. Догадываюсь что нужно делать через Многопоточность, но с этим никогда не сталкивался. Прошу помощи. Заранее благодарен.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
 
namespace Diplom
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SerialPort serialPort1 = new SerialPort();
 
        private void button1_Click(object sender, EventArgs e)
        {
        n1: label1.Text = "";
            label2.Text = "";
            serialPort1.PortName = "COM3";
            serialPort1.BaudRate = 9600;
            serialPort1.Open();
 
            string input_data = "";
 
            //serialPort1.ReadTimeout = 5000;
            input_data = serialPort1.ReadLine();
            while (input_data != "")
            {
                if (input_data == "101\r")
                {
                    label1.Text = "Antony";
                    serialPort1.Close();
                    break;
                }
                if (input_data == "102\r")
                {
                    label1.Text = "Oleg";
                    break;
                }
                if (input_data == "103\r")
                {
                    label1.Text = "Katrine";
                    break;
                }
                if (input_data == "104\r")
                {
                    label1.Text = "Evelina";
                    break;
                }
                if (input_data == "100\r")
                {
                    label1.Text = "Unknown";
                    break;
                }
                //input_data = serialPort1.ReadLine();
            }
            label2.Text = "Good";
            if (serialPort1.IsOpen) serialPort1.Close();
            //goto n1;
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // При закрытии программы, закрываем порт
            if (serialPort1.IsOpen) serialPort1.Close();
        }
    }
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2015, 11:05
Ответы с готовыми решениями:

Система учета рабочего времени
Дали примерно такое задание. Есть сорок сотрудников создать их годовой табель,который по итогу...

Табель учёта рабочего времени
Добрый вечер. Подскажите пожалуйста в решении вопроса: Пишу табель учёта рабочего времени...

WPF MVVM Как сделать форму учета рабочего времени?
Добрый день! Необходимо сделать форму для учета рабочего времени Как во вложении. Колонками...

Динамический контроль времени анимации
На форме WPF размещены две кнопки Button с именами Anm1 и cmd1. При нажатии на кнопку cmd1 кнопка...

7
Эксперт .NET
5310 / 4106 / 1183
Регистрация: 12.10.2013
Сообщений: 11,913
Записей в блоге: 2
24.05.2015, 16:44 2
Fenix14101991, вот накидал примерный алгоритм, а дальше сами подгоняйте под свои запросы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO.Ports;
using System.Threading;
using System.Threading.Tasks;
 
namespace SPTest {
    class Program {
        static SerialPort port = new SerialPort("COM1", 9600);
        static Dictionary<string, string> persons = 
            new Dictionary<string, string>();
        static void Main(string[] args) {
            FillPersons();
            try {
                port.Open();
                StartListen();
            }
            catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }
        static void FillPersons() {
            persons.Add("101", "Antony");
            persons.Add("102", "Oleg");
            persons.Add("103", "Katrine");
            persons.Add("104", "Evelina");
        }
        static void StartListen() {
            Task.Factory.StartNew(() => {
                while (true) {
                    if (port.BytesToRead != 0) {
                        string key = port.ReadLine();
                        if (!persons.Keys.Contains(key)) {
                            Console.WriteLine("Unknown person!");
                        }
                        else {
                            Console.WriteLine(persons[key]);
                        }
                    }
                    Thread.Sleep(500);
                }
            });
        }
    }
}
1
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 3
24.05.2015, 17:03  [ТС] 3
Спасибо за ответ. Только я работаю в оконном приложении а не консольном. В консоли все это легче организовать, а в форме идет вывод в label данных из БД и вывод фото в PictureBox
0
Эксперт .NET
5310 / 4106 / 1183
Регистрация: 12.10.2013
Сообщений: 11,913
Записей в блоге: 2
24.05.2015, 20:29 4
Цитата Сообщение от Fenix14101991 Посмотреть сообщение
а в форме идет вывод в label данных из БД и вывод фото в PictureBox
И? Вы думаете это усложняет задачу? Как для меня, так никаких сложностей тут нет.
0
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 3
25.05.2015, 17:51  [ТС] 5
А можете привести пример, если не сложно, просто уже мучаюсь достаточно долго с этим проектом
0
Эксперт .NET
5310 / 4106 / 1183
Регистрация: 12.10.2013
Сообщений: 11,913
Записей в блоге: 2
25.05.2015, 18:44 6
Цитата Сообщение от Fenix14101991 Посмотреть сообщение
можете привести пример
Могу. Но только лучше тестовым проектом, боюсь пример будет не очень понятен.
0
Эксперт .NET
5310 / 4106 / 1183
Регистрация: 12.10.2013
Сообщений: 11,913
Записей в блоге: 2
25.05.2015, 18:52 7
Вот пример. Измените имя порта под то, которое у вас используется.
0
Вложения
Тип файла: rar PersonsControl_Demo.rar (41.4 Кб, 126 просмотров)
3 / 2 / 1
Регистрация: 22.10.2014
Сообщений: 71
19.04.2019, 17:03 8
Глядя на это у меня возникает вопрос, я собственно какой ключ вводить, ибо я в консоль ввожу 103, 102, и тд разными вариантами. Но пишет "Unknown person"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2019, 17:03

Табель рабочего времени сотрудника
1. Реализовать класс работник, у класса свойства фамилия (строка), имя (строка), отчество (строка),...

Определение времени окончания рабочего дня
Доброго времени суток! Необходимо определить время окончания рабочего дня(в часах и минутах), если...

Табель учета рабочего времени
Добрый день, уважаемые форумчане! Помогите с решением проблемки. Суть в том, что мне нужно...

Табель учета рабочего времени
Люди у кого есть исходники табеля учета рабочего времени в Делфи плиззззззззз выложите Очень срочно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.