Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 09.09.2015
Сообщений: 108

Прием данных по com порту

16.08.2016, 20:02. Показов 4943. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подключил прибор по rs232. Провода 2, 4, и 5. Нужно принять данные с него. Вот код который я раздобыл:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;
 
namespace console.p215
{
    class Program
    {
        static void Main(string[] args)
        { string[] names = SerialPort.GetPortNames();
            Console.WriteLine("Serial ports:");
            foreach (string name in names)
                Console.WriteLine(name);
            Console.Write("Choose one:");
            SerialPort p = new SerialPort("COM1", 
                                      1200, 
                                        Parity.None,
                                        8, StopBits.One
                                        );
            p.Handshake = Handshake.None;
            p.DtrEnable = true;
            p.RtsEnable = false;
            
            p.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
            p.Open();
            
            
            string line;
            do
            {
                line = Console.ReadLine();
                p.Write(line);
                
               
                
                
               
            } while (line != "quit");
            p.Close();
        }
 
        static void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(500);
            string str=(sender as SerialPort).ReadExisting();
            char[] ch = str.ToCharArray();
            foreach (char ch2 in ch)
                Console.Write((int)(ch2)+" ");
            Console.WriteLine();
            Console.WriteLine(str);
           
        }
 
        
    }
}
Выходят такие данные: 0 1 2 3 4 63 63 0 0
0 64
Есть программа от прибора(заводская) она получила: -0.3mV
Промониторил порт утилитой выводит это: 000 001 002 004 206 204 196 000 000 64(десятичные)
Как считать цифры с прибора а не абра-кадабру?

Добавлено через 1 минуту
данные с прибора считывает одни и те же:-03mV
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2016, 20:02
Ответы с готовыми решениями:

Передача и прием данных по виртуальному COM порту
Доброе время ))) вот собрал девайс на основе FT232BL Вот отсылаю данные: private SerialPort port; //...

Прием и передача данных на одном порту
Всем Доброго времени суток. Где то слышал что возможно так что бы данные отправлялись и принимались на одном и том же порту. Что то...

Прием данных по СОМ-порту. Проблемы с массивом принятых байтов
Микроконтроллерное устройство каждую секунду на скорости 38400 шлет пакет, состоящий из признака начала пакета(*),Х,Х....Х,(#)-конец...

54
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
28.09.2016, 03:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 269 Посмотреть сообщение
Ответили что ничего нет про протокол обмена
Всё правильно. Я бы так же поступил, если бы хотел, чтобы моё оборудование не покупали или имели геморрой при его использовании.
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
28.09.2016, 08:27
Да, протокол надо обязательно отдавать. Пользователь должен иметь возможность задействовать все функции оборудования, чтобы его перепрограммировать, привести в нерабочее состояние и предъявить за это претензии производителю.
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
28.09.2016, 09:19
Rius, мне кажется, что протокол для интеграции с внешним оборудованием - не есть тайна за семью печатями (по хорошему). Это какие-то внутренние механизмы оборудования нужно защищать от пользователя.
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
28.09.2016, 09:29
Этот протокол мог быть реализован вовсе не для интеграции с внешним, сторонним оборудованием.
Протокол, или хотя бы часть его, может использоваться для настройки на заводе-изготовителе. При доступе к этому, пользователь может наломать дров.
Например, поменять коэффициенты в счётчике раздачи топлива, в результате чего вместо списания денег со счёта покупателя, ему наоборот будет зачисление. Или же отображаемое значение закачанного топлива будет отличаться в меньшую сторону от реального, что приведёт к утечке топлива, взрыву на заправке и человеческим жертвам.
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
28.09.2016, 09:49
Rius, ну так никто и не требует "полную спецификацию на всё, что только можно". Пользовательского варианта документации хватило бы за глаза (как снимать основные показания).
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
28.09.2016, 09:55
Usaga, да, это очевидное решение.
Но потом при регистрации в каких-нибудь органах может всплыть требование об отсутствии незадокументированных функций/команд.
Или пользовательская часть неотделима от полной. Просто потому, что там всего две команды.
Всё может быть плохо, короче. Если изначально на это не рассчитано, то потом по частям информацию выдавать может быть чревато.
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
28.09.2016, 09:58
Rius, мне так кажется, что всё упирается в простое "впдалу делать нормальную документацию\протокол". Незадокументированный функционал можно было бы реализовать с помощью отдельного интерфейса, распаянного на плате, для отладочно-наладочных целей. Но производителю виднее
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
28.09.2016, 10:00
Usaga, сие справедливо, если заранее, ещё на этапе разработки, предполагалась выдача этой информации пользователям. Этого же может вовсе и не предполагаться.
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
28.09.2016, 10:02
Rius, полностью согласен
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
28.09.2016, 13:08
Цитата Сообщение от Rius Посмотреть сообщение
Этого же может вовсе и не предполагаться.
Счётчик - это всегда только часть какой-то общей системы. Скрывать протокол имеет смысл, только если производитель может предложить систему целиком, при этом она настолько уникальна, что можно говорить о монополии. В любом другом случае отказ в предоставлении спецификации протокола - самодурство.
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
28.09.2016, 13:12
У того счётчика система есть. И протокол тоже ТС где-то достал.
В данном случае , как упомянуто автором, есть готовое стабильное ПО. Просто ему там чего-то не хватает.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
28.09.2016, 13:19
Цитата Сообщение от Rius Посмотреть сообщение
У того счётчика система есть.
Прибор + утилита опроса это не система, даже для бытового применения.
Даже для бытовых счётчиков газа/тепла/электричества/воды сейчас разрабатываются программно-аппаратные комплексы телеметрии с единым центром сбора, хранения и анализа показаний приборов.
Если же говорить о промышленных системах то там такие системы работают уже десятки лет. В данный момент зоопарк систем приводят к единому стандарту и объединяют в единое информационное пространство.
В современных реалиях производители продающие железку + вырвиглазную утилиту опроса без возможности стыковки с внешними системами - не жильцы.
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
28.09.2016, 13:27
aquaMakc, то, что сейчас, не имеет никакого значения, этот прибор выпускается уже лет 13. Никто его сейчас приводить ни в какой единый стандарт не будет. И даже если будет, то выпустят новую модель с учётом пожеланий.
0
1 / 1 / 0
Регистрация: 09.09.2015
Сообщений: 108
29.09.2016, 13:13  [ТС]
Когда данные снимаете, меняйте входные сигналы. От кучи одинаковых пакетов никакого толку.
прибор(программа заводская):
28.9.2016 10:50:52 19.53 10.72 pH
28.9.2016 10:51:3 19.53 10.46 pH
28.9.2016 10:51:13 19.53 10.43 pH
28.9.2016 10:51:20 19.53 10.71 pH
28.9.2016 10:51:32 19.53 10.42 pH
28.9.2016 10:51:43 19.53 10.68 pH
28.9.2016 10:51:53 19.53 10.86 pH
28.9.2016 10:52:0 19.53 10.55 pH

программа(слушает порт):

[28/09/2016 10:50:49] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:50:50] Read data
00 01 02 03 7b ab 44 40 9c 45 ....{«D@њE
[28/09/2016 10:50:53] - Close port COM1

[28/09/2016 10:50:59] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:00] Read data
00 01 02 03 6f a7 44 40 9c 45 ....o§D@њE
[28/09/2016 10:51:03] - Close port COM1

[28/09/2016 10:51:09] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:11] Read data
00 01 02 03 d3 a6 44 40 9c 45 ....У¦D@њE
[28/09/2016 10:51:13] - Close port COM1

[28/09/2016 10:51:19] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:19] Read data
00 01 02 03 4a ab 44 40 9c 45 ....J«D@њE
[28/09/2016 10:51:20] - Close port COM1

[28/09/2016 10:51:29] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:30] Read data
00 01 02 03 b7 a6 44 40 9c 45 ....·¦D@њE
[28/09/2016 10:51:33] - Close port COM1

[28/09/2016 10:51:39] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:40] Read data
00 01 02 03 e7 aa 44 40 9c 45 ....зЄD@њE
[28/09/2016 10:51:43] - Close port COM1

[28/09/2016 10:51:49] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:51] Read data
00 01 02 03 cc ad 44 40 9c 45 ....М*D@њE
[28/09/2016 10:51:53] - Close port COM1

[28/09/2016 10:51:59] - Open port COM1 (C:\Program Files\DARecive\DARecive.exe)

[28/09/2016 10:51:59] Read data
00 01 02 03 d6 a8 44 40 9c 45 ....ЦЁD@њE
[28/09/2016 10:52:00] - Close port COM1
0
Эксперт .NET
 Аватар для Rius
13854 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
29.09.2016, 18:19
269, посмотрите формулы во вложении.
Вложения
Тип файла: zip p215m.zip (12.4 Кб, 9 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2016, 18:19

Прием данных клиентом TcpClient, данных попадается некорректные значения, почему?
Есть сервер на си, который шлет ответ клиенту, вот тестовый кусок: struct recv_packet { int magic; int code; int length; ...

Получение XML данных по TCP порту
Здравствуйте, Пишу приложение, которое будет получать XML-данные по TCP, а затем писать эти данные в базу данных. Нашёл в интернете...

Передача данных по COM-порту. Подсчет контрольной суммы
Здравствуйте! помогите перевести с языка ПАСКАЛЬ на C# Способ подсчета контрольной суммы. 1. Загружаем 16-битную беззнаковую...

Arduino. Прием данных по последовательному порту
Здравствуйте, подскажите пожалуйста, нашел в инете код приема 2-ух символов, но теперь по одному символу коряво принимает. Почему? Заранее...

Прием строки в Arduino Leonardo по последовательному порту
Здравствуйте, помогите пожалуйста, как передать в микроконтроллер Arduino Leonardo строку? Я пишу программу которая передает в COM...


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

Или воспользуйтесь поиском по форуму:
55
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru