Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 07.11.2017
Сообщений: 25

COM-порт. Совместное использование

21.12.2017, 12:29. Показов 6214. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня на одном COM-порту подключено два типа оборудование. Один тип опрашивается Программой №1 раз в час (настроен crontab), второй - должен опрашиваться постоянно (в цикле в Программе №2). Подскажите, пожалуйста, как распределить использование COM-порта между этими программами? Предполагаю, что надо использовать механизм блокировки ресурса, но из-за небольшого опыта программирования не знаю как это сделать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2017, 12:29
Ответы с готовыми решениями:

Совместное использование БД
Вопрос знатокам: Сколько пользователей может совместно использовать БД через сетевую папку ?

совместное использование C# и C++
Здравствуйте! Хотелось бы знать как мне поступить. Сразу скажу с C# мало знаком, хорошо знаком с С++. Вообщем у меня есть, готовый...

совместное использование интернета
Здравствуйте. Ситуация такая. Имеется компьютер подключенный к интернету, все настройки (айпишник, маска, шлюз) автоматически выдаются...

34
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.12.2017, 21:05
Студворк — интернет-сервис помощи студентам
Как по мне убивать чужой процесс - довольно грубо.
К тому же процесс может не существовать.

Цитата Сообщение от rosatt Посмотреть сообщение
В папке /var/lock/ есть директория lockdevice. Может туда надо писать лок-файл?
Как я помню нет(и судя по описанию)
А вообще что бы наверняка советую посмотреть как это делают другие программы.

Добавлено через 1 минуту
Цитата Сообщение от vic5710 Посмотреть сообщение
поскольку вы сами создаете файл - писать можете куда угодно.
но лучше не копировать работу ОС, пишите в свой каталог
Лучше не изобретать свой велосипед.

Добавлено через 9 минут
И касательно кода - вероятно стоило сразу писать под контекстный менеджер с методами __enter__ и __exit__
https://pythonworld.ru/osnovy/... eksta.html
http://book.pythontips.com/en/... agers.html
https://python-scripts.com/contextlib
0
0 / 0 / 1
Регистрация: 07.11.2017
Сообщений: 25
25.12.2017, 10:41  [ТС]
Если я правильно поняла, метод kill с параметром 0б процесс не убивает, а позволяет посмотреть, есть ли такой процесс в системе на данный моментю Если нет - возникает исключение, которое я и отлавливаю.

Добавлено через 27 минут
Цитата Сообщение от Avazart Посмотреть сообщение
И касательно кода - вероятно стоило сразу писать под контекстный менеджер с методами __enter__ и __exit__
https://pythonworld.ru/osnovy/... eksta.html
http://book.pythontips.com/en/... agers.html
https://python-scripts.com/contextlib
С этой возможностью Python я еще не разбиралась как следует, но попробую сделать
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.12.2017, 14:31
Цитата Сообщение от rosatt Посмотреть сообщение
Если я правильно поняла, метод kill с параметром 0б процесс не убивает, а позволяет посмотреть, есть ли такой процесс в системе на данный моментю Если нет - возникает исключение, которое я и отлавливаю.
Я считаю что лучше было бы поискать этот процесс в системе (где то в файлах папки /proc)
Узнать как этот процесс называется, и предложить пользователю его закрыть самому и попробовать снова.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
25.12.2017, 17:40
Цитата Сообщение от Avazart Посмотреть сообщение
Я считаю что лучше было бы поискать этот процесс в системе (где то в файлах папки /proc)
Узнать как этот процесс называется, и предложить пользователю его закрыть самому и попробовать снова.
все верно ТС делает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> import os
>>> pid = os.getpid()
>>> print(os.kill(pid,0))
None
>>> print(os.kill(pid+100,0))
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print(os.kill(pid+100,0))
ProcessLookupError: [Errno 3] No such process
>>> print(os.kill(pid,1))
 
=============================== RESTART: Shell ===============================
>>>
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.12.2017, 18:01
Да но так имя процесса не узнать.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
25.12.2017, 18:15
Цитата Сообщение от Avazart Посмотреть сообщение
Да но так имя процесса не узнать.
оба процесса принадлежат ТС и на фига им имя друг друга знать? им надо знать занят порт или нет.
я бы сделал через обычный таймер в цикле, мне не нравится постояная загрузка/выгрузка питона - лишняя трата ресурсов
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.12.2017, 19:06
Цитата Сообщение от vic5710 Посмотреть сообщение
оба процесса принадлежат ТС и на фига им имя друг друга знать?
А кто сказал что не может появится третьего устройства?
Например какого то отладочного терминала?
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
25.12.2017, 19:14
Цитата Сообщение от Avazart Посмотреть сообщение
А кто сказал что не может появится третьего устройства?
Например какого то отладочного терминала?
терминал на ttyUSB - это сильно
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.12.2017, 19:36
программа - терминал для Com Port- а типа "Putty" и др.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
25.12.2017, 19:40
Цитата Сообщение от Avazart Посмотреть сообщение
программа - терминал для Com Port- а типа "Putty" и др.
не вижу предмета для обсуждения
откройте для себя http://ilnurgi1.ru/docs/python... l.html#id6
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.12.2017, 19:45
Не виду при чем тут psutil
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
25.12.2017, 22:10
Цитата Сообщение от Avazart Посмотреть сообщение
Не виду при чем тут psutil

все что вы здесь нафлудили через него решается - имя по pid, статус процесса, файлы открываемые процессом
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.12.2017, 23:10
Какая разница через что решать?
0
0 / 0 / 1
Регистрация: 07.11.2017
Сообщений: 25
26.12.2017, 16:52  [ТС]
Не понимаю. как реализовать функцию check_lock в рамках контекстного менеджера

Добавлено через 6 часов 37 минут
Возможно для той программы, которая должна опрашивать порт раз в 2-3 минуты, я и сделаю работу без crontab используя таймер. Не очень понимаю, зачем мне знать название процесса. Я же жду, когда он закончится. а не прошу его закрыться.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
26.12.2017, 17:12
имхо вы выбираете трудный путь
Python
1
2
3
4
5
6
# proc1.py
from time import sleep
 
def proc1(m, s):
    print('proc1 run', m, s)
    sleep(1)
Python
1
2
3
4
5
6
# proc2.py
from time import sleep
 
def proc2(m, s):
    print('\tproc2 run', m, s)
    sleep(3)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# main.py
from datetime import datetime
from proc1 import proc1
from proc2 import proc2
 
if __name__=="__main__":
    while True:
        now = datetime.now()
        s = now.second
        m = now.minute
        if not s%10:
            proc2(m,s)
        else:
            proc1(m,s)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2017, 17:12

Совместное использование функции
Помогите укоротить программный код Private Sub Command01_Click() plusVid01 End Sub Private Sub Command02_Click() plusVid02 ...

Совместное использование C++ Builder и VS C++
Привет! Можно ли использовать C++ Builder и VS C++ совместно. Ну, допустим, C++ Builder для создания пользовательского интерфейса и...

С++ и JVM - совместное использование
Здравствуйте, господа программисты, хочу предложить на рассмотрение такую тему: 1: Можно ли написать кросс-платформенное приложение с...

Совместное использование базы
Добрый Всем день. Есть сеть из двух пк.На одном пк лежит база1 с таблицами.На этом же пк другая база2,которая имеет связь с таблицами ...

Совместное использование Xlib и Qt
Привет! Понадобилось использовать возможности Xlib в проекте, написанном на Qt. При подключении любого иксового хедера при компиляции...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Хабру пора сливаться, время пришло, оно прийдёт за всеми, но ему давно пора (Хабр - галимый плагиат и кликбейт с саморекламой).
Hrethgir 04.08.2026
Стирают публикации с эффективными алгоритмами (в частности по алгоритму обхода дерева, был опубликован там 3-го мая, в зипапке . . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru