Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98

Считывать данные с COM-порта, желательно на компоненте slycomm

19.01.2015, 22:18. Показов 1022. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
желательно на компоненте slycomm
я его установил

задача считывать данные с ком порта и выводить их в десятичном или хотя бы каком нибудь виде на экран
уже третий день совокупляюсь с этим поделием, но результат нулевой :фейспалм:

Добавлено через 2 часа 39 минут
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <inifiles.hpp>
 
#include "Umain.h"
#include "UPort.h"
 
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TPMain *PMain;
 
 extern TCommTimeouts lpCommTimeouts;
 extern HANDLE port;
 extern TDCB lpDCB;
 extern TOverlapped Overlapp ;
 extern AnsiString buf;
 extern char buf1[255];
 extern AnsiString COM_name;
 extern int COM_BaudRate;
 extern int COM_ByteSize;
 extern int COM_Parity;
 extern int COM_StopBits;
 extern int COM_RITimeout;
 extern int COM_RTTConstant;
 extern int COM_RTTMultiplier;
 extern int COM_WTTMultiplier;
 extern int COM_WTTConstant;
 
  
 
//---------------------------------------------------------------------------
__fastcall TPMain::TPMain(TComponent* Owner)
        : TForm(Owner)
{
   
}
//---------------------------------------------------------------------------
 
 
void __fastcall TPMain::Open_COM_portClick(TObject *Sender)
{
  if (port != 0)
  {
    CloseHandle(port);
    port = 0;
  }
  Overlapp.hEvent = 0;
  Overlapp.Internal = 0;
  Overlapp.InternalHigh = 0;
  Overlapp.Offset = 0;
  Overlapp.OffsetHigh = 0;
 
  TIniFile* ini;
  ini = new TIniFile(ExtractFilePath(Application->ExeName)+"config.ini");
  COM_name = ini -> ReadString("XK3118T1","COM","COM1");
  COM_BaudRate = ini -> ReadInteger("XK3118T1","BaudRate",9600);
  COM_ByteSize = ini -> ReadInteger("XK3118T1","ByteSize",8);
  COM_Parity = ini -> ReadInteger("XK3118T1","Parity",0);
  COM_StopBits = ini -> ReadInteger("XK3118T1","StopBits",0);
  COM_RITimeout = ini -> ReadInteger("XK3118T1","ReadIntervalTimeout",10);
  COM_RTTConstant = ini -> ReadInteger("XK3118T1","ReadTotalTimeoutConstant",0);
  COM_RTTMultiplier = ini -> ReadInteger("XK3118T1","ReadTotalTimeoutMultiplier",0);
  COM_WTTMultiplier = ini -> ReadInteger("XK3118T1","WriteTotalTimeoutMultiplier",0);
  COM_WTTConstant = ini -> ReadInteger("XK3118T1","WriteTotalTimeoutConstant",500);
  delete ini;
 
 if (port == 0)
        port = CreateFile(COM_name.c_str(),
                         GENERIC_READ | GENERIC_WRITE, 0,
                         NULL, OPEN_EXISTING,
                         FILE_FLAG_OVERLAPPED, 0);
 // ÷òåíèå â lpDCB ïàðàìåòðîâ ïîðòà
 if(! GetCommState(port, &lpDCB))
   {
    AnsiString S = "Íå óäàëîñü îòêðûòü ïîðò " + COM_name;
    ShowMessage(S.c_str());
    exit;
   }
 // íàñòðîéêà ïàðàìåòðîâ â çàïèñè lpDC
 lpDCB.BaudRate = COM_BaudRate;
 lpDCB.ByteSize = COM_ByteSize;
 lpDCB.Parity = COM_Parity;
 lpDCB.StopBits = COM_StopBits;
 lpDCB.fBinary = TRUE;  //âêëþ÷àåì äâîè÷íûé ðåæèì îáìåíà
 lpDCB.fOutxCtsFlow = FALSE;  //âûêëþ÷àåì ðåæèì ñëåæåíèÿ çà ñèãíàëîìCTS
 lpDCB.fOutxDsrFlow = FALSE;  //âûêëþ÷àåì ðåæèì ñëåæåíèÿ çà ñèãíàëîìDSR
 lpDCB.fDtrControl = DTR_CONTROL_DISABLE;  //îòêëþ÷àåì èñïîëüçîâàíèå ëèíèèDTR
 lpDCB.fDsrSensitivity = FALSE;  //îòêëþ÷àåì âîñïðèèì÷èâîñòü äðàéâåðà ê ñîñòîÿíèþ ëèíèèDSR
 lpDCB.fNull = FALSE;  //ðàçðåøèòü ïðè¸ì íóëåâûõ áàéòîâ
 lpDCB.fRtsControl = RTS_CONTROL_DISABLE;  //îòêëþ÷àåì èñïîëüçîâàíèå ëèíèèRTS
 lpDCB.fAbortOnError = FALSE;  //îòêëþ÷àåì îñòàíîâêó âñåõ îïåðàöèé
 // çàïèñü ïàðàìåòðîâ â ïîðò
 if(!SetCommState(port, &lpDCB))
  {
   ShowMessage("Çíà÷åíèÿ ïàðàìåòðîâ íåäîïóñòèìûå\n"
               "Óñòàíîâêà íå ïðîèçâåäåíà");
  }
 try
   {
   lpCommTimeouts.ReadIntervalTimeout = COM_RITimeout;
   lpCommTimeouts.ReadTotalTimeoutMultiplier = COM_RTTConstant;
   lpCommTimeouts.ReadTotalTimeoutConstant = COM_RTTMultiplier;
   lpCommTimeouts.WriteTotalTimeoutMultiplier = COM_WTTMultiplier;
   lpCommTimeouts.WriteTotalTimeoutConstant = COM_WTTConstant;
   }
 catch(EConvertError&)
  {
   ShowMessage("Îøèáî÷íîå çíà÷åíèå âðåìåííîãî èíòåðâàëà.\n Óñòàíîâêà íå ïðîèçâåäåíà");
   exit;
  }
 if (!SetCommTimeouts(port, &lpCommTimeouts))
  {
   ShowMessage("Çíà÷åíèÿ âðåìåííûõ ïàðàìåòðîâ íåäîïóñòèìûå\n Óñòàíîâêà íå ïðîèçâåäåíà");
   exit;
  }
  Label1->Caption = "Ïîðò îòêðûò";
  //óñòàíîâèòü ðàçìåðû î÷åðåäåé ïðè¸ìà è ïåðåäà÷è
 
}
//---------------------------------------------------------------------------
 
void __fastcall TPMain::Read_COMClick(TObject *Sender)
{
// ïðîöåäóðà ÷òåíèÿ
 Memo1->Lines->Add(buf1);
 int n;
 strcpy(buf1, "");
 FlushFileBuffers(port);
// Overlapp.hEvent = CreateEvent(NULL, false, false, NULL);
 ReadFile(port, buf1, 100, &DWORD(n), &Overlapp);
 if (GetLastError() != ERROR_IO_PENDING)
    ShowMessage("Îøèáêà ÷òåíèÿ äàííûõ");
 else
    Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
 
void __fastcall TPMain::Timer1Timer(TObject *Sender)
{
  int n;
  if (GetOverlappedResult(port, &Overlapp, &DWORD(n), false))
  {
    Label1->Caption = "Ïîëó÷åíû/ïåðåäàíû íîâûå äàííûå - " + IntToStr(n) + " áàéò";
    Timer1->Enabled = false;
  }
  else Label1->Caption = "Íîâûõ äàííûõ íåò";
 
}
//---------------------------------------------------------------------------
это подходит но просит какие то библиотеки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2015, 22:18
Ответы с готовыми решениями:

В фоне считывать и выводить данные с COM-порта
Доброго времени суток. Подскажите, как можно реализовать чтение входящие данные с последовательного порта и последующий их вывод в label?...

считывать данные с ком-порта на одной машине и передавать их на другую по сети
Всем приветик! Имеется программа на Delphi, которая постоянно читает данные с com-порта, потом эти данные обрабатывает и выводит на экран...

Как считывать и выводить информацию с COM порта
Есть счётчик, которому в дальнейшем нужно будет отправлять команды Возникла проблема, не могу начать считывать данные с COM порта ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2015, 22:18
Помогаю со студенческими работами здесь

Как принимать по UPD пакеты с определенного порта? Желательно в HEX
C# Как принимать по UPD пакеты с определенного порта? Желательно в HEX.

Считывать данные из CMD
Как можно организовать вывод результата из командной строки к примеру в memo или label в реальном времени? Вот нашел процедуру, но когда...

Считывать данные с entry
Добрый день. Мне поставили такое задание - нужно сделать программу в tkinter чтобы пользователь ввел какое-то рандомное число. Затем...

Как считывать данные из строки?
делаю программу работающую с ip-адресами. ввожу в консоли адрес через точку. нужно перезаписать данные из строки в массив. провожу отбор...

Как правильно считывать данные?
Подскажите, пожалуйста, как правильно считывать данные? public List&lt;int&gt; get_Baggage(int id_bg) { ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru