I'm not an expert in web2py, but this one approach I think should work
for your application. If others have better ways of doing it, please
share them:
def readfile():
'''
returns the file to be read
'''
response.view = '/path/to/file_to_be_read.txt'
return locals()
def writefile():
'''
writes the values of the form in basic, unescaped CSV format
'''
form = SQLFORM.factory(
Field('name'),
Field('choice', requires=IS_IN_SET(['1','2','3'], zero=None)),
)
if form.validate():
fh = open('path/to/file_to_write_to.txt', 'w')
fh.write(','.join(form.vars.values()))
fh.close()
response.flash = 'Your data has been submitted'
return dict(form=form)
It sounds like in your application, you are reading the serial port at
fixed periodic intervals and writing the data to a file. If you only
need to read or write to it when a user requests a page, this is what I
was suggesting instead:
def readdata():
'''
read data from serial port and return it in a view
see the Python PySerial module documentation for details
'''
import serial
try:
ser = serial.Serial('/dev/ttyS1', 19200, timeout=1)
data = ser.readline() # read a '\n' terminated line
ser.close()
except:
data = 'cannot read serial port'
return dict(data=data)
writing to the serial port would be just as easy:
def writedata():
'''
writes form values in basic, unescaped CSV to the serial port
'''
import serial
form = SQLFORM.factory(
Field('name'),
Field('choice', requires=IS_IN_SET(['1','2','3'], zero=None)),
)
if form.validate():
try:
ser = serial.Serial('/dev/ttyS1', 19200, timeout=1)
ser.write(','.join(form.vars.values()))
ser.close()
response.flash = 'Your data has been written'
except:
response.flash = 'Cannot write to serial port'
return dict(form=form)
HTH,
-Jim
----- Kenneth Lundström <[email protected]> wrote:-----
> Hello,
>
> only one max two clients at a time will access this page. I don't
> even see why two clients would be accesing this page if not a
> supervisor wants to check on the progress of an worker.
>
> Jim, not quite sure how to do what you suggest. The serial
> communication is using an special protocol that the app reads and
> creates an text file from.
>
> The app stores also everything in the database but I thought it
> would be more efficient for this page to get the info from an text
> file. There will be many other pages that will be using mobile
> jquery with an normal menu that reads data from the database, but
> this one special page will be just a blank page showing the content
> of the file if I can't find out how to reload just the part of the
> page that shows the text file. Was thinking using PHP to show that
> page.
>
>
> Kenneth
>
>
> >Now many clients need to access this at one time? The issue is the
> >workload on the pi.
> >
> >On Friday, 16 August 2013 17:40:29 UTC-5, Kenneth wrote:
> >
> > Hello everyone,
> >
> > I'm planing on running web2py on an Raspberry Pi. On the computer
> > there will also be an app that listens on the serial port and
> > writes the results into an text file.
> >
> > I'd like to create an extremly simple page where only the content
> > of the file is shown and having the page to reload like once every
> > second. This page will be shown from mobile ones or tablets over
> > GPRS or 3G.
> >
> > Is it possible to create an page so every reload doesn't
> > re-execute the controller and models just re-reads the text file
> > and shows it.
> >
> > To controll that app I'd like to sends commands by writing them
> > into an text file that the app reads. This shouldn't be too hard?
> >
> >
> > Kenneth
> >
> >--
> >
> >---
> >You received this message because you are subscribed to the Google
> >Groups "web2py-users" group.
> >To unsubscribe from this group and stop receiving emails from it,
> >send an email to [email protected].
> >For more options, visit https://groups.google.com/groups/opt_out.
>
> --
>
> --- You received this message because you are subscribed to a topic
> in the Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/_jYbslU46R4/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.