Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ожидание данных с com porta, работа с портом 
:(
    Опции темы
ishimcity
Дата 21.6.2014, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

Репутация: нет
Всего: 1



Уважаемые друзья, подскажите как быть, мне требуется чтобы скриптик сидел и слушал постоянно порт а полученые данные писал в базу, но вот никак не могу разобраться

Код

#!/usr/bin/python
import serial
import MySQLdb
import time
db=MySQLdb.connect("localhost","root","пароль","mysql") // подключаюсь к БД
cursor = db.cursor()
serialport = serial.Serial('/dev/ttyUSB0', 9600) // принимаю данные с comport
while 1:
    a = serialport.readline() // чтение пакета 1
    b = serialport.readline() // чтение пакета 2

sql = '''INSERT INTO home (tem, hum) VALUES (%s, %s)''' % (b,a) // пишем в базу
cursor.execute(sql)
db.commit()
db.rollback()
db.close()
serialport.close()


И так что у меня получается , все виснет в большом нескончаемом цикле))), как мне побороть это чтобы програмулинка сидела считвала с порта и писала в базу?
Если я пишу так то 

Код

serialport = serial.Serial('/dev/ttyUSB0', 9600,timeout=0) // принимаю данные с comport


то тогда БД ругается

если я убираю while 1: то все читается и пишется в базу но затем программа завершает работу тоесть получается один проход

Это сообщение отредактировал(а) ishimcity - 21.6.2014, 08:21
PM MAIL ICQ Skype YIM   Вверх
baldman88
Дата 23.6.2014, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 2
Всего: 7



Если судить по вашему коду, то цикл while будет выполняться вечно, то есть будут поочередно считываться переменные а и b, а вот до записи в бд дело никогда не дойдет. Это очень неудачное решение (использование бесконечного цикла), добавьте условие выхода из него. Ну и попробуйте сделать так:
Код
#!/usr/bin/python
import serial
import MySQLdb
import time
db=MySQLdb.connect("localhost","root","пароль","mysql") // подключаюсь к БД
cursor = db.cursor()
serialport = serial.Serial('/dev/ttyUSB0', 9600) // принимаю данные с comport
i = 0
while (i < 10):
    a = serialport.readline() // чтение пакета 1
    b = serialport.readline() // чтение пакета 2
    sql = '''INSERT INTO home (tem, hum) VALUES (%s, %s)''' % (b,a) // пишем в базу
    cursor.execute(sql)
    db.commit()
    db.rollback()
    i += 1
db.close()
serialport.close()

Так должно получиться 10 записей в базе.
Хотя я могу и ошибаться. И да, зачем вам модуль time?

Это сообщение отредактировал(а) baldman88 - 23.6.2014, 09:27
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.