- Работаем со старым промышленным софтом под linux или как подружить wine и RS-485
- Установка Wine
- Установка драйвера MOXA Uport 1150
- Настройка WINE для работы с СОМ-портами и ПО
- Всё это прогрызание кактуса выполнялось для запуска определенных видов промышленного ПО и каждое работало по своему
- Thread: FTDI on Linux for USB to RS-485 comm
- FTDI on Linux for USB to RS-485 comm
- Re: FTDI on Linux for USB to RS-485 comm
- Bookmarks
- Posting Permissions
- USB to RS485 converter on Linux [closed]
- 1 Answer 1
Работаем со старым промышленным софтом под linux или как подружить wine и RS-485
В свете недавних указов президента посыпались вопросы от заказчиков, а есть ли %конфигуратор устройства не поддерживаемый цать лет, разработчики которого уволились или сбежали из России% под linux?
В следствие чего была из синей ленты, остатков бубна и обрывочных знаний по linux данная инструкция.
Надеюсь она пригодится коллегам, занимающимся наладкой и эксплуатацией АСУ ТП
Не забываем, что мы должны использовать отечественное ПО, в следствие чего дистрибутив будет Astra Linux SE 1.7.1 ОРЕЛ
Предполагается, что система установлена и подключена к интернету.
В качестве СОМ-порта использовался MOXA Uport 1150, перед настройкой необходимо подключить MOXA Uport к USB-порту ПК. При использовании другого устройства его необходимо настроить в соответствии с поставляемым мануалом.
Установка Wine
Основная инструкция (актуальная) тут.
нас интересует «Установка Wine версии 7.3 в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)»
1. Скачать пакет Wine 7.3 отсюда и пакет ia32-libs отсюда.
2. Открыть терминал Fly и ввести команды по порядку:
sudo apt install ia32-libs
sudo apt install libc6-i386
sudo dpkg -i ~/Загрузки/ia32-libs_20220330+1.7se_amd64.deb
# Имя текущей версии пакета, со временем она может быть изменена.
sudo dpkg -i ~/Загрузки/wine_7.3-0-astra-se17_amd64.deb
# Имя текущей версии пакета, со временем она может быть изменена.
sudo apt install ca-certificates libmspack0 cabextract
sudo mv winetricks /usr/bin
# для быстрого запуска из консоли
Рабочая директория WINE будет находится по адресу /opt/wine-7.3/bin/
Установка драйвера MOXA Uport 1150
Драйвер под конкретную версию ядра нужно качать с оф сайта
посмотреть версию ядра можно командой в терминале uname -r
На текущий момент это 5.10, скачать драйвер v.5.1.
1. Открываем терминал fly и вводим последовательно команды:
sudo apt install make linux-headers setserial autotools-dev
sudo cp /home/user/Загрузки/moxa-uport-1100-series-linux-kernel-5.x-driver-v5.1 moxa-uport-1100-series-linux-kernel-5.x-driver-v5.1
sudo tar xvfz moxa-uport-1100-series-linux-kernel-5.x-driver-v5.1.tgz
# Если во время выполнения команды «make install» возникает ошибка, то выполняем
# «sudo apt install —reinstall linux-headers-$(uname -r)» и повторно выполняем «make install»;
2. Переводим Uport в режим 485 2W с помощью команды в терминале: setserial /dev/ttyUSB0 port 1
номер порта можно посмотреть командой sudo ls /dev/ttyU*
Настройка WINE для работы с СОМ-портами и ПО
С помощью файлового менеджера (проводника) идем в /opt/wine-7.3/bin/ и запускаем regedit
В разделе реестра [HKEY_LOCAL_MACHINE\Software\Wine\Ports] создаем СТРОКОВУЮ переменную:
Запускаем winecfg и меняем версию windows на Windows XP или windows 2003:
Применяем и закрываем Winecfg.
Далее создаем символическую ссылку на нужный нам СОМ-порт:
sudo ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1
Если com1 уже существует, можно удалить его и заново создать ссылку:
sudo rm ~/.wine/dosdevices/com1
sudo ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1
Чтобы не менять права на СОМ-порт, необходимо добавить текущего пользователя в dialout командой:
sudo adduser dialout
затем ВЫЙТИ из системы и зайти заново.
Скачиваем ПО в любую папку в домашней директории и запускаем из менеджера файлов (проводника) двойным щелчком. в списке выбора приложений жмем на другая. и выбираем wine из /opt/wine-7.3/bin/:
Чтобы в следующий раз exe формат открывался через WINE можно установить его по умолчанию:
Далее можно пользоваться необходимым ПО.
Всё это прогрызание кактуса выполнялось для запуска определенных видов промышленного ПО и каждое работало по своему
Сканер устройств по com порту — при открытии будет спрашивать о замене sys файлов — ответить нет.
Может долго искать или падать с ошибками — просто перезапустить. Если будет находить приборы на других СОМ-портах или долго виснуть, то лучше удалить все символические ссылки на СОМ-порты кроме нужного:
sudo rm ~/.wine/dosdevices/comN
где N — номер лишнего СОМ-порта.
Конфигуратор оборудования — может падать с ошибками — просто перезапустить.
В целом 3 из 5 программ отработали без замечаний.
Автора данной статьи можно пинать ногами, обзывать ламером не умеющим в linux, но предлагать как нужно было сделать проще и быстрее.
Thread: FTDI on Linux for USB to RS-485 comm
First Cup of Ubuntu
FTDI on Linux for USB to RS-485 comm
I am fairly new to Linux and am running Ubuntu 14.04. I am trying to use a USB to RS-485 converter: http://www.iocrest.com/en/product_details431.html
I followed the instructions on installing the driver: http://www.ftdichip.com/Support/Docu. r_Linux%20.pdf
But how do I actually configure the RS-485 settings and send/receive data?
You help is really appreciated.
Quad Shot of Ubuntu
Re: FTDI on Linux for USB to RS-485 comm
Add your «user» to the «dialout» group.
The common FTDI & Parallax devices have kernel support.
Remove/plugin the USB adaptor.
run «dmesg»
or
dmesg | grep -i 'tty\|USB' > logging.txt
Config baud rate etc:
setserial
stty -F /dev/ttyUSB0 19200
could have to change permissions
Note: ttyUSB0 could be different number.
- Site Areas
- Settings
- Private Messages
- Subscriptions
- Who’s Online
- Search Forums
- Forums Home
- Forums
- The Ubuntu Forum Community
- Ubuntu Official Flavours Support
- New to Ubuntu
- General Help
- Installation & Upgrades
- Hardware
- Desktop Environments
- Networking & Wireless
- Multimedia Software
- Ubuntu Specialised Support
- Ubuntu Development Version
- Security
- Virtualisation
- Ubuntu Servers, Cloud and Juju
- Server Platforms
- Ubuntu Cloud and Juju
- Gaming & Leisure
- Emulators
- Wine
- Development & Programming
- Packaging and Compiling Programs
- Development CD/DVD Image Testing
- Ubuntu Application Development
- Ubuntu Dev Link Forum
- Programming Talk
- Repositories & Backports
- Ubuntu Backports
- Bug Reports / Support
- Ubuntu Backports
- System76 Support
- Apple Hardware Users
- Ubuntu Community Discussions
- Ubuntu, Linux and OS Chat
- Recurring Discussions
- Full Circle Magazine
- The Cafe
- Cafe Games
- Market
- Mobile Technology Discussions (CLOSED)
- Announcements & News
- Weekly Newsletter
- Membership Applications
- The Fridge Discussions
- Forum Council Agenda
- Forum Feedback & Help
- Request a LoCo forum
- Resolution Centre
- Ubuntu, Linux and OS Chat
- Other Discussion and Support
- Other OS Support and Projects
- Other Operating Systems
- Ubuntu/Debian BASED
- Debian
- MINT
- Arch and derivatives
- Fedora/RedHat and derivatives
- Mandriva/Mageia
- Slackware and derivatives
- openSUSE and SUSE Linux Enterprise
- Mac OSX
- PCLinuxOS
- Gentoo and derivatives
- Windows
- BSD
- Any Other OS
- Other Operating Systems
- Assistive Technology & Accessibility
- Art & Design
- Education & Science
- Documentation and Community Wiki Discussions
- Tutorials
- Outdated Tutorials & Tips
- Ubuntu Women
- Ubuntu LoCo Team Forums
- Americas LoCo Teams
- Argentina Team
- Software
- Hardware
- Comunidad
- Arizona Team — US
- Arkansas Team — US
- Brazil Team
- California Team — US
- Canada Team
- Centroamerica Team
- Chile Team
- Comunidad
- Hardware
- Software
- Instalaci�n y Actualizaci�n
- Colombia Team — Colombia
- Georgia Team — US
- Illinois Team
- Indiana — US
- Kentucky Team — US
- Maine Team — US
- Minnesota Team — US
- Mississippi Team — US
- Nebraska Team — US
- New Mexico Team — US
- New York — US
- North Carolina Team — US
- Ohio Team — US
- Oklahoma Team — US
- Oregon Team — US
- Pennsylvania Team — US
- Peru Team
- Texas Team — US
- Uruguay Team
- Utah Team — US
- Virginia Team — US
- West Virginia Team — US
- Argentina Team
- Asia and Oceania LoCo Teams
- Australia Team
- Bangladesh Team
- Hong Kong Team
- Myanmar Team
- Philippine Team
- Singapore Team
- Europe, Middle East, and African (EMEA) LoCo Teams
- Albania Team
- Catalan Team
- Portugal Team
- Egypt Team
- Georgia Team
- Ireland Team — Ireland
- Kenyan Team — Kenya
- Kurdish Team — Kurdistan
- Lebanon Team
- Morocco Team
- Saudi Arabia Team
- Sudan Team
- Tunisia Team
- Other Forums & Teams
- LoCo Archive
- Afghanistan Team
- Alabama Team — US
- Alaska Team — US
- Algerian Team
- Andhra Pradesh Team — India
- Austria Team
- Bangalore Team
- Bolivia Team
- Cameroon Team
- Colorado Team — US
- Connecticut Team
- Costa Rica Team
- Delhi Team
- Ecuador Team
- El Salvador Team
- Florida Team — US
- Galician LoCo Team
- Greek team
- Hawaii Team — US
- Honduras Team
- Idaho Team — US
- Iowa Team — US
- Jordan Team
- Kansas Team — US
- Libya Team
- Louisiana Team — US
- Maryland Team — US
- Massachusetts Team
- Michigan Team — US
- Missouri Team — US
- Montana Team — US
- Namibia Team
- Nevada Team — US
- New Hampshire Team — US
- New Jersey Team — US
- Northeastern Team — US
- Panama Team
- Paraguay Team
- Qatar Team
- Quebec Team
- Rhode Island Team — US
- Senegal Team
- South Carolina Team — US
- South Dakota Team — US
- Switzerland Team
- Tamil Team — India
- Tennessee Team — US
- Trinidad & Tobago Team
- Uganda Team
- United Kingdom Team
- US LoCo Teams
- Venezuela Team
- Wales Team
- Washington DC Team — US
- Washington State Team — US
- Wisconsin Team
- Yemen Team
- Za Team — South Africa
- Zimbabwe Team
- Americas LoCo Teams
- Other OS Support and Projects
- Ubuntu Official Flavours Support
Bookmarks
Bookmarks
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
USB to RS485 converter on Linux [closed]
Questions on the use of electronic devices are off-topic as this site is intended specifically for questions on electronics design.
I have a USB to RS485 converter: It has a CH341 chip, that is all I know about it. When I plug it in, I can see that it is bound to port ttyUSB0. I want to be able to send and receive bytes from PC (Ubuntu) to a STM32 board. The board side is not a problem, but rather the PC side. Does someone have experience with such a device? Do I write the bytes that I want to send onto this serial port and the magic will happen, or does it have some special protocol, config bytes or command bytes or such? The datasheet is basically 1 page with literally no information in it. I am not familiar with serial port programming under Linux, but it will be fun to learn it. I just wanted to know whether I have to pay attention to anything special before I start working on this home project. Any information, code snippet or just advice or experience is very welcome 🙂
\$\begingroup\$ This device is broken by design. RS-485 to PC requires 3 signals: Tx/Rx-, Tx/Rx+ (sometimes called A and B) and signal ground. But you only have 2 signals so it won’t work. Either you need to buy a new converter which wasn’t designed by quacks (recommended), or you need to go chase down a ground somewhere else on your PC and connect that one to the target separately. \$\endgroup\$
1 Answer 1
Linux supports this IC natively and the ch341 module is probably loading correctly since you see the /dev/ttyUSB0 entry created. I had to manually upgrade this driver a few years ago, but recent kernels should have a decent version.
At the Linux programming level (C or Python, for example) you don’t handle configuration by writing/reading directly to the device, since the driver does that. You open the device file, configure it with ioctl system calls referencing the file descriptor and communicates using the regular write and read functions.
Applications will see the device as a regular serial port, so, the old Serial Programming HOWTO is a good place to start. Miniterm is also a good reference as well as man 3 termios for a full description of functions and arguments.
Going another level up, Python makes it easier: e. g. here and here.
Edit: moving my comment here to explain more clearly
You should be concerned with your application not being able to receive all data sent from the STM32 reliably. There is buffering in the IC itself but if your process is scheduled out for too long, you may loose bytes. You can change the process priority, limit the rate you send data from STM32, but if you really need a robust communication, you should add that flow control to your protocol.
For the command/response structure you mentioned, with small responses, it should work even without the delay at the STM32 side. If the higher level flow control is too complex, and it is acceptable to only detect that the received data is incomplete, you may just add sequence numbers, timestamps or even integrity checks.