I am not sure what I am doing wrong, I also have no idea how to use NSTimer...I simply want to run a simple app, when you click Run...it loops a portion of the script (this is what I am trying to get NSTimer to do, and then when you click stop...it stops
So far I have this...
current application's NSTimer's timerWithTimeInterval_target_selector_userInfo_repeats_(1, me, "runOLEDWMESerial:", missing value, yes)
on runOLEDWMESerial_(sender)
set player_active to false
set theString to "Error;00:00:00:00"
tell application "Finder"
if (get name of every process) contains "NicePlayer" then set player_active to true
end tell
if player_active then
try
tell application "NicePlayer"
if ((count of movies) is not 0) then
tell front playlist
set theName to name
set curSeconds to elapsed time as integer
set theSeconds to duration as integer
set theHours to theSeconds div 3600
set theSeconds to theSeconds - theHours * 3600
set theMinutes to theSeconds div 60
set theSeconds to theSeconds - theMinutes * 60
set theDuration to ""
if theHours > 0 then
if theHours < 10 then set theHours to "0" & theHours
set theDuration to theHours & ":"
end if
if theMinutes < 10 then set theMinutes to "0" & theMinutes
if theSeconds < 10 then set theSeconds to "0" & theSeconds
set theDuration to theDuration & theMinutes & ":" & theSeconds
set curHours to curSeconds div 3600
set curSeconds to curSeconds - curHours * 3600
set curMinutes to curSeconds div 60
set curSeconds to curSeconds - curMinutes * 60
set curTime to ""
if curHours > 0 then
if curHours < 10 then set curHours to "0" & curHours
set curDuration to curHours & ":"
end if
if curMinutes < 10 then set curMinutes to "0" & curMinutes
if curSeconds < 10 then set curSeconds to "0" & curSeconds
set curTime to curTime & curMinutes & ":" & curSeconds
set theString to theName & ";" & curTime & ";" & theDuration
end tell
end if
end tell
on error errmsg
set theString to "Error2;00:00;00:00"
end try
end if
textName's setStringValue_(theName)
textTime's setStringValue_(curTime & "/" & theDuration)
end runOLEDWMESerial_
Yes I am sure my code is ugly, but essentially this is going to be sending data via a serial port which is the main objective here, however right now I am just trying to get the window to echo what is being played...
So runOLEDWMESerial is tied to a run button...when you click the run button the loop triggers once, but then stops...if I add a repeat around everything in on runOLEDWMESERIAL_(sender) with a delay(1) it works, but also becomes un responsive in the ui and I cannot stop it...So can somebody help me understand why NSTimer is not working
I actually figured it out... I had it backwords...runOLEDWMESerial_ was the button...but if you do it this way...I also had to remove the try section as that was not allowing it to work correctly
on ClickButton_(sender)
current application's NSTimer's timerWithTimeInterval_target_selector_userInfo_repeats_(1, me, "runOLEDWMESerial:", missing value, yes)
end Clickbutton_
on runOLEDWMESerial_()
set player_active to false
set theString to "Error;00:00:00:00"
tell application "Finder"
if (get name of every process) contains "NicePlayer" then set player_active to true
end tell
if player_active then
tell application "NicePlayer"
if ((count of movies) is not 0) then
tell front playlist
set theName to name
set curSeconds to elapsed time as integer
set theSeconds to duration as integer
set theHours to theSeconds div 3600
set theSeconds to theSeconds - theHours * 3600
set theMinutes to theSeconds div 60
set theSeconds to theSeconds - theMinutes * 60
set theDuration to ""
if theHours > 0 then
if theHours < 10 then set theHours to "0" & theHours
set theDuration to theHours & ":"
end if
if theMinutes < 10 then set theMinutes to "0" & theMinutes
if theSeconds < 10 then set theSeconds to "0" & theSeconds
set theDuration to theDuration & theMinutes & ":" & theSeconds
set curHours to curSeconds div 3600
set curSeconds to curSeconds - curHours * 3600
set curMinutes to curSeconds div 60
set curSeconds to curSeconds - curMinutes * 60
set curTime to ""
if curHours > 0 then
if curHours < 10 then set curHours to "0" & curHours
set curDuration to curHours & ":"
end if
if curMinutes < 10 then set curMinutes to "0" & curMinutes
if curSeconds < 10 then set curSeconds to "0" & curSeconds
set curTime to curTime & curMinutes & ":" & curSeconds
set theString to theName & ";" & curTime & ";" & theDuration
end tell
end if
end tell
end if
textName's setStringValue_(theName)
textTime's setStringValue_(curTime & "/" & theDuration)
end runOLEDWMESerial_