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

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

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

Author24 — интернет-сервис помощи студентам
желательно на компоненте 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2015, 22:18
Ответы с готовыми решениями:

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

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

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

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

0
19.01.2015, 22:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2015, 22:18
Помогаю со студенческими работами здесь

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

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

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

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

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

Как считывать данные из файла?
как считывать и записывать данные из файла по строкам в переменную?


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

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