Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Python - odeslání dat přes tlačítk

Python - odeslání dat přes tlačítk

C,C++,C#

Moderátori: psichac, Moderátori

Python - odeslání dat přes tlačítk

Odoslaťod jirka.jirka. » 09 Okt 2017, 11:52

Zdar borci a borkyně :)

Mám drobný problém. V pythonu nejsem moc zdatný. A tak bych potřeboval pomoci. Vytvořil jsem si okno, ve kterém mám dvě tlačítka.
Na každé chci odeslat po kliknutí odeslat data po sériovce. V hlavní smyčce pouze data vyčítám.

Po kliknutí se data odešlou, ale program zamrzne. Tak se chci zeptat, jestli zde někdo nenajde chybu, popř. nepomůže mi ji odhalit. Vypadá to, jako by se nechtěl vrátit zpět do whilu. Ale když jsem ten samý program testoval s výpisem do konzoly, tak vše fungovalo. Ale jakmile jsem přidal sériovku, tak jsem v kaši. Využívám knihovny VPython.

Jenom dodám, sorry, že to dávám do C/C++, ale pro python jsem nenašel flek a když se jedná o programování, tak se to tomu asi nejvíc blíží.Díky moc

Kód: Vybrať všetko
#!python
# -*- coding: utf-8 -*-

from visual import *
from visual.controls import *
from visual.graph import *
import wx
import serial
import string
import math
import sys
from time import time
import numpy as np
import config


# Navaz spojeni, jinak nahlas chybu
try:
   ser = serial.Serial(port='COM10',baudrate=115200, parity=serial.PARITY_NONE, stopbits=1, timeout=None)
   ser.write("AHOJ")
except:
   print "ERROR"

#tlacitko pro odeslani initu
def sendInit(evt):
   try:
      ser.write("NEEEE")
   except:
      print "navaz spojeni blbe"
   print "odeslano"

#tlacitko pro opetovne navazani
def connect(evt):
   try:
      ser = serial.Serial(port='COM10',baudrate=115200, parity=serial.PARITY_NONE, stopbits=1, timeout=None)
      ser.write("Stisknuto")
   except:
      print "HOUSTNE mame problem"
   print "odeslano"

#vytvoreni panelu s tlacitky
w = window(width=480, height=320, menus=False, title='Controls', x = 10, y = 650,style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
p = w.panel
#definice tlacitek
#   Init tlacitko
Init = wx.Button(p, label='Send Init', pos=(10,10))
Init.Bind(wx.EVT_BUTTON, sendInit)
#   Reconnect tlacitko
ReConnect = wx.Button(p, label='Re-connect', pos=(10,40))
ReConnect.Bind(wx.EVT_BUTTON, connect)

#nekonecnik
while 1:
   try:
      s=ser.read(6)
      ss=np.fromstring(s, dtype=np.int8, count=6)
      A1=ss[0]
      A2=ss[1]
      A3=ss[2]
      A4=ss[3]
      A5=ss[4]
      A6=ss[5]
   except:
      print "data nechodi"

   print A1
   print A2
   print A3
   print A4
   print A5
   print A6
   
   rate(20)
ser.close
jirka.jirka.
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 894
Založený: 17.10.2008
Bydlisko: Zlín
Karma: 9

Re: Python - odeslání dat přes tlačítk

Odoslaťod Tribec Zacks » 09 Okt 2017, 13:17

zdar jirka, potrebujes strcit obsluhu serialu do samostatneho vlakna kedze python je interpretovany a vykonava sa riadok po riadku vsetko co v nom napises a serial komunikacia ti preto inak blokuje cely program. tu som ti nasiel pekne uplne minimum na stackoverflowe ako na to. ak si takto vytvoris vlakno serialu, tak potom komunikujes s tym vlaknom. ak by ti ten priklad bol malo tak google: "python serial threading queue" najdes toho viac a aj viac vysvetleneho.

https://stackoverflow.com/questions/175 ... -read-loop
viem, ze nic neviem, ale iste viem, ze viem viac ako ti co nevedia nic.
Tribec Zacks
Obrázok používateľa
Stály člen
Stály člen
Príspevky: 437
Vek: 35.16
Založený: 26.06.2010
Bydlisko: Levice / Leixlip IRL
Karma: 19


Naspäť na C,C++,C#

Kto je prítomný

Užívatelia prezerajúci si toto fórum: Žiadny registrovaný používateľ a 1 hosť.

Forums ©
Autor stránky je Ondrej Závodský(zawin), o graficky design sa stará Ľuboš Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
Čas potrebný k spracovaniu stránky 0.12 sekúnd