Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 78

Давайте раз и навсегда разберемся с получением данных с COM порта

14.04.2017, 00:40. Показов 6344. Ответов 9

Студворк — интернет-сервис помощи студентам
Я прочитал уже около 20 форумов и блогов и везде все профессора пишут о том как подключиться к COM порту и как отправить на него данные, но вопрос такой: нахрена мне это надо если мне надо снять данные с ком порта а не отправить их? в 90 процентов блогов я замечаю такую вещь что "А для снятие данных с ком порта используйте такую то функцию" и нигде не приведен пример как ее использовать, даже на оф сайте майкрософт отдаленно все написано. В этой теме я приведу кусок кода в качестве примера, этот код подключается к ком порту но косяк в том, что порт уже использует драйвер который снимает вес с весов, вот как мне подключиться к этому уже работающему потоку и забрать себе кусочек данных? Всегда пишет что COM1 закрыт или уже используется. Я такой думаю: ну окай, поставлю эмулятор ком портов или сделаю объединение. Ну ок, сделал объединение ком портов и после этого у меня данные о да синхронизируются между двумя комами как и надо, воаля казалось бы, но нет, в таком случае мой драйвер уже не видит ком порт и для драйвера ком порт закрыт. Что мне сделать что бы снять чертовый вес с весов? весы Mettler Toledo

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
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; // для работы с СОМ портом
using System.IO.Ports;
using System.Threading;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
        public Form1()
        {
            InitializeComponent();
            port.DtrEnable = true;
            port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            if (port.IsOpen == false)
                try
                {
                    port.Open();
                }
                catch (Exception oex)
                {
                    MessageBox.Show(oex.ToString());
                }
        }
        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            this.Invoke(new EventHandler(DoUpdate));
        }
 
 
        private void DoUpdate(object s, EventArgs e)
        {
            Thread.Sleep(30);
            string data = port.ReadExisting() + port.ReadExisting();
            if (data.Trim().Count() < 3)
                MessageBox.Show("data = " + data);
            else
                try
                {
                    richTextBox1.Text = data.Trim().Remove(0, 3);
                }
                catch (Exception f)
                {
                    MessageBox.Show(f.Message.ToString());
                }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2017, 00:40
Ответы с готовыми решениями:

Давайте разберемся с датами!
Для тех, кто знает как лучше(эффективнее) форматировать дату в запросах. Можно в разных вариациях, как для справочника всем в помощь. ...

Давайте разберемся, почему на загружается ХР
Добрый день! Возможно написал не в том разделе - прошу переместить. Попробую описать ситуацию. Имелось два компьютера: 1. (Основной)...

Windows 8: Error code: 0x0000005d Давайте разберемся!
При старте, Windows 8 и WinPE 4.х, тупо проверяют ЦП/МП на кошерность:). Если всё Гуд, ОС стартует, чихая на BIOS и BCD(проверено). Если же...

9
Эксперт .NET
 Аватар для Rius
13030 / 7595 / 1662
Регистрация: 25.05.2015
Сообщений: 23,108
Записей в блоге: 14
14.04.2017, 07:20
Напрямую подключиться нельзя? Обязательно прослушивать трафик чужой программы?
В этом случае нужен некий софт, который сделал бы ответвление данных на виртуальный порт. Либо нужно самостоятельно писать сниффер типа hhd serial port monitor.
Информацию об этом вы никогда не найдёте в типичных статьях типа этих:
Цитата Сообщение от dimaignatuhin Посмотреть сообщение
Я прочитал уже около 20 форумов и блогов и везде все профессора пишут о том как подключиться к COM порту и как отправить на него данные, но вопрос такой: нахрена мне это надо если мне надо снять данные с ком порта а не отправить их?
Добавлено через 3 минуты
Есть очень простой, но аппаратный способ: взять адаптер USB-RS232, подключить его землю и RX к нужным проводникам между приборами, и открыть этот порт как обычно.
0
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 78
14.04.2017, 07:21  [ТС]
Rius, да и черт с этой внешней программой, у меня тупо никак не идут данные с ком порта
0
Эксперт .NET
 Аватар для Rius
13030 / 7595 / 1662
Регистрация: 25.05.2015
Сообщений: 23,108
Записей в блоге: 14
14.04.2017, 07:23
Возможно, весы отправляют данные только по запросу. Множество приборов так работает.
Потом, параметры порта должны быть точно настроены.
0
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 78
14.04.2017, 07:36  [ТС]
Rius, ты знаешь действительно корректные примеры?
0
Эксперт .NET
 Аватар для Rius
13030 / 7595 / 1662
Регистрация: 25.05.2015
Сообщений: 23,108
Записей в блоге: 14
14.04.2017, 07:47
Примеры чего именно?
В теме подняты вопросы:
  • отсутствия освещения в интернете вопроса о приёме данных из SerialPort;
  • правильного приёма данных;
  • прослушивания чужого трафика (сниффера);
  • обмена с весами Mettler Toledo;
  • почему порт закрыт;
  • почему данные не принимаются.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
14.04.2017, 08:52
Цитата Сообщение от dimaignatuhin Посмотреть сообщение
Rius, ты знаешь действительно корректные примеры?
90% приборов отдают данные по запросу сверху. Запрос должен быть корректен по правилам используемого протокола обмена. Настройки портов на приборе и ПК должны совпадать. Иногда необходимо подключение управляющих линий порта. В 99% случаем пакет запроса сопровождается контрольной суммой, алгоритмов расчёта которой - десятки если не сотни.
А так всё просто...
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
14.04.2017, 10:39
aquaMakc, насколько можно судить из первого попавшегося дока по весам данного производителя, протокол ASCII-шный, без контрольной суммы, пакеты заканчиваются по CR LF, весы в режиме slave, настройки порта: 9600 7E1

Добавлено через 1 минуту
Автору рекомендую сперва поиграться с этими весами через гипертерминал, а потом уже писать приложение. Благо протокол простейший (как потестить весы через терминал описано здесь)
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
14.04.2017, 10:40
Exerion, ) ну яж говорю 99%. Да и сужу в основном о промышленном оборудовании. Никакие стандарты не действуют, каждый волен клепать что угодно.
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
14.04.2017, 10:44
aquaMakc, это точно. Особенно гемморно бывает с производителями, которые хотят "защитить" своё чудо посредством извращения протокола - то баудрейт не стандартный, то биты данных, то в самом протоколе каждый второй/третий байт - соль, то контрольная сумма воткнута в середину данных, для которых сама эта сумма вычисляется, и прочие извращения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.04.2017, 10:44
Помогаю со студенческими работами здесь

Что случилось с HDD? Профи, все сюда! Давайте разберёмся
Приятель принес ноут, сказал: &quot;Тормозит&quot;! Правда, ну он очень долго запускался, посмотрел, что там много не нужных программ! Вобщем не...

Кодировка раз и навсегда
Здравствуйте. В общем проблема такая. Есть html файл с формой, данные которой отсылаются на обработчик.php. Этот php файл обрабатывает...

Как загрузить картинку раз. И навсегда
Для того чтобы допустим загрузить картинку на форму, нужно указать путь к картинке, и потом если картинку переместить в другое место на...

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

Можно ли избавиться раз и навсегда от рефспама Google Analytics?
Каждый день в аналитике всплывают &quot;левые&quot; сайты типа semalt.com semalt.semalt.com buttons-for-website.com blackhatworth.com ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru