<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.docs.technorouters.com/index.php?action=history&amp;feed=atom&amp;title=Library_Functionality</id>
		<title>Library Functionality - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.docs.technorouters.com/index.php?action=history&amp;feed=atom&amp;title=Library_Functionality"/>
		<link rel="alternate" type="text/html" href="http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;action=history"/>
		<updated>2026-04-11T18:19:17Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.24.4</generator>

	<entry>
		<id>http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1783&amp;oldid=prev</id>
		<title>Efeldman at 20:27, 11 November 2011</title>
		<link rel="alternate" type="text/html" href="http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1783&amp;oldid=prev"/>
				<updated>2011-11-11T20:27:35Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:27, 11 November 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#When reading and writing files, make sure you're always reading the most recent line, or when writing, empty the file first. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#When reading and writing files, make sure you're always reading the most recent line, or when writing, empty the file first. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#Be sure to create a parser in both programs to handle all possible commands&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#Be sure to create a parser in both programs to handle all possible commands&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#If you will be using SAC to run G-code, you will likely want to implement the features in the [[SAC]] writup called [[SAC#get_sac_reset|get_sac_reset]] and [[SAC#sac_focus_loss|sac_focus_loss]]. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Efeldman</name></author>	</entry>

	<entry>
		<id>http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1779&amp;oldid=prev</id>
		<title>Efeldman at 14:37, 31 October 2011</title>
		<link rel="alternate" type="text/html" href="http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1779&amp;oldid=prev"/>
				<updated>2011-10-31T14:37:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 14:37, 31 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This is sometimes done via a DLL (Dynamic Link Library). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This is sometimes done via a DLL (Dynamic Link Library). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Given the rare and complex nature of these tasks, Techno has decided to implement a different methodology to enable this behavior. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Given the rare and complex nature of these tasks, Techno has decided to implement a different methodology to enable this behavior. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This new methodology removes the issues frequently found when using various compilers and OSes. This method is even able to work across a network and with different operating systems (linux, mac, etc)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Instead of writing code around the Techno DLL which can be difficult and time consuming, users are now advised to write a [[SAC]] script in the techno cnc interface with the ability to communicate with external software via two files dynamically stored on the hard disk. This allows for extreme flexibility, robustness and ease of programming. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Instead of writing code around the Techno DLL which can be difficult and time consuming, users are now advised to write a [[SAC]] script in the techno cnc interface with the ability to communicate with external software via two files dynamically stored on the hard disk. This allows for extreme flexibility, robustness and ease of programming. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;One file is used to send commands and data from the custom software to the SAC portion of the CNC interface, and another file is used to send commands and data from SAC to the custom software. While this could be done with only one file, it is far simper to use two files. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In most local software cases, SAC can be used to launch the custom software and initiate the process. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Some example code for reading and writing the communication files from SAC is below. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Things to keep in mind:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Things to keep in mind:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Efeldman</name></author>	</entry>

	<entry>
		<id>http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1778&amp;oldid=prev</id>
		<title>Efeldman at 18:33, 24 October 2011</title>
		<link rel="alternate" type="text/html" href="http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1778&amp;oldid=prev"/>
				<updated>2011-10-24T18:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:33, 24 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''Library Functionality'''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This is sometimes done via a DLL (Dynamic Link Library). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This is sometimes done via a DLL (Dynamic Link Library). &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Efeldman</name></author>	</entry>

	<entry>
		<id>http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1777&amp;oldid=prev</id>
		<title>Efeldman: Created page with &quot;'''Library Functionality'''  Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.docs.technorouters.com/index.php?title=Library_Functionality&amp;diff=1777&amp;oldid=prev"/>
				<updated>2011-10-24T18:32:55Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Library Functionality&amp;#039;&amp;#039;&amp;#039;  Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Library Functionality'''&lt;br /&gt;
