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

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

03.03.2011, 15:04. Показов 6056. Ответов 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,893
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,893
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,893
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru