Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/65: Рейтинг темы: голосов - 65, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 42

Отправка и получение данных с COM-порта

21.05.2015, 12:12. Показов 14181. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста в чем может быть дело. Пытаюсь отправить данные на ком порт и прочесть.

Rx и Tx на порте замкнуты, то есть что отправил то и получил. С терминальной программой работает все норм.

Ввожу данные в едит на форме и отправляю их в нужный ком порт

Delphi
1
2
3
4
5
procedure TForm1.Button4Click(Sender: TObject);
begin
CommPortDriver1.SendString(Edit1.Text);
//memo3.Text:= (Edit1.Text);
end;
Пытаюсь прочесть, но выводится лишь часть того, что ввел в едит.

Пробовал менять типы pChar и string, Ansistring и тд,
Delphi
1
For i:=0 to DataSize-1 do s:=s+(pChar(DataPtr)[i]);
не помогает.

Например, ввожу 123456

Получаю 123

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.CommPortDriver1ReceiveData(Sender: TObject;
  DataPtr: Pointer; DataSize: Cardinal);
var i:integer;
s:string;
begin
s:='';
For i:=0 to DataSize-1 do s:=s+(pChar(DataPtr)[i]);
 
Memo3.text:=s;
Edit6.Text:=inttostr(i);
Edit7.Text:=s;
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2015, 12:12
Ответы с готовыми решениями:

Получение данных с USB-порта
Есть Электронное средство измерения с программным обеспечением для фиксирования данных в ПК. Программа ужасно сложная и трудоемкая для...

Получение данных с COM порта
Решал задачу получения данных с прибора по UART. В итоге, сделал консольное приложение на С++: ...

Получение данных с Com-порта
Добрый день, на днях сделал ИК датчик, подключил к ардуино, написал прошивку отправки величины измеренного напряжения с аналогового порта...

28
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
21.05.2015, 17:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sergey1990 Посмотреть сообщение
Почему?
Потоьу что SendString(s) посылает в порт столько байт, сколько символов в строке. Для строки 123456 количество символов равно 6. 6 байт твоя программа посылает и принимает. А 6 байт в юникоде это 3 символа.
0
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 42
21.05.2015, 17:08  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
1
2
3
4
5
6
7
procedure TForm1.Button4Click(Sender: TObject);
var
* S : AnsiString;
begin
S:='SRB1';
CommPortDriver1.SendString(S);
end;
Не помогло.

когда из терминала посылаешь любую чушь, заканчивающуюся на ; то в ответ приходит '?'
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
21.05.2015, 17:09
Цитата Сообщение от northener Посмотреть сообщение
6 байт твоя программа посылает и принимает.
Конкретнее для той строки отправляется (в HEX-представлении)
00 31 00 32 00 33
0
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 42
21.05.2015, 17:11  [ТС]
Тогда получается что я посылаю SRB1; а она отправляет SR, Следовательно прибор не видит ; и ни как не реагирует.
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
21.05.2015, 17:12
Попробуй Potmon'ом посмотреть что посылает в порт твоя программа, а что терминал.
0
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 42
21.05.2015, 17:19  [ТС]
А команда chr(18) проходит потому что в ACII это 1 символ

Добавлено через 6 минут
Спасибо огромное за помощь, завтра попробую посмотретть портмоном.
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
22.05.2015, 00:55
Цитата Сообщение от Sergey1990 Посмотреть сообщение
завтра попробую посмотретть портмоном
Это если получится.
С тех пор как творения Великого Марка купил Микрософт проблем с этими творениями стало немеряно.
Но ответ могу дать уже сейчас. Виноват именно компонент. Он либо вообще не адаптирован к юникодным версиям Дельфи, либо его адаптировали троешники.
0
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 42
22.05.2015, 09:07  [ТС]
С портмоном путного пока ни чего не получилось, не видит порт. Я попробовал послать команду 'SRB1;1111' единицы добавил что бы символы уместились. полагаю, что прибор принимает команду, потому что он начал реагировать, а именно посылать иероглиф в ответ. И так на все команды, даже те, которые требуют ответа больше чем 1 символ. Думаю что то с кодировками

Добавлено через 35 минут
Вроде немного разобрался. Скачал программу для мониторинга порта. Получается что программа вставляет точку после каждого символа. То есть команда идет в таком виде S.R.B.1.; Туда то и уходит каждый второй байт наверно. Прибор не понимает такой команды и шлет в ответ знак вопроса. Теперь не понятно что делать с этим)) пробовал sendstring менять на sendchar и тд, все тоже самое.
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
22.05.2015, 12:39
Цитата Сообщение от Sergey1990 Посмотреть сообщение
Получается что программа вставляет точку после каждого символа
Это не точка. Это старший байт кода символа. Для английских букв и цифр этот байт равен 0.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2015, 12:39

Получение данных с com порта
Добрый вечер. Пишу небольшую программку для считывания данных с прибора через com порт. Программа работает, но иногда (1 раз в 1...

Получение данных с USB/COM-порта
Добрый день! Необходимо получить данные с USB-порта. Можете подсказать с чего начинать? Заранее спасибо.

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

Получение данных с Com порта и сохранение их в txt
Доброго времени суток! Мне необходимо получить данные от устройства и сохранить их в txt файл. Написал вот такой код: using System; ...

Фоновое сканирование открытого COM-порта и получение данных
Добрый день. Сразу прошу не ругать, я в программировании полный нуль. Ну почти... Занимаюсь моддингом в свободное время и частенько...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru