Форум сайта python.su
0
Всем привет!
Недавно столкнулся с необходимостью написать программу по управлению видеоматрицей по 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. не судите строго, если вам покажутся какие-то моменты ламерскими - так оно и есть. это моя первая программа. Заранее благодарен.
Офлайн
0
lu46e
Вы номер ком порта изменяете?
Офлайн
0
DayFanда, конечно)
lu46eВы номер ком порта изменяете?
Офлайн
221
всякие случае бывают, начнем с того что провод может быть не правильно распаян. Порт на ноутбуке может быть не подходящий (RS232c что ли) . Правильно ли настрена скорость порта и совпадает ли она с тем что вы задаете в коде.
Дело в том что с точки зрения программирования что USB переходник что нативный COM порт не отличается.
Офлайн
0
JOHN_16
всякие случае бывают, начнем с того что провод может быть не правильно распаян. Порт на ноутбуке может быть не подходящий (RS232c что ли) . Правильно ли настрена скорость порта и совпадает ли она с тем что вы задаете в коде.Дело в том что с точки зрения программирования что USB переходник что нативный COM порт не отличается.
Офлайн
61
Вы бы для начала зацепились на ноуте на ком порт терминалом что бы убедится что все работает а потом уже пробовали код запускать(который уже и так понятно что писали не вы)
Офлайн
0
ZerG
Вы бы для начала зацепились на ноуте на ком порт терминалом что бы убедится что все работает а потом уже пробовали код запускать(который уже и так понятно что писали не вы)
Офлайн