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

Подскажите как отправить пакет 10 байт на устройство через com порт

03.03.2011, 15:04. Показов 6078. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из меня программист некудышный..
что то получается отправить на ком порт из содранного примера, а как дальше действовать я не знаю.
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
#include "windows.h"
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#define BUFSIZE 100
main (){
HANDLE hCOM=CreateFile("COM1",GENERIC_WRITE + GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hCOM!=INVALID_HANDLE_VALUE)
    {
 
        cout << "COM1 is open OK!" << endl;
        char buffer[30];
        memset(buffer,0,sizeof(buffer));
                strcpy(buffer,"SAVE TO COM1");
        DWORD nb;
        OVERLAPPED ov;
        WriteFile(hCOM,buffer,sizeof(buffer),&nb,&ov);
                ReadFile(hCOM,buffer,sizeof(buffer),&nb,&ov);
               cout << &nb <<'\n';
 
                getch();
 
        CloseHandle(hCOM);
    }
    else cout << "Error Open COM1";
        getch();
Добавлено через 3 часа 59 минут
Длинна пакета фиксированная - 10 байт(с нмерами:0,1,2,3,4,5,6,7,8,9).
В байте 0 передается номер команды.
В байте 7 сетевой адрес ведомого устройства.
В байтах 8,9-контрольная сумма.
Байты 1,2,3,4,5,6 исп-ся для обмена нанными.

Добавлено через 1 час 39 минут
Нашел пример https://www.cyberforum.ru/visu... 55863.html . На даже его не получается запустить.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2011, 15:04
Ответы с готовыми решениями:

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

Как в COM-порт отправить байт данных?
Нашел готовый пример, попытался его запустить но почему то выходит ошибка, почему не знаете?.MODEL SMALL .STACK 100h .DATA .CODE ...

Отправить байт на COM-порт
может кто консольное приложение написать для отправки байта на COM-порт? на COM4 подключен контроллер на который нужно отправить байт...

6
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
03.03.2011, 15:17
Цитата Сообщение от jenat1k Посмотреть сообщение
даже его не получается запустить
jenat1k, а что не так? что за ошибка?

Добавлено через 1 минуту
Цитата Сообщение от jenat1k Посмотреть сообщение
OVERLAPPED ov;
в принципе, ввод-вывод внахлест тут можно не использовать.
0
0 / 0 / 0
Регистрация: 02.03.2011
Сообщений: 11
03.03.2011, 15:32  [ТС]
schdub, Юольшое спасибо что откликнулся.
За основу взял https://www.cyberforum.ru/visu... 55863.html
Но он при компиле ничего не происходит, вылетает окно как на скрине и все.
Если что устройство РРГ-12.
Миниатюры
Подскажите как отправить пакет 10 байт на устройство через com порт  
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
03.03.2011, 15:43
Протрасируйте программу, нажимая F7 и скажите точно на какой строке Вашего кода происходит данная ошибка.

Добавлено через 3 минуты
Цитата Сообщение от jenat1k Посмотреть сообщение
C++
1
cout << &nb <<'\n';
зачем Вы выводите адрес на переменную? наверное, нужно так:
C++
1
cout << nb <<'\n';
0
0 / 0 / 0
Регистрация: 02.03.2011
Сообщений: 11
03.03.2011, 15:55  [ТС]
Я создал ComPort.hpp и ComPort.сpp. При компиляции ComPort.сpp вылетает куча ошибок:

[C++ Error] _config.h(488): E2141 Declaration syntax error
[C++ Error] _config.h(549): E2141 Declaration syntax error
[C++ Error] stddefs.h(51): E2316 'size_t' is not a member of 'std'
[C++ Error] stddefs.h(51): E2272 Identifier expected
[C++ Error] stddefs.h(52): E2316 'ptrdiff_t' is not a member of 'std'
[C++ Error] stddefs.h(52): E2272 Identifier expected
[C++ Error] exceptio.h(58): E2141 Declaration syntax error
[C++ Error] tchar.h(957): E2316 '_TSCHAR' is not a member of 'std'
[C++ Error] tchar.h(957): E2272 Identifier expected
[C++ Error] tchar.h(958): E2316 '_TUCHAR' is not a member of 'std'
[C++ Error] tchar.h(958): E2272 Identifier expected
[C++ Error] tchar.h(959): E2316 '_TXCHAR' is not a member of 'std'
[C++ Error] tchar.h(959): E2272 Identifier expected
[C++ Error] tchar.h(960): E2316 '_TINT' is not a member of 'std'
[C++ Error] tchar.h(960): E2272 Identifier expected
[C++ Error] _mbstate.h(40): E2092 Storage class 'inline' is not allowed here
[C++ Error] _mbstate.h(40): E2092 Storage class 'static' is not allowed here
[C++ Error] _mbstate.h(40): E2141 Declaration syntax error
[C++ Error] except.h(103): E2316 'terminate_handler' is not a member of 'std'
[C++ Error] except.h(103): E2040 Declaration terminated incorrectly
[C++ Error] except.h(104): E2451 Undefined symbol 'terminate_function'
[C++ Error] except.h(105): E2451 Undefined symbol 'unexpected_function'
[C++ Error] except.h(118): E2316 'exception' is not a member of 'std'
[C++ Error] except.h(118): E2303 Type name expected
[C++ Error] except.h(120): E2316 'string' is not a member of 'std'
[C++ Error] except.h(120): E2228 Too many error or warning messages

Добавлено через 3 минуты
У меня С++ Builder 6
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
03.03.2011, 16:00
После того, как открыли COM порт его необходимо настроить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  // таймауты
  GetCommTimeouts(_comHandle, &comtim);
  comtim.ReadIntervalTimeout         = 100;
  comtim.ReadTotalTimeoutMultiplier  = 1;
  comtim.ReadTotalTimeoutConstant    = 100;
  comtim.WriteTotalTimeoutMultiplier = 1;
  comtim.WriteTotalTimeoutConstant   = 100;
  SetCommTimeouts(_comHandle, &comtim);
  // настройки
  GetCommState(_COMHandle, &dcb);
  dcb.BaudRate = CBR_19200;
  dcb.Parity   = NOPARITY;
  dcb.ByteSize = 8;
  dcb.StopBits = ONESTOPBIT;
  SetCommState(_COMHandle, &dcb);
об используемых функциях читайте в MSDN

Добавлено через 56 секунд
Цитата Сообщение от jenat1k Посмотреть сообщение
Я создал ComPort.hpp и ComPort.сpp
из этой темы? https://www.cyberforum.ru/visu... 55863.html
0
0 / 0 / 0
Регистрация: 02.03.2011
Сообщений: 11
03.03.2011, 21:05  [ТС]
Я создал ComPort.hpp и ComPort.сpp
из этой темы? https://www.cyberforum.ru/visu... 55863.html - ДА.
Если бы у меня етот пример заработал, то было бы очень хорошо.

Добавлено через 5 часов 0 минут
Програмка вроде как работает, но все еще не понятно какие данные отправлять в устройство.
Может кто подскажет как сформировать пакет исходя из этой логики:

Длинна пакета фиксированная - 10 байт(с нмерами:0,1,2,3,4,5,6,7,8,9).
В байте 0 передается номер команды.
В байте 7 сетевой адрес ведомого устройства.
В байтах 8,9-контрольная сумма.
Байты 1,2,3,4,5,6 исп-ся для обмена нанными.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2011, 21:05
Помогаю со студенческими работами здесь

Отправить байт в СОМ порт
Подскажите, что не так. // Послать символ b (begin) buf = 0x62; // 0x62 == b port.Write(buf, 0, 1); Если читаю байт...

Как отправить байты, содержащиеся в некотором буфере через COM-порт?
Как отправить байты (их значения) содержащиеся в некотором буфере через COM-порт? С++ Visual Studio.

Через какой порт пойдёт пакет?
С компьютера на сервер через маршрутизатор идёт пакет, допустим с порта компьютера:1000 на порт сервера:80. Два вопроса 1. На...

Отправить пакет данных через WebRequest
Привет форумчане! Интересует, можно ли как нибудь отправить пакет данных, который отправляет любой браузер, используя WebRequest или...

Как отправить текст клиенту которые не присоединен к серверу зная его ip и порт через ServerSocket?
Как отправить текст клиенту которые не присоединен к серверу зная его ip и порт через ServerSocket?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru