Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 13

Управление устройством через COM (RS-232)

20.12.2018, 19:10. Показов 2551. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста .
Имеется Пк и подключенная к нему плата через rs-232 . На плате уже стоит прошивка , и через Serial inpu/out put monitor , она отзывается на команды и делает замеры .
То есть мне нужно отправить на нее команду test, и вывести полученный результат через программу .

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        
SerialPort mySerialPort = new SerialPort("COM3");
 
        mySerialPort.BaudRate = 115200;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
        mySerialPort.RtsEnable = true;
 
        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
 
        mySerialPort.Open();
Как в данный код , добавить отправку команды к плате ?
И получить ответ с выводом на экран .
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2018, 19:10
Ответы с готовыми решениями:

Управление устройством через GPIB
Здравствуйте, реализовал подключение к генератору сигналов через Lan, но также стоит задача подключения и по Gpib, добавил ссылку на...

Управление устройством через USB
Как мне управлять вот такой вот вещью через usb из своей проги? Вот исходник на Borland C++

Программа для роботы с устройством через RS-232
Доброго всем времени суток. Есть устройство, а точнее сканирующий приёмник, которое может обменивается данными через порт RS-232. Все...

13
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,468
Записей в блоге: 14
20.12.2018, 19:27
Считывание данных с прибора по COM-порту
Скачать, открыть в студии, изучить, запустить, разобраться как переделать под себя.
0
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 13
24.12.2018, 12:42  [ТС]
Я дописал следующий кусок кода.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button1_Click(object sender, EventArgs e)
        {
             SerialPort port = new SerialPort("COM3", 115200, Parity.None, 8, StopBits.One); 
             //Создаем com port с необходимыми нам настройками
             try
             {
                 port.Open();
                 port.Write("cal t0");
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.ToString());
             }
 
        }
Команды на плату отправляет , та отзывается . Проверял через программу терминал . Но никак не могу сделать чтение полученных данных и вывод их в TextBox.
Подскажите пожалуйста.
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
24.12.2018, 12:55
Я тут на днях писал прогу для тестирования ПК (еще не дописал), там реализована работы с COM-портами. Посмотрите, там есть всё, что вам нужно.
Миниатюры
Управление устройством через COM (RS-232)  
Вложения
Тип файла: rar pc_test.rar (3.05 Мб, 36 просмотров)
0
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 13
24.12.2018, 13:50  [ТС]
Достаточно сложный код , для моего понимания . Все же я только начал понимать C# .
Плюс в ходе манипуляций с кодом, программа стала выдавать ошибку,при попытке повторной отправке команды test . И не знаю толком как это поправить .
https://www.cyberforum.ru/atta... 1545648648
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
24.12.2018, 14:40
Вот нужные вам функции
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
 /// <summary>
        /// Запись с com-порта
        /// </summary>
        public static bool write(string port, string text)
        {
            SerialPort com = new System.IO.Ports.SerialPort();
            try
            {
                com.PortName = port; //Имя порта
                com.Open(); //Открыть com
                byte[] data = Encoding.Unicode.GetBytes(text); //Перевести строку в байты
                com.Write(data, 0, data.Length); //Запись данных в порт
                com.Close();
                return true;
            }
            catch { com.Close(); return false; }
        }
 
//Прослушка порта
bool readWork = true; //Флаг для управления прослушкой
//message - тут данные пришедшие на указанный порт
 void com_read(string port)
        {
            SerialPort com = new System.IO.Ports.SerialPort();
            com.PortName = port; //Имя порта
            com.Open();
            while (readWork)
            {
                string Nullstring = ((char)0x00).ToString();
                byte[] data = new byte[1024];
                string message = string.Empty;
                int numberOfBytesRead;
                while (readWork && com.BytesToRead > 0)
                {
                    numberOfBytesRead = com.Read(data, 0, data.Length);
                    string msgPart = Encoding.Unicode.GetString(data, 0, numberOfBytesRead).Replace(Nullstring, String.Empty);
                    message += msgPart;
                }
                Thread.Sleep(64); 
            }
            com.Close();
        }
0
24.12.2018, 15:26

Не по теме:

Цитата Сообщение от Nalik Посмотреть сообщение
C#
1
Thread.Sleep(64);
Гавнокод ....

0
24.12.2018, 15:30

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Гавнокод ....
Напиши как правильно

0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.12.2018, 15:34
Правильно читать доку и примеры:

https://docs.microsoft.com/en-... work-4.7.2
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
24.12.2018, 15:37
Добавлено через 53 секунды
Цитата Сообщение от Avazart Посмотреть сообщение
Правильно читать доку и примеры:
https://docs.microsoft.com/en-... work-4.7.2
Это уже информативней, продолжайте в том же духе
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.12.2018, 15:55
И Вам не хворать )
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
24.12.2018, 16:09
Avazart, кстати говоря если бы вы открыли проект который я приложил, то возможно поняли исходя из комментария, что я просто проводил эксперименты как можно снизить нагрузку на процессор, не претендуя на лучший код по мнению Avazart , проект-то сырой, написан за пару часов в срочном порядке Чтобы не путать ТС комментарий удалил.
C#
1
Thread.Sleep(64); //Посмотреть как будет работать с задержкой
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.12.2018, 16:34
Гавнокод виден не вооруженным взглядом, смысл оправдываться?

Не делайте бесконечные циклы и не нужно будет слипы вставлять.
0
0 / 0 / 0
Регистрация: 14.12.2016
Сообщений: 13
24.12.2018, 16:37  [ТС]
Попробовал дописать проект используя доку .
Но он выдает две ошибки , которые я не понимаю .
textBox1 создан в конструкторе .
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
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;
using System.Threading;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        SerialPort com;
 
        // delegate is used to write to a UI control from a non-UI thread
        private delegate void SetTextDeleg(string text);
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //Проверяем , открыт ли порт перед записью 
            try
            {
                if (!com.IsOpen)
                    com.Open();
 
                com.Write("cal t0");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            com = new SerialPort("COM3", 115200, Parity.None, 8, StopBits.One);
            com.Handshake = Handshake.None;
            com.ReadTimeout = 500;
            com.WriteTimeout = 500;
            com.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            com.Open();
            //com.Close(); //Закрываем порт 
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            //Проверяем , открыт ли порт перед записью 
            try
            {
                if (!com.IsOpen)
                    com.Open();
 
                com.Write("test");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
            }
        }
 
        private static void DataReceivedHandler (object sender,SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
            textBox1.Text = indata;
        }
 
 
    }
}
Миниатюры
Управление устройством через COM (RS-232)  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2018, 16:37
Помогаю со студенческими работами здесь

Управление устройством через USB
Ребят прет увлекаюсь последнее время микроконтроллерами avr хочу собрать схемку чтоб управлять ну к примеру светодиодами через пк ...

Управление блоком питания через RS-232
Добрый день! Появилась необходимость управлять блоком питания через пк для автоматизации процесса. У блока питания имеется только интерфейс...

Управление устройством через КОП (GPIB)
В лаборатории измерительной техники у нас много различных устройств: частотомеры, мультиметры, аттенюаторы и т.д. Но никто не знает как...

Управление устройством на МК ATMega32 через USB
Поиском пользоваться умею, но так ничего путевого не нашел или скорее большую часть прочитанного не понял. Вообщем суть такая: есть мк...

Управление устройством по хттп
Возникла необходимость сваять устройство из нескольких электродвигателей и управлять ими с приложения на планшете, или с сайта. Хочу...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru