Tom,
Caveats: I've not tried connecting to an Arduino, and I've done almost nothing
with serial generally... so I don't really know what I'm talk about. But,
when I was working with GPS (which are USB with FTDI etc pretending to be
serial) I found two things:
a) I know this is obvious, but it really matters that you get the serial
parameters right - getting the right speed is only part of it, if you get the
rest wrong you may get it seeming to work but it will be unreliable. I've no
reason to think you haven't done this, I just thought it was worth mentioning.
b) More usefully perhaps, the code you quote below is reading from the port
until (rec)eol; I would expect that this may be where it's hanging (and
displaying the spinning pizza). The GPS unit was also supposed to speak to in
complete lines, but I found that rather than rely on this, I did better by
having a regularly scheduled task that read whatever was available on the
serial line, and added it to an internal buffer. Any time new data was read,
it then called another function to take all complete lines out of the buffer
and process them. This was using read from driver instead of read from file,
as the former allows you to issue a read command which returns either when a
certain quantity of date has been read (I settled on 10 lines at a time) or a
time limit has been exceeded. I'm not sure if you have the option to read
from driver instead of file, or whether you can use a similar mode with read
from file; but at any rate, I'd expect your spinning pizza might occur when
read from file is waiting for EOL.
HTH,
Ben
On 21/01/2011 06:19, Thomas McGrath III wrote:
Actually, as long as data is coming from the Arduino the app works. The data
comes in and fills the field. But after the data stops being sent the system
hangs. Until I push the button on the Arduino to send more data in which case
the beach ball goes away and the new data gets received again.
It's like as long as data keeps everything is fine. I can even close the port
in the middle of getting data but If it gets to the end of the current stream
the system hangs and I can't even close the port. I put code in to close the
port after data stops and that is working I think but the system still hangs
like it's waiting for more.
-- Tom McGrath III
http://lazyriver.on-rev.com
3mcgr...@comcast.net
On Jan 21, 2011, at 1:12 AM, Thomas McGrath III wrote:
OK well I can read the data from the USB Serial Modem -- but -- after it is
done the app hangs.
So I can open the port and then read the port and I think close the port but
the system hangs.
HELP.... ??
-- Tom McGrath III
http://lazyriver.on-rev.com
3mcgr...@comcast.net
On Jan 21, 2011, at 12:48 AM, Thomas McGrath III wrote:
It seems if I set the EOL to CRLF things work partly. i.e. The numbers show up
in the field BUT the script keeps looping and will not stop causing the beach
ball.
Sarah's code:
on readPort
if the hilite of btn "Port open" = true then
if recEOL is "empty" then resetEOL
put the label of btn "Port" into thePort
if the hilite of btn "OS X" then
read from file thePort until recEOL
else
read from file thePort until recEOL
end if
if it is not empty then put it after fld "recField"
if last char of fld "recField"<> cr then put cr after fld "recField"
send readPort to me in 5 ticks
end if
end readPort
-- Tom McGrath III
http://lazyriver.on-rev.com
3mcgr...@comcast.net
On Jan 21, 2011, at 12:05 AM, Thomas McGrath III wrote:
UPDATE: Something is working but makes no sense.
Found a few terminal screen ideas but they are outside of Livecode. No good.
Found a few applescript examples but would rather keep this crossplatform if
possible and a LC to OSC solution would work on iOS but applescript would not.
Not best but may have to go this route.
Found a few softwares that access the USB modem (not FTDI serial emulation) as
serial which leads me to believe LC can still do this even with the change from
software emulation of a serial port to the hardware emulation of a serial port.
So I looked again at Sarah's serialTest stack.
I had to manually add the /dev/tty.usbmodem1a21 and /dev/cu.usbmodem1a21 to the
popup menu. Then find replace driver with file in five places in the stack. Now
most of the other solutions use the tty but two use the cu so I tested both.
Major hang and LC not responding in Force Quit Window.
Command period no good.
Esc no good.
Force quit. quits but no good and driver may still be open.
Unplug Arduino Uno and plug it back in. HUH Serial Input Shows Up In Field
!!!!!! Beach ball of almost death goes away. Also port is now closed I think.
Also Arduino Tx led not lighting anymore - should be though. Wait replug
Arduino rest button on Arduino and serial Tx led is working again. But no
longer connected to LC. Try again. Open cu port and beach ball of almost death
shows up - LC not responding in Force Quit Window - Unplug Arduino and field
fills up with serial data. THe data is a bunch of 1 and 0 based on blinking led.
SO this seems to say it is connecting but not communicating well. Not knowing
enough about serial commands I am not sure what is causing the hang and not
responding??? They are both set to 9600. I read somewhere that the trailing bit
is or should be ignored.
Is there another way to connect via message box with out clutter from other
settings ? Any ideas on what the culprit is here?
Thanks for staying with me on this one.
-- Tom McGrath III
http://lazyriver.on-rev.com
3mcgr...@comcast.net
On Jan 15, 2011, at 10:37 PM, Mark Wieder wrote:
Jacque-
Saturday, January 15, 2011, 7:31:30 PM, you wrote:
There's no USB support per se, so if the device doesn't present itself
as a serial port device it won't work.
The path you use when you open a serial port as a file is the same one
you'd use in shell -- use the "/dev/tty.usbmodem1a21" path you
mentioned. Also, see if you can talk to it in shell just as a test.
That should work then, since the Arduino driver has always presented
itself as a serial port.
--
-Mark Wieder
mwie...@ahsoftware.net
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode