С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/40: Рейтинг темы: голосов - 40, средняя оценка - 4.65
3 / 3 / 1
Регистрация: 29.08.2012
Сообщений: 306

SDPO библиотека - работа с com портом

26.07.2015, 22:38. Показов 7831. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть StringGrid - внем храняться данные в виде 0x00, 0x80 , 0xF2 и т.д. - передаю в com порт используя библиотеку Sdpo. В порт-мониторе появляются ASCI коды? т.е. 30 78 30 30 и т.д. , а не байты мои . Как исправить???
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.07.2015, 22:38
Ответы с готовыми решениями:

Библиотека работы с COM портом
Добрый день, нашел библиотеку для работы с ком портом. Вот: ...

Библиотека для работы с COM портом
Добрый вечер! Пишу программу, которая общается с внешним устройством, через СОМ порт. Я сделал библиотеку, которая прописывает функции...

Не ставится пакет SDPO
Здравствуйте! Помогите, не ставится пакет SDPO, требует synaser. Раньше ставился. W7. Установил новые Lazarus 2.0.4 и SDPO из официального...

10
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 11
27.07.2015, 00:10
Ты - счастливчик! Я как раз забрал хрустальный шар из магиечистки...
В общем открывай файл Unit1.pas и ищи строчки с номерами - тут шар мутный, не вижу...

А если серьёзно. В каждой ячейке StringGrid хранятся строки, а не числа. И для их отправки нужно сначала преобразовать строку вида "7A" в число типа byte. И именно это число и отправлять.

Преобразование строки в число - смотри файл справки user.pdf модуль или StrUtils или SysUtils.

Если я не угадал - проверь строки 65-84.
---------------------------------
И вообще, кто тебя учил сразу делать большие программы без отладки каждой процедуры?
Я бы шёл следующим путём:
1. Попытка подключится к СОМ-порту из консольной (DOS) программы.
2. Попытка отправить через СОМ-порт один или два заранее известных байта с контролем через сниффер
3. Попытка отправить/принять сообщение (из массива) в/из устройство с контролем через сниффер и выводом на экран ответа устройства.
4. GUI.
После каждого шага у меня в отдельный модуль отправлялись бы отлаженные подпрограммы (методы) подключение, отправка/приём байта, отправка/приём сообщения, диагностика состояния соединения.

А у тебя - неизвестно состояние отлаженности процедур обмена, что записано/считано из StringGrid, и прочее...

Мой совет - проектируй сверху-вниз, но отлаживай снизу-вверх - т.е. дом представь ещё на бумаге, а складывай его из проверенных кирпичей.
1
3 / 3 / 1
Регистрация: 29.08.2012
Сообщений: 306
27.07.2015, 00:49  [ТС]
Я так собственно и делал - данные в ком порт у меня получилось слать, но они в сниффере в виде ASCII кода, а мне нужны - правильно байты(HEX). Прием мне не нужно реализовывать, только отправка. Про документацию USER.pdf - это которая на сайте для freepascal??
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 11
27.07.2015, 01:11
Цитата Сообщение от maksmkv Посмотреть сообщение
Про документацию USER.pdf - это которая на сайте для freepascal??
Да.
Цитата Сообщение от maksmkv Посмотреть сообщение
Я так собственно и делал - данные в ком порт у меня получилось слать, но они в сниффере в виде ASCII кода, а мне нужны - правильно байты(HEX).
Значит не так, раз нет уверенности, где искать ошибку - в передаче или в StringGrid.

Добавлено через 2 минуты
-----------------
Я прошу прощения, конечно же, нужен файл справки rtl.pdf.
0
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,210
29.07.2015, 22:15
Не могу утверждать что хорошо, что плохо, но лично мне библиотека Sdpo не понравилась. Позволяет передавать только строки (Serial.WriteData('обязательно строка'); ), а если необходимо реализовать какой-то более сложный протокол, то "без химии" не обойтись. Невозможно управлять линиями RTS, CTS и ряд других вещей. Какая-то она примитивная (подчёркиваю, что это лично моё мнение, которое может не совпадать с общепринятым). Сейчас для работы с портом использую компоненты библиотеки Cportlaz v1.0.0 . Попробуйте, не пожалеете. Помимо всего прочего в ней есть даже Help!
Что касается вашего вопроса, то в StringGrid '0x00' - это строка, соответственно при передаче строки будут передаваться коды символов: '0' - $30, 'x' - $78, '0' - $30, '0' - $30, конец строки - $00.