&lt;br /&gt;
Systems Integrators and other power users sometimes need to implement communication between the Techno CNC Controller and other custom software. This is sometimes done via a DLL (Dynamic Link Library). &lt;br /&gt;
&lt;br /&gt;
Given the rare and complex nature of these tasks, Techno has decided to implement a different methodology to enable this behavior. &lt;br /&gt;
&lt;br /&gt;
Instead of writing code around the Techno DLL which can be difficult and time consuming, users are now advised to write a [[SAC]] script in the techno cnc interface with the ability to communicate with external software via two files dynamically stored on the hard disk. This allows for extreme flexibility, robustness and ease of programming. &lt;br /&gt;
&lt;br /&gt;
Things to keep in mind:&lt;br /&gt;
#When reading and writing files, make sure you're always reading the most recent line, or when writing, empty the file first. &lt;br /&gt;
#Be sure to create a parser in both programs to handle all possible commands&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'Example of executing a program...&lt;br /&gt;
Set WshShell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
WshShell.Run (&amp;quot;%windir%\notepad&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'EXAMPLE OF READING AND WRITING TO SEPARATE FILES FOR COMMUNICATION PURPOSES &lt;br /&gt;
'file reading/writing stuff:&lt;br /&gt;
'http://msdn.microsoft.com/en-us/library/czxefwt8%28v=vs.85%29.aspx&lt;br /&gt;
&lt;br /&gt;
DIM SERIAL_NUMBER&lt;br /&gt;
DIM TEXT_FROM_FILE&lt;br /&gt;
SERIAL_NUMBER=1&lt;br /&gt;
&lt;br /&gt;
SENDTEXT (&amp;quot;COMMUNICATION&amp;quot;)&lt;br /&gt;
READTEXT ()&lt;br /&gt;
MSGBOX(&amp;quot;File contents = &amp;quot;&amp;amp; TEXT_FROM_FILE )&lt;br /&gt;
&lt;br /&gt;
MSGBOX(&amp;quot;Operations Complete!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PUBLIC FUNCTION SENDTEXT (TEXT_TO_SEND)&lt;br /&gt;
DIM FSO, FILEOBJECT&lt;br /&gt;
   Set FSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
   If FSO.FileExists(&amp;quot;C:\SAC_TO_INTERFACE.TXT&amp;quot;) Then &lt;br /&gt;
      'SOMETHING HERE IF YOU DIDN'T KNOW THE FILE EXISTED&lt;br /&gt;
   Else&lt;br /&gt;
      'SOMETHING HERE IF YOU EXPECTED IT TO EXIST AND IT DOESN'T&lt;br /&gt;
   End If&lt;br /&gt;
   'CREATE OR REPLACE THE EXISTING FILE&lt;br /&gt;
   Set FileObject = FSO.CreateTextFile (&amp;quot;C:\SAC_TO_INTERFACE.TXT&amp;quot;)&lt;br /&gt;
   FileObject.WriteLine TEXT_TO_SEND &amp;amp; &amp;quot;|| &amp;quot; &amp;amp; SERIAL_NUMBER &amp;amp; &amp;quot; ||&amp;quot; &amp;amp; Now()&lt;br /&gt;
   SERIAL_NUMBER = SERIAL_NUMBER +1&lt;br /&gt;
   FileObject.Close()&lt;br /&gt;
END FUNCTION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PUBLIC FUNCTION READTEXT ()&lt;br /&gt;
DIM FSO, FILEOBJECT&lt;br /&gt;
&lt;br /&gt;
   Set FSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
   If FSO.FileExists(&amp;quot;C:\INTERFACE_TO_SAC.TXT&amp;quot;) Then &lt;br /&gt;
      'GOOD, IT SHOULD. &lt;br /&gt;
   Else&lt;br /&gt;
      MSGBOX(&amp;quot;FILE IS NOT PRESENT! IF YOU ARE TESTING, MAKE A FILE WITH SOME STUFF IN IT.&amp;quot;)&lt;br /&gt;
      'ERROR HANDLING&lt;br /&gt;
      EXIT FUNCTION&lt;br /&gt;
   End If&lt;br /&gt;
   &lt;br /&gt;
   'OPEN THE EXISTING FILE&lt;br /&gt;
   Set FILEOBJECT = FSO.OpenTextFile(&amp;quot;C:\INTERFACE_TO_SAC.TXT&amp;quot;, 1)&lt;br /&gt;
   TEXT_FROM_FILE = FILEOBJECT.ReadLine&lt;br /&gt;
   FILEOBJECT.Close&lt;br /&gt;
   'Delete the line from the other software after you're sure it has been read here&lt;br /&gt;
   'Otherwise, be sure to read the last line of the file when you read.&lt;br /&gt;
   'Send TEXT_FROM_FILE to your parser&lt;br /&gt;
END FUNCTION&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;/div&gt;</summary>
		<author><name>Efeldman</name></author>	</entry>

	</feed>