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

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

Зря Вы так, программу делал я сам. На основе нескольких примеров из инета, но, все же, сам.
За совет спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB