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

Передача char по com порту

18.11.2012, 18:56. Показов 1628. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
учусь работать с 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
39
40
41
42
43
44
45
46
char  test_str;//= 0xFF ;
 
 
 if (Shape1->Brush->Color == clLime)
 {
  //st.test=st.test|0x01;
    test_str |=(1<<0);
 }else
    test_str &= ~(1<<0) ;
  if (Shape2->Brush->Color == clLime)
 {
    test_str |=(1<<1);
 }else
    test_str &= ~(1<<1) ;
      if (Shape3->Brush->Color == clLime)
 {
    test_str |=(1<<2);
 }else
    test_str &= ~(1<<2) ;
      if (Shape4->Brush->Color == clLime)
 {
    test_str |=(1<<3);
 }else
    test_str &= ~(1<<3) ;
 
 
  if (Shape1->Brush->Color == clRed)
 {
    test_str |=(1<<4);
 }else
    test_str &= ~(1<<4) ;
  if (Shape2->Brush->Color == clRed)
 {
    test_str |=(1<<5);
 }else
    test_str &= ~(1<<5) ;
      if (Shape3->Brush->Color == clRed)
 {
    test_str |=(1<<6);
 }else
    test_str &= ~(1<<6) ;
      if (Shape4->Brush->Color == clRed)
 {
    test_str |=(1<<7);
 }else
    test_str &= ~(1<<7) ;
Добавлено через 9 минут
так я открываю com port
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 HANDLE port;
 DCB dcb;
 
 port=CreateFileA("COM9", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
    if(port==INVALID_HANDLE_VALUE) {
    Memo1->Lines->Add("Не возможно открыть последовательный порт");
 
   }
   CloseHandle(port);
 
  //далее установим наши параметры
dcb.BaudRate = CBR_19200;
dcb.fBinary = TRUE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
dcb.fDsrSensitivity = FALSE;
dcb.fNull = FALSE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fAbortOnError = FALSE;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = 1;
dcb.XonLim=2048;
dcb.XoffLim=512;
dcb.StopBits=ONESTOPBIT;
 
SetCommState(port, &dcb);  //запишем параметры в порт
 
COMMTIMEOUTS CommTimeOuts;
GetCommTimeouts(port, &CommTimeOuts);
CommTimeOuts.ReadIntervalTimeout= 100;
CommTimeOuts.ReadTotalTimeoutMultiplier = 1;
CommTimeOuts.ReadTotalTimeoutConstant = 5;
CommTimeOuts.WriteTotalTimeoutMultiplier = 1;
CommTimeOuts.WriteTotalTimeoutConstant = 100;
SetCommTimeouts(port, &CommTimeOuts);
 
 Memo1->Lines->Add("  Порт COM9 открыт успешно ");
 Memo1->Lines->Add(" скорость 19200");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2012, 18:56
Ответы с готовыми решениями:

Передача данных по com порту
Добрый день! Написал программу открытия и передачи данных по com порту. Проблема в следующем. Если я пишу передачу в теле открытия ком...

Передача одного байта по com-порту
Ком порт в компьютере соединен перемычкой RX-&gt;TX; HANDLE COMport; //дескриптор порта OVERLAPPED overlapped; //будем...

Передача по COM-порту
Доборого времени суток! имеется задачка по Паскалю: Реализация программы на паскале со втавками ASM для ком-порта. Необходимо передавать...

3
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
19.11.2012, 15:22
передаем массив символов out (на его месте может быть и структура - просто приведите ее адрес к unsigned char *)
C++
1
WriteFile(port, out, sizeof_out, &sizeof_out_real, 0);
1
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 13
20.11.2012, 11:22  [ТС]
Спасибо большое.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
20.11.2012, 13:47
...а зачем вы закрываете порт после его открытия и уже после этого пытаетесь что-то настроить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2012, 13:47
Помогаю со студенческими работами здесь

Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings])
Почему компилятор на это матерится? ObjA.Show(&quot;A&quot;); deprecated conversion from string constant to 'char*' #include &lt;iostream&gt;...

Передача данных по LPT порту
Всем привет! Передо мной стоит задача: Необходимо передать файл по средствам парралельного порта с одного компьютера, на другой. (2...

Передача строк и символов по COM -порту
Ребят, подскажите пож. создаю строку char chOne = &quot;1&quot;; Отправляю по COM-порту и в терминале получаю &quot;1C0&quot;. Откуда...

Прием и передача данных на одном порту
Всем Доброго времени суток. Где то слышал что возможно так что бы данные отправлялись и принимались на одном и том же порту. Что то...

Передача данных по RS233 или COM порту
Доброго времени суток всем ! У меня проблема, хочется разобраться с передачей данных по RS233 или COM порту. Написал такую программку: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru