Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 14
1

Не отображаются данные датчика из com порта

03.02.2015, 17:19. Показов 744. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, написал программу и столкнулся с непреодолимой, в силу своих знаний, проблемой. У меня есть датчик, он выдает данные в модем, из модема в Nport, из Nporta в switch и в компьютер соответственно.На компьютере установлена программа Nport Administrator. Датчику присвоен свой com порт. Так вот теоретически моя программа должна считать данные с com порта и отобразить их в текст боксе. Но она, при нажатии на кнопку, просто молчит, не отображая в текст боксе ничего. Пробовал программу PCOMM так она отображает все данные. Моя молчит, что не так? Помогите пожалуйста.
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
76
77
78
79
80
81
82
            
public Form1()
            {
                InitializeComponent();
                updatePorts();
            }
            private void updatePorts()
            {
                string[] ports = SerialPort.GetPortNames();
                foreach (string port in ports)
                {
                    comboBox1.Items.Add(port);
                }
            }
            private void connect()      
            {
                bool error = false;
                if (comboBox1.SelectedIndex != -1 & comboBox2.SelectedIndex != -1 & comboBox3.SelectedIndex != -1 & comboBox4.SelectedIndex != -1 & comboBox5.SelectedIndex != -1)
                {
                    serialPort1.PortName = comboBox1.Text;                                              //Вывод значений PortName порта в COMBOBOX1.
                    serialPort1.BaudRate = int.Parse(comboBox2.Text);                                   //Вывод значений BaudRate порта в COMBOBOX2.
                    serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), comboBox3.Text);            //Вывод значений Parity порта в COMBOBOX3.
                    serialPort1.DataBits = Convert.ToInt32(comboBox5.Text);                             //Вывод значений DataBits порта в COMBOBOX5.
                    serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comboBox4.Text);      //Вывод значений StopBits порта в COMBOBOX4.
                    serialPort1.Handshake = (Handshake)Enum.Parse(typeof(Handshake), comboBox8.Text);
                    try
                    {
                        serialPort1.Open();
 
                    }
                    catch (UnauthorizedAccessException) { error = true; } // Это исключение, возникающее в случае запрета доступа операционной системой из-за ошибки ввода и вывода или особого типа ошибки безопасности.
                    catch (System.IO.IOException) { error = true; } // Исключение создаваемое, при возникновении ошибки ввода и вывода.
                    catch (ArgumentException) { error = true; } // Это исключение выбрасывается, если один из передаваемых методу аргументов является недопустимым.
 
                    if (error) MessageBox.Show(this, "Не могу открыть COM порт, он уже используется или неправильно настроен.", "Программа для работы с датчиками", MessageBoxButtons.OK, MessageBoxIcon.Stop);
 
                }
                else
                {
                    MessageBox.Show("Пожалуйста настройте подключение в поле настроек COM порта", "Программа для работы с датчиками", MessageBoxButtons.OK, MessageBoxIcon.Stop);
 
                }
                if (serialPort1.IsOpen)
                {
                
                }
            }
            private void disconnect()   
            {
                serialPort1.Close();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                if (serialPort1.IsOpen)
                {
                    disconnect();
                }
                else
                {
                    connect();
                }
            }
            delegate void SetTextCallback(string text);
            private void textset(string text) 
            {
                if (this.richTextBox1.InvokeRequired)
                {
                    SetTextCallback delg = new SetTextCallback(textset);
                    this.BeginInvoke(delg, new object[] { text });
                }
                else
                {
                    if (button1.Enabled == true)
                    {
                        richTextBox1.AppendText(text);
                    }
                    else
                    {
                        richTextBox3.AppendText(text);
                    }
                }
            }
Тут считываю данные с порта.
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
            private void serialPort1_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
            {
                if (serialPort1.IsOpen)
                {
                    try
                    {
                        if (radioButton1.Checked == true)
                        {
                            string recievedData = serialPort1.ReadExisting();          
                            string mes = recievedData;
                            textset(mes);
                            Rx++;
                            string folder = @"C:\\" + time + " Arxiv dannix.txt";
                            using (StreamWriter file = new StreamWriter(folder, true))
                            {
                                file.Write(mes);
                            }
                        }
                        else
                        {
                            byte[] bytes = new byte[serialPort1.BytesToRead]; 
                            serialPort1.Read(bytes, 0, bytes.Length);
                            string mes2 = BitConverter.ToString(bytes) + " ";
                            textset(mes2);
                            Rx++;
                            string folder = @"C:\\" + time + " Arxiv dannix.txt";
                            using (StreamWriter file = new StreamWriter(folder, true))
                            {
                                file.Write(mes2.ToString());
                            }
                        }
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show("Ошибка!!! Не считываются данные: " + ex);
                    }
                }
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2015, 17:19
Ответы с готовыми решениями:

После генерации данные из этих таблиц отображаются в index и edit но не отображаются в details
Проблема в следующем есть множество таблиц связанных с таблицей Flat после генерации данные из...

Данные с датчика MPU6050
Начал делать проект с использованием MPU6050. Нашёл скетч, считывающий показания с акселерометра...

Принимаемые данные с датчика через Serial port преобразовать в RGB
Всем доброго времени суток! Стоит одна задача. Необходимо, получая строки с датчика цвета,...

Неверные данные с COM порта
Добрый день. Пишу ПО для работы с автовесами. Данные передаются через COM порт. У меня есть код для...

2
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
03.02.2015, 18:14 2
home6, посмотрите эту тему, там есть пример для порта.
https://www.cyberforum.ru/csha... ost7182624
1
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 14
06.02.2015, 13:11  [ТС] 3
Спасибо за ответ, но не помогло. Похоже проблема зарыта в библиотеке System.OI.Ports попробую прописать открытие порта через библиотеки WIN API. Может поможет.
0
06.02.2015, 13:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2015, 13:11
Помогаю со студенческими работами здесь

Не читаются данные с COM-порта
Данные передает, а читать не хочет. В чем может быть проблема? int...

Получить данные с COM порта
Физически ком порт имеет название COM11 Т. к. на данный момент нету оборудования которое работает...

Некорректные данные из com порта
Добрый день. ПК ОС Windows 10 x64. Есть линия на rs 485, на линии 4 устройства, каждое...

Разобрать данные с COM-порта
Привет. Стоит задача проверять данные, приходящие с COM-порта, разбирать блоки побайтно и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru