COM Port в Debian

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

COM Port в Debian

Сообщение Timofey » 19.08.2016 17:17:44

Добрый день

Есть комп с ARM процессором, на нем стоит Debian
К COM порту подключено устройство, которое каждые 300 мсек посылает статус, а так же может принимать команду.
Если посылать команды через консоль, то все проходит хорошо.

На комп поставлен Lazarus 1.6 (с репозитория), FPC 3.0.0

Запускается и компилируется пустая форма хорошо.
Создал в программе отдельный поток, чтобы постоянно слушал статус с устройства. Пустой поток запускается нормально.

Работать с ком портом хочу как с файлом.

Добавляю туда библиотеки jwawinbase и jwawiint
Иначе не известная функция CreateFile.
Пишу функцию на создание файла. Компилирую и выходят две ошибки
1. jedi.inc(404,4) Error: Illegal assembler style specified "INTEL"
2. jwawinbase.pas (64,3) Fatal: Cannot find Windows used by wawinbase

Как от них избавится?
По второй ошибке: файл windows.pas я вобще в среде разработки не нашел, хотя он просит именно его
Timofey
новенький
 
Сообщения: 10
Зарегистрирован: 19.08.2016 17:02:31

Re: COM Port в Debian

Сообщение Лекс Айрин » 19.08.2016 17:43:52

Timofey, возможно, что библиотеки заточены под винду, поэтому требуют windows.pas
А стиль ассемблера легко меняется директивой
Локально
Код: Выделить всё
$ASMMODE XXX    Выбор типа ассемблера. XXX=

    att  – синтаксис AT&T,
    intel – синтаксис Intel,
    direct – прямая вставка.

и глобально в настройках компилятора.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: COM Port в Debian

Сообщение alexs » 19.08.2016 17:56:17

А почему не использовать Ararat Synapse? Прекрасно работает с COM портом.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: COM Port в Debian

Сообщение mig-31 » 19.08.2016 18:13:34

Ведь ясно пишет хто хочет Windows Unit, который только для Windows!!! Используйте SynaSer unit из Synapse.

wiki example http://wiki.freepascal.org/Hardware_Access
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: COM Port в Debian

Сообщение Timofey » 22.08.2016 10:19:55

Спасибо за ответы.
Нашел и поставил SynaSer unit из Synapse. Установил полностью весь пакет.
Модуль подключил, никаких переменных пока не объявлял.
При компиляции и сборке выдает ошибку
synafpc.pas(141,1) Error: Can't call the assembler, error -1 switching to external assembling
Причем если щелкнуть на ошибку, то выделяет процедуру Sleep в этой файле. В этой процедуре идет простой вызов sysutils.sleep с передачей параметров. Больше ничего
Что может быть?
И еще вопрос, в этом наборе synapse есть и модули для работы с TCP/IP? Можно ли их использовать? Удобные ли? Мне необходимо сделать ModbusTCP
Timofey
новенький
 
Сообщения: 10
Зарегистрирован: 19.08.2016 17:02:31

Re: COM Port в Debian

Сообщение v-t-l » 22.08.2016 11:23:32

Synaser весной брал отсюда https://sourceforge.net/p/synalist/code/HEAD/tree/trunk/ (Кнопка "Download Snapshot")
Компилил на Raspberry Pi 2B. Lazarus 1.6/fpc2.6.4
До сих пор все нормально работает (в том числе и на Raspberry Pi 3).

Добавлено спустя 2 минуты 52 секунды:
Synapse TCP/IP and serial library
А Modbus реализован в PascalSCADA, например.
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: COM Port в Debian

Сообщение mig-31 » 22.08.2016 11:51:58

ModbusTCP в PascalScada только клиент. ModbusTCP работает через Ethernet.
Modbus RTU (PascalScada) через /dev/ttySx (x - номер порта), для USB /dev/ttyUSBx или /dev/ttyACMx (x - номер порта).

dmeg |grep serial - получите посл. порты в системе.

Использую PascalScada ModbusTCP/Modbus RTU без проблем Windows/Linux x86. Под не ARM пробывал.
http://www.pascalscada.com/
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: COM Port в Debian

Сообщение Timofey » 22.08.2016 12:12:24

Спасибо, посмотрю. Мне и нужен ModbusTCP клиент. Сервер запущен на железке.
Timofey
новенький
 
Сообщения: 10
Зарегистрирован: 19.08.2016 17:02:31

Re: COM Port в Debian

Сообщение DYUMON » 22.08.2016 12:40:57

попробуй это посмотреть https://sourceforge.net/projects/mbutils/files/
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: COM Port в Debian

Сообщение Timofey » 23.08.2016 16:39:54

Остался еще один вопрос:
Порт подключился, данные отправляю и получаю. Но программа при этом жутко подтормаживает и загрузка процессора 100%.
При создании потока идет открытие порта и конфигурирование.
Дальше бесконечный цикл, пока не придет команда на завершения потока. В цикле всего одна функция Sleep(500).
По сути никакого чтения и записи (закоментировал). При этом поток кушает весь процессор.
Может быть это связано с тем, что постоянно идут данные на порт? Как этого избежать?
Если я не вызываю функцию соединения, то все ОК
Timofey
новенький
 
Сообщения: 10
Зарегистрирован: 19.08.2016 17:02:31

Re: COM Port в Debian

Сообщение Лекс Айрин » 23.08.2016 17:16:02

Timofey, создать отдельный поток/процесс слушающий порт. Как не знаю... но на форуме должно быть. Ну или слушать в таймере.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: COM Port в Debian

Сообщение Timofey » 23.08.2016 17:17:24

Лекс Айрин поток и так отдельный. Просто из-за этого весь комп подтормаживает
Timofey
новенький
 
Сообщения: 10
Зарегистрирован: 19.08.2016 17:02:31

Re: COM Port в Debian

Сообщение Лекс Айрин » 23.08.2016 17:37:34

Timofey, тогда попробуй в таймер кинуть и убрать Sleep (ну и поток, заодно)
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: COM Port в Debian

Сообщение Timofey » 23.08.2016 17:40:56

Лекс Айрин Тоже пробовал. Тогда конкретно подвисает окно :)
Я даже просто при создании формы открывал соединение и таймер не запускал. Чтобы просто порт был открыт и всё. И программа сразу начинала зависать. Дополнительный поток в этот момент был отключен.
Timofey
новенький
 
Сообщения: 10
Зарегистрирован: 19.08.2016 17:02:31

Re: COM Port в Debian

Сообщение mig-31 » 23.08.2016 17:41:27

MODBUS TCP из PascalScada и так уже в потоке получает и отправляет данные. Доп. поток не надо создавать. Обрабатывайте Ivents класса.
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 250

Рейтинг@Mail.ru