Macintosh Auto-Uploader for MBED programs
 
I wrote a little "Folder Action" Applescript that automatically takes the downloaded xxx_LPC1768.bin files from the MBED compiler and copies them from my main downloads directory into the MBED and also moves them into an MBED directory under my downloads directory. True one-button operation: hit the Compile button in the MBED compiler, then hit the reset button.
 Just enable folder actions and attach this script to your downloads directory so that it is run when new files appear in that directory.
    
    
    
    
        
            
            
                
                    (*
This Folder Action handler is triggered whenever items are added to the attached folder.
The script will copy newly downloaded *_LPC*.bin files to the MBED, if any,
as well as moving the files to an MBED subdirectory.
By Ned Konz, ned@bike-nomad.com
February 13, 2010
License: MIT
*)
on adding folder items to this_folder after receiving these_items
	try
		set the destination_folder_name to "MBED"
		set the mbed_name to "/Volumes/MBED"
		set the mbed_folder to null
		set the mbed_directory to null
		set result_text to ""
		
		tell application "Finder"
			if not (exists folder destination_folder_name of this_folder) then
				make new folder at this_folder with properties {name:destination_folder_name}
			end if
			set the destination_folder to folder destination_folder_name of this_folder as alias
			set the destination_directory to POSIX path of the destination_folder
			(* set the mbed_folder to choose folder default location (POSIX file mbed_name) *)
			set the mbed_folder to (POSIX file mbed_name) as alias
			if (exists folder mbed_folder) then
				set the mbed_directory to POSIX path of the mbed_folder
			else
				set result_text to result_text & "Can't find " & mbed_name & return
			end if
		end tell
		
		repeat with i from 1 to number of items in these_items
			set this_item to item i of these_items
			set the item_info to info for this_item
			if this_item is not the destination_folder and ¬
				the name extension of the item_info is "bin" and ¬
				((the name of the item_info contains "_LPC1768") or (the name of the item_info contains "_LPC2368")) then
				set the item_path to the quoted form of the POSIX path of this_item
				set the destination_path to the quoted form of ¬
					(destination_directory & (name of the item_info))
				do shell script ("/bin/mv " & item_path & " " & destination_directory)
				set result_text to result_text & "moved " & item_path & " to " & destination_directory & return
			end if
			(* copy to the MBED itself *)
			if mbed_directory is not null then
				do shell script ("/bin/cp " & destination_path & " " & mbed_directory)
				set result_text to result_text & "copied " & item_path & " to " & mbed_directory & return
			end if
		end repeat
		
		display dialog result_text buttons {"OK"} default button 1
		
	on error the error_message number the error_number
		set the error_text to "Error: " & the error_number & ". " & the error_message
		-- the following line invokes the sub-routine to write the error into an error log created on the desktop
		-- if the file "MBED Copier Error Log.txt" already exists, it will add one line to the log
		my write_error_log(the error_text)
	end try
end adding folder items to
on write_error_log(this_error)
	set the error_log to ((path to desktop) as text) & "MBED Copier Error Log.txt"
	try
		open for access file the error_log with write permission
		write (this_error & return) to file the error_log starting at eof
		close access file the error_log
	on error
		try
			close access file the error_log
		end try
	end try
end write_error_log
                 
             
         
     
 
 
    
    
    
    
        
            
            
                
                    Amazing! Works just as advertised, just right click on the downloads folder, click setup folder actions, and then use that code as the script for the folder. Saves so much dragging :)
  
 Thanks!
                 
             
         
     
 
 
    
    
    
    
        
            
            
                
                    You're welcome! Why click and then drag when you can just click?
                 
             
         
     
 
 
    
    
    
    
        
            
                
                
                    
                    #
                    11 Oct 2013 . Edited: 11 Oct 2013
                        
                    
                 
                
             
            
                
                    Hi,
inspired by this I made a little Windows tool. If you find bugs or have suggestions please post. You run the tool and it does the rest so the only thing you need to do is click on "compile" and then the press the button of the mbed as soon as the "ding" is heard.
Simply enter the path and file name of source bin file, point to mbed and press run. It deletes the bin file after download to avoid the (1) in the file names. The file uploaded to mbed is always called code.bin so you dont have to bother if you have different names of source files.
Download at www.gearloose.net/mover.zip
                 
             
         
     
 
 
    
    
    
     You need to log in to post a comment 
     
    
(* This Folder Action handler is triggered whenever items are added to the attached folder. The script will copy newly downloaded *_LPC*.bin files to the MBED, if any, as well as moving the files to an MBED subdirectory. By Ned Konz, ned@bike-nomad.com February 13, 2010 License: MIT *) on adding folder items to this_folder after receiving these_items try set the destination_folder_name to "MBED" set the mbed_name to "/Volumes/MBED" set the mbed_folder to null set the mbed_directory to null set result_text to "" tell application "Finder" if not (exists folder destination_folder_name of this_folder) then make new folder at this_folder with properties {name:destination_folder_name} end if set the destination_folder to folder destination_folder_name of this_folder as alias set the destination_directory to POSIX path of the destination_folder (* set the mbed_folder to choose folder default location (POSIX file mbed_name) *) set the mbed_folder to (POSIX file mbed_name) as alias if (exists folder mbed_folder) then set the mbed_directory to POSIX path of the mbed_folder else set result_text to result_text & "Can't find " & mbed_name & return end if end tell repeat with i from 1 to number of items in these_items set this_item to item i of these_items set the item_info to info for this_item if this_item is not the destination_folder and ¬ the name extension of the item_info is "bin" and ¬ ((the name of the item_info contains "_LPC1768") or (the name of the item_info contains "_LPC2368")) then set the item_path to the quoted form of the POSIX path of this_item set the destination_path to the quoted form of ¬ (destination_directory & (name of the item_info)) do shell script ("/bin/mv " & item_path & " " & destination_directory) set result_text to result_text & "moved " & item_path & " to " & destination_directory & return end if (* copy to the MBED itself *) if mbed_directory is not null then do shell script ("/bin/cp " & destination_path & " " & mbed_directory) set result_text to result_text & "copied " & item_path & " to " & mbed_directory & return end if end repeat display dialog result_text buttons {"OK"} default button 1 on error the error_message number the error_number set the error_text to "Error: " & the error_number & ". " & the error_message -- the following line invokes the sub-routine to write the error into an error log created on the desktop -- if the file "MBED Copier Error Log.txt" already exists, it will add one line to the log my write_error_log(the error_text) end try end adding folder items to on write_error_log(this_error) set the error_log to ((path to desktop) as text) & "MBED Copier Error Log.txt" try open for access file the error_log with write permission write (this_error & return) to file the error_log starting at eof close access file the error_log on error try close access file the error_log end try end try end write_error_log