Unsupported — We cannot guarantee that this software will work properly on Mac OS 10.8 and above. Please be careful.

Release: Serial IO, v20071219

Release Type: Beta
Version: 20071219
Release Notes

This update to the Serial IO beta addresses a few issues in the 20071218 beta.

Multiple patches should now be able to share the same device without causing the "Device or Resource Busy" messages. Hopefully it'll allow input and output to the same device from different patches.

It's also built against a 10.4 target, so it runs on Tiger without "_open$UNIX2003 symbol not found" errors.

Serial Devices are now closed when patches are deallocated.

Logging is a bit more uniform. Please continue to include Console.app output when reporting success or failure.

Otherwise, the interface is identical.

SerialIOPatch-20071219.zip34.29 KB

alexbeim's picture
It works

I shot a little video to demonstrate that it works. I was sending commands from my PC to my mac over a serial modem. For some reason the number 0 wouldn't send from my PC Also when sending data from QC it would just send one time when I pushed send but even with the send button pressed it wouldn't send any more until i pressed again. Video here http://www.vimeo.com/444458

cwright's picture
triggered send

The send is currently set up like a trigger: you press it once, it sends once. This seemed like a better idea than sending every frame while the input is True (it's easier to overflow the buffer without triggering).

Is this annoying? Is there a different way I should implement sending?

Thanks for testing and for the video :) It's cool to see something totally untested do something other than crash :)

cwright's picture
send on change?

After thinking about it for a bit, perhaps it could also send when the input string changes? (kind of like how the Directory Scanner rescans automatically when the input path changes).

Would this cause more problems than it solves? It's looking like a good plan to me, but I'm not as familiar with typical uses of serial stuff these days.

alexbeim's picture
times x second field

Because of my little experience with QC I don't know yet how to trigger the patch to send stuff, if I don't do it manually (i'm sure this is QC 101). But if there is a way, it would give control over how many times per second I want to send data. The limit for my device reading data is 20 frames per second, it would be great to have a number field in the patch from 1 to 60 that sets how many times per second sends. Though the other option may work for other projects, it would cash mine.

cwright's picture
triggers and fps

Consumer patches (red titled patches) don't get to pick how often they run, they run at the composition's frame rate. So if the animation slows it down, it'll send less frequently, and if it speeds up, it sends more frequently. We could thread it to get around this, but that adds more complexity.

To use the trigger, hook it up to the Mouse patch's Left or Right button, or look at the Keyboard patch to bind it to a specific Key. Or, make an LFO patch, and set it's type to "Square Wave", and it'll toggle the trigger periodically (set the period to 1/20 to get 20 toggles per second, limited by composition frame rate).

alexbeim's picture
Thank you the LFO patch

Thank you the LFO patch worked great, I was trying that yesterday but I wasn't using the right settings. It's amazing what you can do when you know how to do it :)

franz's picture
enttec USB DMX

hey, i just received my USB DMX hardware box today. Will it work with this patch ? (sorry, i haven't got the time to test it myself right now)

cwright's picture
sort of

It'll probably be able to connect, but DMX uses binary data, while this only uses typable strings; It would be difficult to send it valid data.

I was talking to smokris about making a binary data port, but we couldn't think of a use for it. Now we've got one.

Any ideas? :)

franz's picture
isn't this beta patch

isn't the serial beta patch somehow connected to this discussion : http://kineme.net/FeatureRequests/Open/write/readserialport ?

as smokris mentionned that he bought a DMX interface, i thought it was finally working...

cwright's picture

it's related. The problem last time we tried was getting the patch to talk to the serial port in a controlled manner at all (which we couldn't get working). This beta was initially for string input/output over the serial port, but now that we've got that under control, it's simple to pass binary data in and out. We just need some way to manipulate binary data within QC...

[I think the dmx device was purchased so we would have a device to test with before we needed it next summer...]

Installation Instructions

Place the plugin file in
/Users/[you]/Library/Graphics/Quartz Composer Patches/
(Create the folder if it doesn't already exist.)

Source code is available on GitHub.