Покажи Публикации - NikolaiTalev
* Виж публикациите на потр. | Виж темите на потр. | Виж прикачените файлове на потр
Страници: [1] 2 3 ... 21
1  Програмиране / Общ форум / Проблеми след смяната на pyserial с pybluez -: Jun 28, 2014, 14:49
Здравейте
не съм много запознат с езика питон и за това с доста четене и труд успях да си свърша работата става въпрос за измервателен уред който първоначално работеше с УСБ кабел и pyserial библиотеката стана отлично, но се наложи да може да работи и безжично при което с доста пак гуглене успях да го пренапиша за bluetooth. Всичко беше идеално докато не реши че повече няма да се свърже, Пробвах на 5 линукс базирани PC-та с различни дистрибуции и версии на ядрата но ефекта беше същия. Пробвам ли да чета /dev/rfcomm2 
На снимката е 3.8


Код:
#!/usr/bin/env python

import serial
import datetime
import os


print '\nTalevtehnology DTM v1.0\n'

print 'Contecting...\n'
bluetoothSerial = serial.Serial( "/dev/rfcomm2", baudrate=57600 )

print '...Connected to DTM v1.0!'
os.system("sleep 1;")
bluetoothSerial.write('b')

print (str('\nBattery level: ') + str (bluetoothSerial.readline()))

os.system("hcitool rssi 00:06:66:67:4D:E0")

os.system("sleep 1;")
bluetoothSerial.write('r')
res = raw_input('\nChoice resolution: \n1 - 0.00 C\n2 - 0 C\n3 - floor 0.00 C\n')
if res == '1':
   bluetoothSerial.write('1')
elif res == '2':
   bluetoothSerial.write('2')     
elif res == '3':
   bluetoothSerial.write('3')

val = raw_input('\nChoice type value: \n1 - Normal \n2 - Max\n3 - Min\n')
if val == '1':
   bluetoothSerial.write('0')
elif val == '2':
   bluetoothSerial.write('x')     
elif val == '3':
   bluetoothSerial.write('n')

xString = input('\nEnter the number samples: ')
numberSamples = int(xString)

now = datetime.datetime.now()
os.system("mkdir -p /home/nikolai/DTM/$(date +%Y-%m-%d_%H:%M)")
os.system("cp /home/nikolai/plot.sh /home/nikolai/DTM/$(date +%Y-%m-%d_%H:%M)/plot.sh")

dataFile = open(now.strftime("/home/nikolai/DTM/%Y-%m-%d_%H:%M/data.dat"), 'w',0)

bluetoothSerial.flushInput()
bluetoothSerial.flush()
bluetoothSerial.flushOutput()
os.system("sleep 0.2;")
bluetoothSerial.write('1')

for i in range(0,numberSamples+1):

  reading0 = bluetoothSerial.readline()
 
  dataFile.writelines(str(i) + ' ' + str(reading0))

  print (str(i) + '   ' + str(reading0))

bluetoothSerial.write('0')

dataFile.flush()
dataFile.close()

bluetoothSerial.close()
print 'Done!\n'


След проблемите попаднах на pybluez и пренаписах кода с него но се натъкнах на няколко проблема

Код:
#!/usr/bin/env python

import sys
import datetime
import os
import bluetooth

bdaddr = '00:06:66:67:4D:E0' 
port = 1

print '\nTalevtehnology DTM v1.0\n'

print 'Contecting...\n'
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM)
sock.connect((bdaddr, port))
print '...Connected to DTM v1.0!'
sock.settimeout(2.0)
sock.send('m')
os.system("sleep 1;")
#tuka sock.flush()
sock.send('b')

print (str('\nBattery level: ') + str (sock.recv(256)))

os.system("hcitool rssi 00:06:66:67:4D:E0")

os.system("sleep 1;")
sock.send('r')

res = raw_input('\nChoice resolution: \n1 - 0.00 C\n2 - 0 C\n3 - floor 0.00 C\n')
if res == '1':
   sock.send('1')
elif res == '2':
   sock.send('2')     
elif res == '3':
   sock.send('3')

val = raw_input('\nChoice type value: \n1 - Normal \n2 - Max\n3 - Min\n')
if val == '1':
   sock.send('0')
elif val == '2':
   sock.send('x')     
elif val == '3':
   sock.send('n')

xString = input('\nEnter the number samples: ')
numberSamples = int(xString)

now = datetime.datetime.now()
os.system("mkdir -p /home/nikolai/DTM/$(date +%Y-%m-%d_%H:%M)")
os.system("cp /home/nikolai/plot.sh /home/nikolai/DTM/$(date +%Y-%m-%d_%H:%M)/plot.sh")

dataFile = open(now.strftime("/home/nikolai/DTM/%Y-%m-%d_%H:%M/data.dat"), 'w',0)


#tuka sock.flush()
sock.send('1')

for i in range(0,numberSamples+1):

  reading0 = sock.recv(256)
 
  dataFile.writelines(str(i) + ' ' + str(reading0))
 
  print (str(i) + ' ' + str(reading0))
 

sock.send('0')

dataFile.flush()
dataFile.close()

sock.close()
print 'Done!\n'


Проблема тук е че не мога да намеря аналог на bluetoothSerial.flush(). Прибора работи и със смартфони ползва bluetooth terminal и затова ми трябва начин за изчистването на sock
Другият проблем е
Код:
for i in range(0,numberSamples+1):

  reading0 = bluetoothSerial.readline()
 
  dataFile.writelines(str(i) + ' ' + str(reading0))

  print (str(i) + '   ' + str(reading0))

Че тук данните се записват правилно дори сигнала да е слаб данните пристигат правилно и без разместване
докато тук

Код:
for i in range(0,numberSamples+1):

  reading0 = sock.recv(256)
 
  dataFile.writelines(str(i) + ' ' + str(reading0))
 
  print (str(i) + ' ' + str(reading0))

са разбъркани и... сякаш липсва буфериране  ???


Свързването с pybluez е без проблемно. Моля ви помагайте изчетох какво ли не но не успявам да се справя.
2  Програмиране / Общ форум / Re: Запис на файл във цикъла (не селед изпълнението му) Python НОВО -: May 19, 2014, 10:41
Има няколко варианта dataFile.flush() след линията dataFile.writelines(...) или да направиш файла да не  се буферира още при отварянето dataFile = open('data.dat', 'w', 0) или да се буферира на линия dataFile = open('data.dat', 'w', 1). Ако покажеше как ползваш gnuplot-a, не съм видял може да има питон байдване, може да се мине и без писане във файл, а направо да си комуникират.

Мерси  :)  dataFile = open('data.dat', 'w', 0) свърши работа. Без писане във файл става или поне трябва да може но не знам как да го направя с gnuplot.py.
За сега съм пробвал само демотата след като го инсталирах.
В момента ползвам gnuplot така:

Код:
#!/bin/bash
echo "start" > /dev/ttyACM3
echo "Sampling..."
sleep 2;

gnuplot -persist -e "set xlabel 'време, sec';
set xrange [0:*];

set ylabel 'температура, °C';
set yrange [0:*];

set title 'Определяне на инертността';
set key reverse Left outside;
set grid;
 
set style data line;


plot 'data.dat' using 1:2 title 'Грил'"
#set autoscale;

echo "Done!"

Така ме устройва но ми се иска да направя да може да се задават параметри например numbersamples тъй като и идея си нямам от pyton и GUI си  мислех не може ли да се направи пак с bash и при стратирането да пита брой измервания име на дата файла ....

Моля всеки който има идея или някакво предложение да сподели  :D
3  Програмиране / Общ форум / Запис на файл във цикъла (не селед изпълнението му) Python -: May 17, 2014, 08:30
Код:
#!/usr/bin/env python

# import the serial module so we can access the serial port
import serial
import time
# set up serial port
serialPort0 = serial.Serial('/dev/ttyACM3', 57600)

# open file object in write mode
dataFile = open('data.dat', 'w')
 
# get number of samples to take
# don't prompt user --> piped in from bash script
numberSamples = 30

# get specified number of samples

print 'conected'



for i in range(numberSamples+1):
 

  reading0 = serialPort0.readline()
 
  dataFile.writelines(str(i) + ' ' + str(reading0)) # write sample number and reading to the file
 
  print i ,reading0 # output sample number to screen
 
# close file object, good practice
dataFile.close()

# close serial port to free it for other applications
serialPort0.close()


Идеята на този скрипт е да записва данни във файл които после да чертая с gnuplot но проблема е, че записва стойностите след края на цикъла for а на мен ми трябва стойност запис стойност запис ...
за да мога да гледам графиката в реално време. Със питон до сега съм се сблъсквал само един път едно скрипче за 3g трафик и ми е много тъмна индия.
4  Linux секция за начинаещи / Настройка на програми / Re: gnuplot показване на времето по Х в секунди -: May 14, 2014, 15:45
Пробвай с командите xrange/yrange
set xrange [0:86400] - това ти е един ден
пробвай с по-малка стойност примерно [0:3600]

Със yrange задавам температурната граница set yrange [0:210]
но ако задам и xrange се прецаква графиката освен ако входните данни не са в такъв вид:

0 193 208
1 192 207
2 192 206
3 189 206
4 186 205
5  Linux секция за начинаещи / Настройка на програми / gnuplot показване на времето по Х в секунди -: May 14, 2014, 14:04
Здравейте
от скоро започнах да си чертая графиките с gnuplot но така и не успявам времето по Х да е в секунди.

0 60 120 180 240 300 360 420

set xdata time
set timefmt "%d/%m/%Y %H:%M:%S"

set format x "%M:%S"

set xlabel "време, sec"


Входящите данни от .dat файла са в такъв формат:

06/05/2014 09:16:00  192  207

6  Linux секция за начинаещи / Настройка на хардуер / Re: Решение за ограничения мобилен интернет трафик? -: Mar 16, 2014, 12:00
Редно е след като искаш информация и ти да ни представиш такава  :), че то 3G модули много.
Какъв е твоя  ??? производител, модел ...
7  Linux секция за начинаещи / Настройка на програми / Re: Инсталиране на чист Firefox в Debian Testing -: Jan 05, 2014, 15:05
Ползвам го от както съм с Дебиан 7 stable (по описания метод) и си работи без грешка   :)
Само при инсталирането на някои програми се налагаше да махна хранилището и след инсталацията си го добавям пак за да ъпдейтва  лисицата

ПП: Забравих да напиша, че ползвам стабилната версия
8  Linux секция за начинаещи / Настройка на програми / Re: puppy linux - команди -: Jan 01, 2014, 19:15
http://puppylinux.org/wikka/BashCommands
9  Linux секция за начинаещи / Настройка на програми / Re: Проблем с Blueman под Manjaro -: Dec 30, 2013, 11:10
Bluedevil пробвал ли си го.
10  Linux секция за начинаещи / Настройка на програми / Re: Програма за запис на дискове -: Nov 26, 2013, 15:00
off// Windows лети единствено когато го хвърлиш през прозореца  ;D
11  Linux секция за начинаещи / Настройка на хардуер / Re: Помогнете да инсталирам PCI карта -: Nov 25, 2013, 20:17
Пробвах да принтя и не става,принтера си заспа след 5 минути,пробвах от браузъра,ама там има печат и настроики за печат,няма за добавяне на принтер,дава ми само печат към фаил,сигурно го запаметява да го принтя после.Боооже много съм бос с Линукса,за първи път се сблъсквам с тая ОС,харесва ми,искам да я ползвам,ама греда,има доста да уча и да чета.

Леле стана,не знам как,т.е. знам де,в системните настроики,настроиване на принтер,добавяне на нов принтер,модела на моя и т.н.
Преди два-три дена пробвах пак от там и не стана,не знам сега как стана,имаше ъпдейти на системата и други,може и това да е,не знам а трябва,ще чета по усилено и ще питам,ако имате нерви да отговаряте де.Благодаря за бързите отговори  [_]3 [_]3 [_]3

Станало е защото вече имаш инсталиран CUPS :)
12  Linux секция за начинаещи / Настройка на програми / Re: Инсталиране на линукс на флашка и стартиране от нея. -: Nov 22, 2013, 13:59

    Отваряш терминал и пишеш:

    sudo su
    apt-get install mbr
    fdisk -l за да разбереш кое устройство е твоята флашка
    install-mbr /dev/sdx (замени x със това на флашката ти)
13  Linux секция за начинаещи / Настройка на програми / Re: Software manager зависва в Линукс Минт 15 Оливиа -: Nov 21, 2013, 23:14
За убиване на процеса в линукс минт е: 
sudo killall mintinstall :-[

Ако искаш пробвай да го инсталираш на ново

sudo apt-get install --reinstall mintinstall

Успех!
14  Linux секция за начинаещи / Настройка на хардуер / Re: Modem Alcatel One Touch X500D -: Nov 19, 2013, 22:32
Странна работа. Врътни някакво Live CD (каквото имаш под ръка) и пробвай модема да видим дали ще се свърже  :)
15  Linux секция за начинаещи / Настройка на програми / Re: Conky бъг -: Nov 19, 2013, 22:15
@NikolaiTalev  оправиха се нещата  [_]3 [_]3


@bvbfan нужно ли е да го махам като вече проблема е решен ?

Ако работи коректно не.
Страници: [1] 2 3 ... 21