Другие языки программирования и технологии
Какой принцип обращения в c++ builder 6 к com порту для приема/передачи пакетов информации от внешнего устройства?
Как сделать, где посмотреть, научиться
> Какой принцип обращения в ...к com порту
Все зависит от протокола передачи данных. Наиболее распространен следующий принцип: посылка запроса, чтение ответа.
> в c++ builder 6
Компилятор не важен, в программе для ОС Windows можно использовать WinAPI.
Вот у меня на столе валяется железка, которая кроме последовательных портов, имеет Ethernet интерфейс. Попробую узнать ее IP-адрес, послав запрос в порт:
#include <windows.h>
#include <string.h>
#include <stdio.h>
int main() {
// ОТКРЫТИЕ И НАСТРОЙКА ПОРТА
HANDLE port = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DCB dcb;
GetCommState(port, &dcb);
dcb.BaudRate = BAUD_115200;
dcb.ByteSize = DATABITS_8;
dcb.Parity = (BYTE)PARITY_NONE;
dcb.StopBits = STOPBITS_10;
SetCommState(port, &dcb);
COMMTIMEOUTS timeouts;
GetCommTimeouts(port, &timeouts);
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 1000;
SetCommTimeouts(port, &timeouts);
// ПОСЫЛКА ЗАПРОСА
char request[] = "ip\n";
DWORD n;
WriteFile(port, request, strlen(request), &n, 0);
// ЧТЕНИЕ ОТВЕТА
char answer[128];
ReadFile(port, answer, 128, &n, 0);
answer[n] = 0;
char *ipbeg = strstr(answer, "=");
char *ipend = strstr(ipbeg + 1, "\n");
*ipend = '\0';
printf("Device IP: %s\n", ipbeg + 1);
return 0;
}
Вот, собственно и все:
ВНИМАНИЕ: в реальную программу нужно добавить реакцию на ошибки открытия, конфигурирования, записи и чтения порта, а также проверку корректности ответа от устройства!! ! Здесь их нет для уменьшения размера этого сообщения.
Описание функций использованных в данном примере и всех остальных функций для работы с коммуникационными ресурсами доступно в MSDN.
Все зависит от протокола передачи данных. Наиболее распространен следующий принцип: посылка запроса, чтение ответа.
> в c++ builder 6
Компилятор не важен, в программе для ОС Windows можно использовать WinAPI.
Вот у меня на столе валяется железка, которая кроме последовательных портов, имеет Ethernet интерфейс. Попробую узнать ее IP-адрес, послав запрос в порт:
#include <windows.h>
#include <string.h>
#include <stdio.h>
int main() {
// ОТКРЫТИЕ И НАСТРОЙКА ПОРТА
HANDLE port = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DCB dcb;
GetCommState(port, &dcb);
dcb.BaudRate = BAUD_115200;
dcb.ByteSize = DATABITS_8;
dcb.Parity = (BYTE)PARITY_NONE;
dcb.StopBits = STOPBITS_10;
SetCommState(port, &dcb);
COMMTIMEOUTS timeouts;
GetCommTimeouts(port, &timeouts);
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 1000;
SetCommTimeouts(port, &timeouts);
// ПОСЫЛКА ЗАПРОСА
char request[] = "ip\n";
DWORD n;
WriteFile(port, request, strlen(request), &n, 0);
// ЧТЕНИЕ ОТВЕТА
char answer[128];
ReadFile(port, answer, 128, &n, 0);
answer[n] = 0;
char *ipbeg = strstr(answer, "=");
char *ipend = strstr(ipbeg + 1, "\n");
*ipend = '\0';
printf("Device IP: %s\n", ipbeg + 1);
return 0;
}
Вот, собственно и все:

ВНИМАНИЕ: в реальную программу нужно добавить реакцию на ошибки открытия, конфигурирования, записи и чтения порта, а также проверку корректности ответа от устройства!! ! Здесь их нет для уменьшения размера этого сообщения.
Описание функций использованных в данном примере и всех остальных функций для работы с коммуникационными ресурсами доступно в MSDN.
средствами WinAPI
Похожие вопросы
- Как научиться программировать на C++ с нуля, имея под рукой среду разработки Borland C++ Builder 6.0
- Стоит ли учить Borland C++ Builder 6
- Как в C++ Builder 6 произвести ипорт процедуры Dll?
- Какую выбрать среду программирования для C++/Visual C++ для учебных целей кроме CodeGear Delphi+C++ Builder?
- heloword не запускается!? вопрос внутри!и код C+ builder! программа на С!
- C++ Builder. Вопрос внутри.
- Что такое COM порт?
- Слышал такое мнение что C++Builder не круто а настоящие программеры пользуют visual c++, правда ли это ?
- Инициализация COM-порта! (delphi)
- Щас думаю какой качать учебник по С++ но тут Визуал и Бьюлдер что лучше учить Visual C++ или C++ Builder