python - pyserial reading serial port and show on web page in flask -


i want read , write data serial port pyserial in flask. want through web page. codes 1 below. writing data on web page without problems, can not read data, runtime error during reading. how can implement solution?

i'm trying ways read data serial port. not know best way me. best way me display data serial port user connected web page?

i received error:

   0 def serial runtime error exception in thread thread-1: traceback (most recent call last):   file "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner     self.run()   file "/usr/lib/python2.7/threading.py", line 505, in run     self.__target(*self.__args, **self.__kwargs)   file "__init__.py", line 46, in serialread     return jsonify(result='serial runtime error')   file "/usr/local/lib/python2.7/dist-packages/flask/json.py", line 251, in jsonify     if current_app.config['jsonify_prettyprint_regular'] , not request.is_xhr:   file "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 347, in __getattr__     return getattr(self._get_current_object(), name)   file "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 306, in _get_current_object     return self.__local()   file "/usr/local/lib/python2.7/dist-packages/flask/globals.py", line 51, in _find_app     raise runtimeerror(_app_ctx_err_msg) runtimeerror: working outside of application context.  typically means attempted use functionality needed interface current application object in way.  solve set application context app.app_context().  see documentation more information. 

python code:

 app = flask(__name__)     app.secret_key = "asds"      @app.route('/run_write', methods=["get","post"]) def serialwrite():              print "click"             message="selam zafer"             if request.method == "post":                 attempted_writedata = request.form['writedata']                 message=attempted_writedata             try:                 if seri.isopen():                     print "serial open!"                     seri.write(message)                     session['serial_write'] = true                     flash(message+" mesajiniz gonderildi..",'write')                     return redirect(url_for("usart"))             except exception e:                     session['serial_write'] = false                     flash(message+" mesajiniz gonderilemedi...",'write')                     return redirect(url_for("usart"))  def serialread():         data ="" #        seri = serial.serial(port = "/dev/ttyo1", baudrate=9600) seri.close() seri.open()         while 1:                 if seri.isopen():                  try: #                       seri.write("hello")                         data=seri.read()                         print data             if data:                 #flash(data,'read')                 return jsonify(result=data)                  except runtimeerror:                         print 'def serial runtime error'                         return jsonify(result='serial runtime error')                         seri.close()                  except keyboardinterrupt:                         print 'def serial klavye hatasi'                         seri.close()   @app.route('/background_process') def background_process():     try:                 print 'background '         threadserial = thread(target=serialread) #       threadserial.daemon = true         threadserial.start()         return jsonify(result='serial runtime error')     except exception e:         flash(e)    @app.route('/') def homepage():     try:         return render_template("pages/beagle.html")     except exception e:         flash(e)  @app.route('/usart/',methods=["get","post"]) def usart():     #return ("hi")     if not seri.isopen():         flash("seri baglanti kurulamadi",'connect')         session['serial_con'] = false     else:         flash("seri baglati basarili",'connect')         session['serial_con'] = true      return render_template("pages/usart.html")    if __name__ == "__main__":     uart.setup("uart1")     seri = serial.serial(port = "/dev/ttyo1", baudrate=9600)         seri.close()         seri.open()      try:          app.run(host='0.0.0.0', port=8082)     except serialexception e:         pass 

and web page code

   {% extends "pages/beagle.html" %}  {% block body %}  <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>         <script type=text/javascript>             $(function() {               $('a#process_input').bind('click', function() {                 $.getjson('/background_process', function(data) {                   $("#result").text(data.result);                 });                 return false;               });             });         </script>  </head>  <body class="body">    <div id="page-wrapper">             <div class="row">                 <div class="col-lg-12">                     <h1 class="page-header">beaglebone communation</h1>                 </div>                 <!-- /.col-lg-12 -->             </div>             <!-- /.row -->             <div class="row">                 <div class="col-lg-12">                     <div class="panel panel-default">                         <div class="panel-heading">                              usart data                         </div>                         <div class="panel-body">                             <div class="row">                                 <div class="col-lg-6">                                  <div class="panel panel-default">                                     <div class="panel-heading">                                     read data beaglebone                                     </div>                                         <div class="panel-body">                                             <label>send data input</label>                                             <form class="form-signin" action="/run_write" method="post" role="form">                                             <input name="writedata" class="form-control">                                             <p class="help-block">writing data via usart on beaglebone.</p>                                             <button type="submit" class="btn btn-primary btn-lg btn-block">send button</button>                                             {% messages= get_flashed_messages(category_filter=["write"]) %}                                             {% if messages %}                                             {% message in messages %}                                               {% if session.serial_write %}                                                  <div  class="alert alert-success alert-dismissible pull-right" role="alert" style="position: relative;">                                                   <button type="button" class="close" data-dismiss="alert" aria-label="close"<span aria-hidden="true">&times;</span></button>                                                  {% else %}                                                   <div  class="alert alert-danger alert-dismissible pull-right" role="alert" style="position: relative;">                                                   <button type="button" class="close" data-dismiss="alert" aria-label="close"<span aria-hidden="true">&times;</span></button>                                                  {% endif %}                                                  {{message}}                                                  </div>                                              {%endfor%}                                              {% endif %}                                              {% endwith %}                                             </form>                                         </div>                                            <!-- <button type="reset" class="btn btn-default">reset button</button> -->                                     </div>                                 </div>                                 <!-- /.col-lg-6 (nested) -->                                 <div class="col-lg-6">                      <div class="panel panel-default">                             <div class="panel-heading">                             read data beaglebone                             </div>                         <div class="panel-body">                              <!-- <h2>heading 2 -->                                 <!-- <small>sub-heading</small> -->                             <!-- </h2> -->                             <h3>value read:                                 <form>                                 <small id= result  name=proglang></small>                                 <a href='#' id=process_input> <button type="submit" class="btn btn-primary btn-lg btn-block">start read </button></a>                                  </form>                             </h3>                           </div>                         <!-- /.panel-body -->                     </div>                     <!-- /.panel -->                 </div>                                 </div>                                 <!-- /.col-lg-6 (nested) -->                             </div>                             <!-- /.row (nested) -->                         </div>                         <!-- /.panel-body -->                     </div>                     <!-- /.panel -->                 </div>                 <!-- /.col-lg-12 -->             </div>             <!-- /.row -->         </div>         <!-- /#page-wrapper -->  </body>  {% endblock %} 

thank much


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -