Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
1

COM-порт через TCP/IP

03.01.2016, 12:24. Показов 1194. Ответов 9
Метки нет (Все метки)

Не подскажите, с чего начинать. Есть код по открытию COM
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
int ret;
    AnsiString aStrrh1,aStrrh2;
    DCB dcbCommPort;
    nComPort=aport.c_str();
    if(hComm != NULL)
    {ret = CloseHandle(hComm);}      // handle to object to close
    if (nComPort == NULL)  {nComPort = "COM1";}
    memset(&mComPort[0],0,sizeof(mComPort));
    memcpy(&mComPort[0],&nComPort[0], sizeof(nComPort));
    hComm = CreateFile(  nComPort,
                      GENERIC_READ | GENERIC_WRITE,
                      0,
                      0,
                      OPEN_EXISTING,
                      0,
                      0);
    if(!fl_test_conn)
        {
            if(hComm == INVALID_HANDLE_VALUE)
                {
                    bCheck_port = 0;
                    Form1->fl_CheckConnPanel =  0;
                    return;
                }
    else{  bCheck_port = 1;}
  }
  GetCommTimeouts(hComm,&ctmoOld);
  ctmoNew.ReadTotalTimeoutConstant = 100;
  ctmoNew.ReadTotalTimeoutMultiplier = 0;
  ctmoNew.WriteTotalTimeoutMultiplier = 0;
  ctmoNew.WriteTotalTimeoutConstant = 0;
  SetCommTimeouts(hComm, &ctmoNew);
  dcbCommPort.DCBlength = sizeof(DCB);
  dcbCommPort.fRtsControl  = RTS_CONTROL_DISABLE;
  GetCommState(hComm, &dcbCommPort);
  BuildCommDCB("38400,N,8,1", &dcbCommPort);
  SetCommState(hComm, &dcbCommPort);
  OpenHandle_hComm = 1;
нужно попробовать подключится через TCP/IP.
Через прогу Virtual Serial Port все работает. Возможно ли както програмно реализовать? Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2016, 12:24
Ответы с готовыми решениями:

Узнать модель принтера через порт tcp 9100
Добрый день. Нифига не понимают в программировании драйверов. Как получить ответ от сетевого...

Как открыть порт для подключения через TCP?
Ребята, написал программу удаленного управления, когда запускаю на одном компьютере все работает,...

Ubuntu tcp и порт
Всем привет! Ребят есть устройство которое может отправлять данные по tcp адресу и порту!...

Открыть порт по tcp (игровой сервер)
Доброго времени суток! Над открыть порт по tcp для игрового сервера Пробувал открыть таким...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
9
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
04.01.2016, 12:25  [ТС] 2
Возможно не правильно вопрос поставил - можно ли отправлять по TCP данные в мой порт. Хотя бы логику понять. Гуглю - не помогает. Сделал клиент в бульдере, прописал ему порт и ip сервера - вроде соединяется. Дальше ступор..
0
Практикантроп
4679 / 2599 / 496
Регистрация: 23.09.2011
Сообщений: 5,579
04.01.2016, 14:01 3
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Хотя бы логику понять
А в чем трудности? На событие ClientSocket'а OnRead принять порцию данных (ReceiveBuf) и тут же отправить их в СОМ-порт.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
05.01.2016, 08:48  [ТС] 4
Цитата Сообщение от nick42 Посмотреть сообщение
А в чем трудности?
не догнать..
вообще это можно сделать в моих условиях с помощью компонента TcpClient?
с ком портом, как с файлом данные пишутся-считываются, я так понимаю. а как Tcp прикрутить? виртуальный порт создавать, как в софте?
может пример какой есть..
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
07.01.2016, 14:13  [ТС] 5
Есть считывание с файла порта и запись
К примеру
C++
1
2
ReadFile (hComm,  &InputBuffRead3[0], SizeInBuff3, &dwBytesRead3, NULL);
WriteFile( hComm,evt_data,sizeof(EVENT_RECORD),&lpNumberOfBytesWritten,0);
Я так понял, нужно как то подменить биты с порта на биты с TCP
Или тут не так?
0
Витальич
09.01.2016, 12:34
  #6

Не по теме:

Тема интересна, просто подписался.

0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
09.01.2016, 12:55  [ТС] 7
DEL
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
13.01.2016, 11:34  [ТС] 8
Не подскажите такой вопрос - есть две функции считывания
C++
1
TcpClient1->ReceiveBuf(&Read[0],Buff3);
и
C++
1
ReadFile (hComm,  &Read3[0], Buff3, &dwBytes, NULL);
Как в TcpClient1->ReceiveBuf найти параметр количества считанного, аналогичный dwBytes в ReadFile ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30900 / 20216 / 7882
Регистрация: 22.10.2011
Сообщений: 35,097
Записей в блоге: 6
13.01.2016, 12:47 9
ReceiveBuf - это функция, она в качестве результата возвращает число считанных байт:
ReceiveBuf returns the number of bytes actually read. If no bytes are read, ReceiveBuf returns –1.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 637
25.01.2016, 18:29  [ТС] 10
вроде работает, но вот вопрос - если сервер запаролен(сервер - сторонняя прога ), мой клиент перестает с ним работать. как там организована передача пароля и вообще, возможно при этом работать с моим клиентом?

читаю байты, которые приходят к клиенту с сервера с самого начала
"\n" "\r" "P" "a" "s" "s" "w" "o" "r" "d" и дальше "" "" "" "" "" "" "" "" до бесконечности. Видимо надо как то пароль ему передать..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2016, 18:29

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

TCP/IP ошибка о net.sockets.(Порт занят)
Вот такой трабл.На VB.NEt при работе с TCP/IP протоколом при использовании не стандартного порта...

Закрыть tcp/udp 445 порт на srx650
Подскажите, как именно реализуется закрытие портов в данном оборудование? зона используется только...

Кто назначает порт клиента при TCP-соединении?
Кто назначает порт клиента при TCP-соединении? Какое максимальное количество одинаковых портов...

Определить имя процесса, который слушает TCP порт
Есть ли какие-нибудь классы, позволяющие, например по объекту класса Socket, получить имя процесса,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.