November 9, 2015 at 11:36 #625
Firstly, I want to say thank-you for an overall brilliant program… super flexible, easy to pick up; it’s been brilliant for me.
I have encountered (and worked around) a couple of issues that I encountered that could improve the program-
(Running on Windows 7:)
I have a couple of timed scripts that operate every 500ms to poll various equipment to update some global variables, and run some commands (unfortunately the devices need to be polled to give up this information).
The first issue is to do with blocking- V-Control seems to block a device rather than a Channel- so if I’m polling a device every 500ms, anything else I try to do with that device is very likely to be blocked. The only way around this seems to be to create another duplicate device on another channel to do that work.
The second issue is a UI issue- when running a Cuelist or a script, the program will automatically highlight and change focus to that Cuelist or script in the UI- this makes typing in and updating other scripts very difficult- and as there is no “Undo” function, I frustratingly lost things I was typing on a regular basis 🙁 It would be great to find a way to highlight these lists, steps, scripts and events without changing the window’s focus.
Hopefully if I get a chance, I can have a look in to the source behind the app- again, it’s a brilliant app, and one I’d love to see further development on 🙂
– KyeNovember 9, 2015 at 11:37 #626
first of all thank you for the compliment. Positive feedback is always a good reason to go on with the development.
In fact you are right concerning the blocking. If a device is used, both, the device and the channels(s) are blocked. I did this for security reasons. It is clear that in a multi threading environment a resource can not be used by two threads at the same time, so channel blocking is a must have to avoid crashing or getting undefined results. The reason why I also use device blocking is just to make absolutely sure to guarantee that this can not happen. If you need to control two (or more) physical devices (means devices that are present as hardware) at the same time, the work around is exactly what you did. Create a device in V-Control for every physical device and apply a channel to this device. It is not so hard for me to change this behavior and give up device blocking but: V-Control is used in many shows and events where stability is more important than user friendly.
Concerning your GUI issue: I’m not sure if I understand that (sorry, no native english speaker). A running cuelist should highlight the current item only if the cuelist is visible (selected). If another cuelist is selected, there should be no focus change. In a script there is no focus change at all. And: it should not be possible to edit a running task, neither cuelist or script. If you can do this it is a bug that I will solve asap. Can you attach your project file to help me understand what you are doing?
The undo function is unfortunately still missing. It is on the to do list, but at this time I can not say when it is implemented.
Regards, DierkNovember 9, 2015 at 11:42 #627
Thanks- I understand making stability the main concern for device blocking; as I said, the workaround is fine 🙂 Just to clarify, I’m talking about one physical device (over TCP- so I just end up creating two instances of the device on seperate TCP connections; one to poll and one to run commands).
Regarding the GUI issue- as an example- in the main window, in the “Events” list under Scripts. If I have two events set to run every 500ms- when each of those events fire/run, the individual event is highlighted in the list and takes focus. So clicking one particular event to edit it becomes a bit of a game of chance as to which event I’ll actually be effecting (which event will have focus in the window) when I click.November 9, 2015 at 11:43 #628
I still can’t figure out why you are using two devices for the same physical device. Is it possible to send your project file?
Regarding the GUI issue: OK, now I understand your problem. I try to find a solution for that.November 9, 2015 at 11:43 #629
I have a device where I need to know what channel is is currently on, in order to run a task when it switches to a particular channel.
The device doesn’t send events, so it needs to be polled for that info.
While the poll is happening, the device is blocked, so nothing else can be done with it (change aspect ratios, input settings, etc)
So it becomes complete chance if any other request gets through, or fails because the device is blocked at that time.November 9, 2015 at 11:43 #630
OK, now I understand. I think the only way to solve that is to implement a function that allows to stop and start the timer programmatic. Then you can stop the timer before sending a command and start the timer again after finishing. I think this is a necessary enhancement of V-Control and work on that is in progress. I will take maybe one or two weeks before I’m ready with that.
DierkNovember 9, 2015 at 11:44 #631
OK, it goes faster than expected. Today I released V-Control 3.7.13 with this changes:
Threads are not allowed to make GUI updates any more. Instead of making GUI updates, the thread statuses are written to a list (EngineEventList). A Timer reads this list and updates the GUI as instructed in this list. A new label “Engine Event Message Stack” under the Acknowledge list shows the number of waiting messages in the queue.
HexCalc window closes now on V-Control shutdown if the window was visible.
PromptMessage command removed
Timer Events can now be disabled or enameled by script or cuelist.
New Main Menu item “Events→ Disable All Timer Events”
New Main Menu item “Events→ Enable All Timer Events”
New Contextual Menu Item in Cuelists “Disable Timer Event”
New Contextual Menu Item in Cuelists “Enable Timer Event”
New Contextual Menu Item in Scipts “Disable Timer Event”
New Contextual Menu Item in Scipts “Enable Timer Event”
- You must be logged in to reply to this topic.