Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2016 14:00:28

lu46e
Зарегистрирован: 2016-04-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

Всем привет!
Недавно столкнулся с необходимостью написать программу по управлению видеоматрицей по COM-порту. Отыпа программирования в Python не имею. Написал программу, но работает очень странно.
Установлен Python2.7 + PyGTK.
При работе через переходник USB-COM все нормально работает, все коды шлются через порт. При работе через встроенный в ноут COM-порт при нажатии кнопки записи в порт приложение зависает и ничего не шлется.
Подскажите в чем проблема?

Вот текст программы:

#!/usr/bin/env python
# coding: utf-8
import sys
import os
import serial
import importlib

try:
import pygtk
pygtk.require('2.0')
except:
sys.exit(1)
try:
import gtk
import gtk.glade
except:
sys.exit(1)

class App:

def __init__(self):
# Загружаем файл интерфейса
self.gladefile = “Routing2.glade”
# дерево элементов интерфейса
self.widgetsTree = gtk.glade.XML(self.gladefile)
# Словарик, задающий связи событий с функциями-обработчиками
dic = { “button1_clicked_cb”: self.pushbutton_source,
“button2_clicked_cb”: self.pushbutton_source,
“button3_clicked_cb”: self.pushbutton_source,
“button4_clicked_cb”: self.pushbutton_source,
“button5_clicked_cb”: self.pushbutton_destination,
“button6_clicked_cb”: self.pushbutton_destination,
“button7_clicked_cb”: self.pushbutton_destination,
“button8_clicked_cb”: self.pushbutton_destination,}
# Магическая команда, соединяющая сигналы с обработчиками
self.widgetsTree.signal_autoconnect(dic)
# Соединяем событие закрытия окна с функцией завершения приложения
self.window = self.widgetsTree.get_widget(“window1”)
if (self.window):
self.window.connect(“destroy”, self.close_app)
# А это уже логика приложения. Задаём маршруты для нажатия каждой кнопки.
# Запоминаем номер выбранного источника
self.routes = {'button1': ('0', ‘Image1’),
‘button2’: ('1', ‘LampCam’),
‘button3’: ('2', ‘RoomCam’),
‘button4’: ('3', ‘Multinput’),
#Коды маршрутизации в зависимости
#от комбинации источник-приемник
‘button5’: ('00110001', ‘00110010’,
‘00110011’, ‘00110100’, ‘textview1’),
‘button6’: ('00110101', ‘00110110’,
‘00110111’, ‘00111000’, ‘textview2’),
‘button7’: ('00111001', ‘01100001’,
‘01100010’, ‘01100011’, ‘textview3’),
‘button8’: ('01100100', ‘01100101’,
‘01100110’, ‘01100111’, ‘textview4’)}
#В переменную self.source записываем номер выбранного источника
#В переменную self.sourcename записываем имя выбранного источника
def pushbutton_source(self,widget):
self.source = self.routes
self.sourcename = self.routes

#Выбираем textview, в который будет записано имя выбранного источника
destinationview = self.widgetsTree.get_widget(self.routes)
#В выбранный textview записываем имя выбранного источника
destinationview.get_buffer().set_text(self.sourcename)

#В переменную destination записываем двоичный код маршрутизации
def pushbutton_destination(self,widget):
destination = self.routes
#Выбираем textview, в который будет записано имя выбранного источника
destinationview = self.widgetsTree.get_widget(self.routes)
#В выбранный textview записываем имя выбранного источника
destinationview.get_buffer().set_text(self.sourcename)

#Открываем порт COM17 и записываем в него переменную total
ser = serial.Serial('COM17', 19200, dsrdtr = 1, timeout = 0)
ser.write(destination+'\r')
ser.close()

def close_app(self, widget):
gtk.main_quit()

if __name__ == “__main__”:
app = App()
gtk.main()

p.s. не судите строго, если вам покажутся какие-то моменты ламерскими - так оно и есть. это моя первая программа. Заранее благодарен.

Офлайн

#2 Апрель 26, 2016 19:24:37

DayFan
От:
Зарегистрирован: 2011-01-09
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

lu46e
Вы номер ком порта изменяете?



Офлайн

#3 Апрель 26, 2016 20:25:51

lu46e
Зарегистрирован: 2016-04-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

DayFan
lu46eВы номер ком порта изменяете?
да, конечно)

Офлайн

#4 Апрель 26, 2016 20:48:06

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

всякие случае бывают, начнем с того что провод может быть не правильно распаян. Порт на ноутбуке может быть не подходящий (RS232c что ли) . Правильно ли настрена скорость порта и совпадает ли она с тем что вы задаете в коде.
Дело в том что с точки зрения программирования что USB переходник что нативный COM порт не отличается.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Апрель 27, 2016 08:11:02

lu46e
Зарегистрирован: 2016-04-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

JOHN_16
всякие случае бывают, начнем с того что провод может быть не правильно распаян. Порт на ноутбуке может быть не подходящий (RS232c что ли) . Правильно ли настрена скорость порта и совпадает ли она с тем что вы задаете в коде.Дело в том что с точки зрения программирования что USB переходник что нативный COM порт не отличается.

я думаю в этом случае просто данные бы не посылались, а тут программа зависает… Неправильная распайка провода или неправильные настройки порта могут быть причиной зависания программы?

Офлайн

#6 Апрель 27, 2016 12:06:52

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

Вы бы для начала зацепились на ноуте на ком порт терминалом что бы убедится что все работает а потом уже пробовали код запускать(который уже и так понятно что писали не вы)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Май 4, 2016 08:45:15

lu46e
Зарегистрирован: 2016-04-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с COM-портом

ZerG
Вы бы для начала зацепились на ноуте на ком порт терминалом что бы убедится что все работает а потом уже пробовали код запускать(который уже и так понятно что писали не вы)

Зря Вы так, программу делал я сам. На основе нескольких примеров из инета, но, все же, сам.
За совет спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version