Hi Richard, maybe I'm wrong, but I think this is  not related to web2py at
all.
Arduino boards are build to make a reset whenever the port is open/reopen
so they change to "programming" state.
This is made on purpose, but it's trivial to avoid it. If using an Arduino
UNO board, just connecting a 10μF capacitor between RESET and GND will
avoid those resets. Just remember to remove the capacitor if you need to
re-program your board.

Hope this was the issue.
José L.

2016-11-26 16:58 GMT+01:00 Richard Brown <[email protected]>:

> I've now had chance to do some more investigation and research since my
> last posting and found the following. The reason that saving files in
> Web2py causes RTS to be asserted and makes my application work is that my
> file 'control.py', which contains all my serial functions, includes the
> lines:
>
> import serial
>
> ser=serial.Serial('/dev/ttyUSB0', 57600, timeout=1, xonxoff=0, rtscts=0)
>
>
> If I remove/comment out the line 'ser=serial.Serial... ' then the file
> save has no effect. Presumably Wb2py must be executing this line somehow as
> part of it's parsing process, and saving my other file 'utilities.py' has
> the same effect because it contains 'import * from control.py'.
>
> I have also been playing with the Pyserial functions ser.setRTS() and
> ser.rts, which should force the state of RTS. I have been running these
> from Python scripts in my user account and found that if reboot the
> Pi, save one of the files in Web2py to force RTS low, then execute ser.rts
> or ser.setRTS using my scripts, I can set RTS high or low and that state
> persists. However, if I reboot the Pi and run my script *without* saving
> the files in Web2py then run my scripts it only cause RTS to pulse low
> momentarily, presumably while the script is running. I've tried including a
> similar script within the Web2py 'modules' area, I've tried including the
> set.rts commands within my serial functions, I've tried a separate function
> just to include that command but nothing has done anything other than pulse
> RTS until the script/function ends. I haven't tried running a routine once
> at startup yet, but I'm not sure how this will be different from running
> scripts 'by hand', except as far as I am aware I cannot run scripts as
> the 'www-data' user as there is no login/password for that account, and I
> have a strange feeling that there must be some sort of ownership issue
> here. I have written/hacked scripts to run at startup to start the Web2py
> Scheduler and GPIOSever but this is all a bit close to the limits of my
> knowledge and ability!
>
> In summary, I am further forward in the sense that I understand why, if
> not how, Web2py file saves make my application work, although not why
> RTS gets set permanently low by this mechanism and not when the serial port
> is opened at any other time, and more information on what is happening here
> would be useful. I also know that there is a mechanism for changing the
> state of RTS, which it must be possible to do somehow, but have no real
> idea how to do it. I also now believe that keeping the port permanently
> open is not necessary, provided RTS can be forced low.
>
> So, any clues as to how I might be able to set RTS at startup will be
> gratefully received!
>
> Richard
>
>
>
>
>
> Richard
>
> On Friday, November 25, 2016 at 11:10:26 PM UTC, Dave S wrote:
>
>>
>>
>> On Friday, November 25, 2016 at 4:50:34 AM UTC-8, Richard Brown wrote:
>>>
>>> An update to this - I have done some more investigation and discovered
>>> that in the 'Not Working' scenario the RTS output is mostly high but goes
>>> low whilst the port is open, and in the 'Working' scenario the RTS output
>>> has somehow been forced low and so stays low when the port is opened.
>>> The Dongle gets reset by a high-to-low transition of RTS, so no falling
>>> edge, no Reset and everything works. For reference my Dongle uses an FTDI
>>> device (FT230X) and hence the FTDI driver supplied with the latest Raspbian
>>> (Jessie) release.
>>>
>>> The question now, therefore, is how Web2py forces RTS low - either by
>>> the saving of a file or when I access the index page of my Site, and How I
>>> can replicate this in the Scheduler code! Using 'touch' to update the file
>>> does not work, it has to be saved from within Web2py.
>>>
>>> Richard
>>>
>>
>> I can't imagine how saving the file causes RTS to go low.  Web2py should
>> not have any reason to do anything to the serial port on its own, and
>> probably doesn't even know the serial port exists (it's only concerned with
>> the console). (I haven't done any serial port handling under Ubuntu, nor on
>> the RaspberryPi, so I can't tell you about any special tricks such ports
>> need.)
>>
>> You may want to investigate having a separate program that gets started
>> on system startup, runs forever, and holds the serial port open all the
>> time.  It can check for a file existing, write the current value to the
>> file, and snooze again.  Your scheduled task would the create the file,
>> wait briefly, and then read the file to get the current value.
>>
>> I do know someone with a RaspberryPi, and he's a bit of hacker, but it
>> will be next week before I see him again.
>>
>> /dps
>>
>> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> 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/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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/d/optout.

Reply via email to