Добавлено через 14 минут
Цитата Сообщение от maksmkv Посмотреть сообщение
Как исправить???
Используя компонент Sdpo вряд ли вы что-либо исправите. Например передать подряд две комбинации 0x00 и 0x00 (в Лазарусе это пишется, как $00 и $00) вы не сможете, т.к. не существует строки, которая не содержит ни одного символа, зато содержит подряд два знака "окончание строки", т.е $00 и $00.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 11
30.07.2015, 22:16
Цитата Сообщение от shyub Посмотреть сообщение
лично мне библиотека Sdpo не понравилась. Позволяет передавать только строки
Вы меня заинтриговали...
У меня почти нет опыта и предпочтений в этой области.
Задал поиск, нашёл http://wiki.freepascal.org/5dpo, попалась цитата
TSdpoSerial allows asynchronous communication using a serial port based on Synaser. Works in Windows and Linux.
С этой страницы попал
http://sourceforge.net/projects/sdpo-cl/files/
В архиве Sdpo-0.2.0.zip\Sdpo/SdpoSerial/sdposerial.pas есть строки
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
  TSdpoSerial = class(TComponent)
.......................
  public
.......................
    // read data from port
    function DataAvailable: boolean;
    function ReadData: string;
//    function ReadBuffer(var buf; size: integer): integer;   <-------------
 
    // write data to port
    function WriteData(data: string): integer;
    function WriteBuffer(var buf; size: integer): integer;    <-------------
......................
Т.к. String - не просто 0-terminated, то для чтения с бубном хватит и ReadData, но запись произвольного буфера есть. Кроме того, можно самостоятельно доопределить ReadBuffer пользуясь Synaser.

Это просто, на первый взгляд...

Моё мнение, Synaser, 5pdo и прочие - работоспособные инструменты. И если нет предпочтений после изучения документации и поддержки - без разницы, что изучать. В книжке Тирион Ланнистер утверждал примерно следующее: "Если вынужден переспать с некрасивой девушкой, то единственный способ завершить это поскорее - начать пораньше..."

Кроме того, вопрос ТС был не о предпочтениях, а о предсказаниях (код он не предоставил). А также, из-за недостатка опыта в этой сфере, мне, вообще, теперь больше нечего добавить.
0
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,210
01.08.2015, 22:11
Раньше ответить не мог, извините. Если вы не смогли найти Cportlaz v1.0.0, то прикрепляю её к сообщению.Cportlaz_v1.0.0.rar
Попробуйте, думаю, понравится. Если что не понятно - задавайте вопрос, обсудим.
1
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,210
01.08.2015, 22:15
К стати, раньше я был сторонником использовать при работе с COM-портом только функции WinAPI, отдельный поток и т.д., но, попробовав Cportlaz v1.0.0, мнение своё именил... Автор библиотеки очень удачно всё это решил "за меня".
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 11
02.08.2015, 09:31
Спасибо за совет. Вместо архива можно было ограничится ссылкой на Sourceforge.

К сожалению, прямо сейчас задача работы с COM не стоит, есть куча других, но при такой необходимости рассмотрю и пакет Cportlaz.
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.08.2015, 10:59
mkv, ну мы же вроде этот вопрос на vr-online обсудили уже.
0
3 / 3 / 1
Регистрация: 29.08.2012
Сообщений: 306
04.08.2015, 02:08  [ТС]
Всем спасибо. Попробую еще Cportlaz - может и с ним что-нибудь получиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.08.2015, 02:08
Помогаю со студенческими работами здесь

Работа с Com портом
Столкнулся с проблемой не могу найти литературу По Visualbaisic работа с com портом! Подскажите литературу! Хочу написать программу по...

Работа с COM портом
Добрый день! Подскажите, пожалуйста, названия документов или книг, где можно почитать о работе с COM портом для win32 на C/C++? ...

Работа с COM-портом
Добрый день, друзья! Изучаю работу с COM-портом по данному руководству: http://piclist.ru/S-COM-THREAD-RUS/S-COM-THREAD-RUS.html ...

Работа с COM портом
Всем доброго времени суток! Требуется небольшая подсказка. Пишу программу, которая отправляет\принимает данные с\на COM порт. Суть....

Работа с Com портом
Привет всем! У меня собственно такая ситуация, есть bluetooth и телефон Nokia устанавливаю соединение через виртуальный com порт, мне...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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 с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru