<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2079058808839696112</id><updated>2012-02-24T06:49:06.320+05:30</updated><category term='C#.Net'/><category term='Pinout n Working'/><category term='C/C++'/><category term='Parallel Port'/><title type='text'>Jaspreet's Code Zone</title><subtitle type='html'>Parallel Port Interfacing.
Parallel Port Programming.
Programming in C/C++ &amp;amp; C#.Net</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-6572479064289006706</id><published>2008-06-20T18:45:00.001+05:30</published><updated>2010-08-10T20:58:29.185+05:30</updated><title type='text'>Launch an Application at Windows Startup</title><content type='html'>&lt;span style=";font-family:verdana;font-size:130%;"  &gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;C#.Net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt; Introduction&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div  style="text-align: justify;font-family:arial;"&gt;&lt;span id="intelliTxt"&gt;There are a number of ways by which a program can be launched   automatically at Windows startup. We can write the path and name of the program to   &lt;i&gt;autoexec.bat&lt;/i&gt; or use Win32 API functions to write to the Load= or   Run= lines of &lt;i&gt;Win.ini&lt;/i&gt;.  &lt;/span&gt;But the better methods to do the same are to use&lt;span id="intelliTxt"&gt; the registry or the system's Startup folder.  &lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;The Startup folder method is easy to use as we just need to place a shorcut of the application we want to run, in the &lt;/span&gt;&lt;span id="intelliTxt"&gt;system's Startup folder&lt;/span&gt;&lt;span id="intelliTxt"&gt;. To prevent that&lt;/span&gt; application  from running at startup we can simply remove its shortcut from the system's Startup folder.&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;To use the registry we need to write the   startup information in a specific registry key. We can write a value entry to any of the following registry keys as per requirement:-&lt;/span&gt; &lt;ol  style="font-weight: bold;font-family:arial;"&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;&lt;dt&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run&lt;br /&gt;&lt;span style="font-weight: normal;" id="intelliTxt"&gt;Used to launch a program when a particular user logs in.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/dt&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Used to launch a program the next time when a particular user logs in and then removes its value   entry from the registry.&lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run&lt;br /&gt;&lt;/span&gt;&lt;span id="intelliTxt"&gt;&lt;span style="font-weight: normal;" id="intelliTxt"&gt;Used to launch a program at system startup irrespective of the user who logs in.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Used to launch a program the next time when system starts and then removes its value   entry from the registry.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:arial;"&gt;I have used the above 4 registry keys  &lt;/span&gt;to add/remove a program from system's Startup and developed a small library named "StartupApplication" to do so.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Using the Library "StartupApplication"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Below &lt;/span&gt;&lt;span&gt;shown &lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;diagram is the class diagram for "SystemStartup&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;"&lt;/span&gt;&lt;span&gt; class defined in &lt;/span&gt;&lt;span&gt;"StartupApplication" namespace.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/SFu2-5se-CI/AAAAAAAAAXg/Rxs1IHoLl-8/s1600-h/StartupApplication.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/SFu2-5se-CI/AAAAAAAAAXg/Rxs1IHoLl-8/s400/StartupApplication.JPG" alt="" id="BLOGGER_PHOTO_ID_5213962185367025698" border="0" /&gt;&lt;/a&gt;In above class diagram you will see that "SystemStartup" class contains two nested classes "CurrentUser" and "AllUsers". Both these classes have two static methods "AddApplication" and "RemoveApplication".&lt;br /&gt;To add a program to system's startup for a particular user we can use the following piece of code:-&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;SystemStartup.CurrentUser.AddApplication(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;              "Name of the program",&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;              "Location of the program's exe file",&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;              SystemStartup.RunApplication.AlwaysAfterStartup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                        );&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To add a program to system's startup for all users just replcae "CurrentUser" with "AllUsers" in above code:-&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;SystemStartup.AllUsers.AddApplication(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;              "Name of the program",&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;              "Location of the program's exe file",&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;              SystemStartup.RunApplication.AlwaysAfterStartup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                      );&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To remove a program from system's startup for a particular user we can use the following piece of code:-&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;SystemStartup.CurrentUser.RemoveApplication("Program Name");&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To remove a program from system's startup for all users just replcae "CurrentUser" with "AllUsers" in above code:-&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;SystemStartup.AllUsers.RemoveApplication("Program Name");&lt;/span&gt;&lt;/pre&gt;     &lt;br /&gt;One enumeration named "RunApplication" is also their in &lt;span&gt; "SystemStartup"&lt;/span&gt;&lt;span&gt; class as shown in its class diagram. This is used to specify Run or RunOnce feature of startup program.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://jas.kaleka.googlepages.com/StartupApplicationSourceCodeDemo.rar"&gt;&lt;/a&gt;&lt;a href="https://sites.google.com/site/jaskaleka/StartupApplicationSourceCodeDemo.rar"&gt;Download StartupApplication Library Source Code&lt;br /&gt;+&lt;br /&gt;Demo Application&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-6572479064289006706?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/6572479064289006706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=6572479064289006706' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/6572479064289006706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/6572479064289006706'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/06/launch-application-at-windows-startup.html' title='Launch an Application at Windows Startup'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iqbIgylZYps/SFu2-5se-CI/AAAAAAAAAXg/Rxs1IHoLl-8/s72-c/StartupApplication.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-7943253205369479624</id><published>2008-06-12T12:27:00.000+05:30</published><updated>2010-08-10T21:00:00.406+05:30</updated><title type='text'>Functions Before &amp; After main()</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Functions Before &amp;amp; After main()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;For this purpose compiler directive &lt;span style="font-weight: bold;"&gt;#pragma&lt;/span&gt; is used.&lt;br /&gt;&lt;br /&gt;Syntax:&lt;br /&gt;#pragma startup &lt;span style="font-weight: bold;"&gt;FUNCTION_NAME&lt;/span&gt;&lt;br /&gt;#pragma exit &lt;span style="font-weight: bold;"&gt;FUNCTION_NAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;#pragma startup executes the function named &lt;span style="font-weight: bold;"&gt;FUNCTION_NAME&lt;/span&gt; before the main() function&lt;br /&gt;pragma exit executes the function named &lt;span style="font-weight: bold;"&gt;FUNCTION_NAME &lt;/span&gt; after the main() function.&lt;br /&gt;&lt;br /&gt;Function declaration of &lt;span style="font-weight: bold;"&gt;FUNCTION_NAME &lt;/span&gt;must be before startup and exit pragma directives and function and also it must not take any argument and return void.&lt;br /&gt;&lt;br /&gt;The following code illustrates the use of #pragma startup &amp;amp; exit.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: thin double inactiveborder; background-color: white; background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; overflow: auto; width: 431px; height: 325px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 11px;"&gt;&lt;br /&gt;#include "iostream.h"&lt;br /&gt;#include "conio.h"&lt;br /&gt;&lt;br /&gt;void BeforeMain()&lt;br /&gt;{&lt;br /&gt;clrscr();&lt;br /&gt;cout &lt;&lt; "Function BeforeMain() Called.\n\n";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void AfterMain()&lt;br /&gt;{&lt;br /&gt;cout &lt;&lt; "Function AfterMain() Called.\n\n";&lt;br /&gt;getch();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#pragma startup BeforeMain&lt;br /&gt;#pragma exit AfterMain&lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt;{&lt;br /&gt;cout &lt;&lt; "Function main() called.\n\n";&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Output :-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/SFDNNhf3jWI/AAAAAAAAAXY/ptXvqbsoRRM/s1600-h/Functions+Before+%26+After+main%28%29+Output.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/SFDNNhf3jWI/AAAAAAAAAXY/ptXvqbsoRRM/s400/Functions+Before+%26+After+main%28%29+Output.JPG" alt="" id="BLOGGER_PHOTO_ID_5210890401081691490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Compiler Used - &lt;span style="color: rgb(255, 204, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TURBO C++ Version 3.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;Download the source code and exe files from &lt;/span&gt;&lt;a style="font-weight: bold;" href="https://sites.google.com/site/jaskaleka/FunctionsBeforeAftermain.rar"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-7943253205369479624?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/7943253205369479624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=7943253205369479624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/7943253205369479624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/7943253205369479624'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/06/functions-before-after-main.html' title='Functions Before &amp; After main()'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iqbIgylZYps/SFDNNhf3jWI/AAAAAAAAAXY/ptXvqbsoRRM/s72-c/Functions+Before+%26+After+main%28%29+Output.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-4518031269984225861</id><published>2008-03-20T18:42:00.000+05:30</published><updated>2010-08-10T21:12:27.655+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#.Net'/><title type='text'>Parallel Port User Control</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C#.Net&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Introduction&lt;/span&gt;&lt;br /&gt;A simple User Control developed in C#.Net used to control the Parallel Port.&lt;br /&gt;The following tasks can be performed using it:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Send data to Data Pins.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Receive data from Data Pins.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Send data to Control Pins.&lt;/li&gt;&lt;li&gt;Receive data from Control Pins.&lt;/li&gt;&lt;li&gt;Read current status of Status Pins.&lt;/li&gt;&lt;li&gt;Implement Synchronous and Asynchronous Loops.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Implement UP, DOWN and UP-DOWN Counters.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;The below image shows the "HOME" of my User  Control. Using this page, you can send or receive data from the DATA and the CONTROL registers of the Parallel Port. You can also check the current status of the STATUS Port.     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R-MlRPCmn0I/AAAAAAAAAU0/nVzmakm0c0A/s1600-h/PPC+Home+Page.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R-MlRPCmn0I/AAAAAAAAAU0/nVzmakm0c0A/s400/PPC+Home+Page.JPG" alt="" id="BLOGGER_PHOTO_ID_5180024974431657794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;The below image shows the "Loops" Page of my User  Control. You can use this page to implement synchronous loops of desired time delay on &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;the Parallel Port. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iqbIgylZYps/R-MlRfCmn1I/AAAAAAAAAU8/iutaHveUnIQ/s1600-h/PPC+Syn+Loops+Page.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_iqbIgylZYps/R-MlRfCmn1I/AAAAAAAAAU8/iutaHveUnIQ/s400/PPC+Syn+Loops+Page.JPG" alt="" id="BLOGGER_PHOTO_ID_5180024978726625106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The below image shows the "Loops" Page of my User Control. You can use this page to implement asynchronous loops of desired time delay on &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;the Parallel Port.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iqbIgylZYps/R-MlRfCmn2I/AAAAAAAAAVE/m9KmWEgj3Ag/s1600-h/PPC+Asyn+Loops+Page.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_iqbIgylZYps/R-MlRfCmn2I/AAAAAAAAAVE/m9KmWEgj3Ag/s400/PPC+Asyn+Loops+Page.JPG" alt="" id="BLOGGER_PHOTO_ID_5180024978726625122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The below image shows the "Counters" Page of my User  Control.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; You can use this page to implement binary counters (Up, Down, Up-Down) with desired time delay on &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;the Parallel Port.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iqbIgylZYps/R-MlRvCmn3I/AAAAAAAAAVM/oNMJaTqdMS0/s1600-h/PPC+Counters+Page.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iqbIgylZYps/R-MlRvCmn3I/AAAAAAAAAVM/oNMJaTqdMS0/s400/PPC+Counters+Page.JPG" alt="" id="BLOGGER_PHOTO_ID_5180024983021592434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Background &lt;/span&gt;&lt;br /&gt;I have used &lt;a href="http://logix4u.net/"&gt;inpout32.dll&lt;/a&gt; for controlling parallel port. Using INPOUT32 I have made my own user control to control the Parallel Port in C#.Net. In my user control I have defined a class named "ParallelPort", in which all the methods and the properties discussed below are defined.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using the code&lt;br /&gt;&lt;/span&gt;Before using the code copy "ParallelPort.dll" to :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    "system32"  folder if using XP ;&lt;/li&gt;&lt;li&gt;    "winnt"  folder if using Windows 2000 ;&lt;/li&gt;&lt;li&gt;    "win98"  folder if using Win98;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;To use my Parallel Port User Control follow  the steps written below:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make a "New Project" in Visual Studio. You use any language like C#, VB, J#, C++ etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Goto "Project" Menu, and click "Add Reference...".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the "Add Reference" window, click the "Browse" tab and find "Jaspreets Parallel Port Control.dll" in the source code provided and then click "Ok".&lt;/li&gt;&lt;li&gt;Goto "Tools" Menu, and click "Choose ToolBox Items...".&lt;/li&gt;&lt;li&gt;In the "Choose ToolBox Items" window, find "ParallelPort" and click "Ok".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now, you will see my user control in your toolbox. Drag n Drop it to the window form.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Press F5 to run the project.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;But in case if you to use a different user interface then you can design your own interface and use the following methods and properties of "ParallelPort" class to control the Parallel Port:-&lt;br /&gt;&lt;br /&gt;/***C#.NET CODE****/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Create a new instance of ParallelPort class.&lt;br /&gt;*/&lt;br /&gt;&lt;span id="intelliTXT"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ParallelPort &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;PaPort = new ParallelPort();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;To set the Parallel Port address. 888 is decimal equivalent of 0x0378h.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.PortAddress = 888;     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D0 = true; &lt;/span&gt;//To set D0 (Pin no. 2)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D0 = false; &lt;/span&gt;//To reset D0 (Pin no. 2)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D1 = true;&lt;/span&gt; //To set D1 (Pin no. 3)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D1 = false;&lt;/span&gt; //To reset D1 (Pin no. 3)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D2 = true;&lt;/span&gt;             //To set D2 (Pin no. 4)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D2 = false;&lt;/span&gt;            //To reset D2 (Pin no. 4)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D3 = true;             &lt;/span&gt;//To set D3 (Pin no. 5)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D3 = false;&lt;/span&gt;            //To reset D3 (Pin no. 5)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D4 = true;&lt;/span&gt;             //To set D4 (Pin no. 6)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D4 = false;&lt;/span&gt;            //To reset D4 (Pin no. 6)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D5 = true;&lt;/span&gt;             //To set D5 (Pin no. 7)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D5 = false;&lt;/span&gt;            //To reset D5 (Pin no. 7)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D6 = true;             &lt;/span&gt;//To set D6 (Pin no. 8)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D6 = false;            &lt;/span&gt;//To reset D6 (Pin no. 8)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D7 = true;&lt;/span&gt;             //To set D7 (Pin no. 9)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.D7 = false;&lt;/span&gt;            //To reset D7 (Pin no. 9)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C0 = true;             &lt;/span&gt;//To set C0 (Pin no. 1)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C0 = false;&lt;/span&gt;            //To reset C0 (Pin no. 1)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C1 = true;&lt;/span&gt;             //To set C1 (Pin no. 14)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C1 = false;&lt;/span&gt;            //To reset C1 (Pin no. 14)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C2 = true;&lt;/span&gt;             //To set C2 (Pin no. 16)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C2 = false;&lt;/span&gt;            //To reset C2 (Pin no. 16)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C3 = true;             &lt;/span&gt;//To set C3 (Pin no. 17)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.C3 = false;&lt;/span&gt;            //To reset C3 (Pin no. 17)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Returns true if input at S3 (Pin no. 10) is HIGH, else returns false.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bool b = PaPort.S3;           &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Returns true if input at S4 (Pin no. 11) is HIGH, else returns false.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bool b = PaPort.S4; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Returns true if input at S5 (Pin no. 12) is HIGH, else returns false.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bool b = PaPort.S5;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Returns true if input at S6 (Pin no. 13) is HIGH, else returns false.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bool b = PaPort.S6;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Returns true if input at S7 (Pin no. 15) is HIGH, else returns false.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bool b = PaPort.S7;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;br /&gt;&lt;/span&gt;Returns the current status of all the Data Pins as an integer whose bits give the current status of each Data Pin (D0 to D7) with D0 being the LSB and D7 being the MSB.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*/&lt;br /&gt;PaPort.ReadFromDataBus();&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;/span&gt;Writes 123(or any other integer as provided in argument) to Data Pins.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;PaPort.WriteToDataBus(123);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;PaPort.SetDataBus()           &lt;/span&gt;//Sets all Data Pins.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.ResetDataBus()         &lt;/span&gt;//Resets all Data Pins.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;/span&gt;&lt;br /&gt;Checks the current status of the Status Pins and assign value to S3-S7 accordingly.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*/&lt;br /&gt;PaPort.UpdateStatusBus();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*&lt;/span&gt;&lt;br /&gt;Returns the current status of all the Status Pins (including the HIDDEN ones also) as an integer whose bits give the current status of each Status Pin (S0 to S7) with S0 being the LSB and S7 being the MSB.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*/&lt;br /&gt;PaPort.ReadFromStatusBus()&lt;/span&gt;    ;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Returns the current status of all the Control Pins (including the HIDDEN ones also) as an integer whose bits give the current status of each Control Pin (C0 to C7) with C0 being the LSB and C7 being the MSB.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.ReadFromControlBus()&lt;/span&gt; ;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Writes 135(or any other integer as provided in argument) to Control Pins.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.WriteToControlBus(135) ; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.SetControlBus()        &lt;/span&gt;//Sets all Control Pins.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.ResetControlBus()      &lt;/span&gt;//Resets all Control Pins.&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Loops from Pin D0 to Pin D7, setting the desired pin HIGH and all other LOW after a duration of 1000ms or 1sec.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.StartSynchronousLoop(ParallelPort.Pin.D0, ParallelPort.Pin.D7, 1000, true);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Loops from Pin D0 to Pin D7, setting the desired pin LOW and all other HIGH after a duration of 1000ms or 1sec.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.StartSynchronousLoop(ParallelPort.Pin.D0, ParallelPort.Pin.D7, 1000, false);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Loops through the pins specified by array LoopPins, setting the desired pin HIGH and all other LOW after a duration of 1000ms or 1sec.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ParallelPort.Pin[] LoopPins = new ParallelPort.Pin[] {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.C1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D0,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D3,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.C2,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D7,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.C1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                      };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.StartAsynchronousLoop(LoopPins, 1000, true);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Loops through the pins specified by array LoopPins, setting the desired pin LOW and all other HIGH after a duration of 1000ms or 1sec.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; ParallelPort.Pin[] LoopPins = new ParallelPort.Pin[] {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.C1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D0,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D3,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.C2,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D7,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.C1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                       ParallelPort.Pin.D5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                                                      };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.StartAsynchronousLoop(LoopPins, 1000, false);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.EndLoop();              //Stops all running LOOPs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Counts uptill 12 bits from 0 to 4096.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.StartCounter(ParallelPort.CountBits._12,&lt;br /&gt;ParallelPort.CounterType.UPCounter,1000);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.EndCounter();&lt;/span&gt;          //Stops all running COUNTERs.&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Returns true if Parallel Port is busy implementing LOOP or COUNTER Operation.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.IsBusy;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Resets all Data and Control Pins. Stops all running LOOPs and COUNTERs.&lt;br /&gt;*/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PaPort.ResetAll();&lt;br /&gt;&lt;br /&gt;EXE and Source Code Downloads&lt;br /&gt;&lt;/span&gt;&lt;ol  style="font-family:verdana;"&gt;&lt;li&gt;Download and install &lt;span style="font-size:100%;"&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=90&amp;amp;p=&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe"&gt;Microsoft .NET Framework Version 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now download and install  &lt;a href="http://jas.kaleka.googlepages.com/Jaspreets_Parallel_Port_Control.rar"&gt;&lt;/a&gt;&lt;a href="https://sites.google.com/site/jaskaleka/ParallelPortControlSetup.rar"&gt;My Parallel  Port  Control  Setup.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://sites.google.com/site/jaskaleka/ParallelPortControlCSharpSourceCode.rar"&gt;Download C#.Net source code.&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://jas.kaleka.googlepages.com/MyParallelPortControlSourceCode.rar"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-4518031269984225861?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/4518031269984225861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=4518031269984225861' title='67 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4518031269984225861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4518031269984225861'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/03/parallel-port-user-control.html' title='Parallel Port User Control'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iqbIgylZYps/R-MlRPCmn0I/AAAAAAAAAU0/nVzmakm0c0A/s72-c/PPC+Home+Page.JPG' height='72' width='72'/><thr:total>67</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-2607079845235101392</id><published>2008-03-08T09:03:00.001+05:30</published><updated>2008-11-13T14:33:56.883+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Add-Subtract Two Integers</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add two integers&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;It is very easy to add two integers but the integers must be within a specified range ( like -32768 to 32767 in Turbo C++ ). But there is no restriction of range in my "ADD.cpp". You can add two integers of desired length as long as enough memory is available. Below is the snapshot of the "Add.exe" in which first two integers are entered by the user and their sum is then displayed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iqbIgylZYps/R9IJnEPkqvI/AAAAAAAAATE/QxPZt4eAYwg/s1600-h/Add.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_iqbIgylZYps/R9IJnEPkqvI/AAAAAAAAATE/QxPZt4eAYwg/s400/Add.JPG" alt="" id="BLOGGER_PHOTO_ID_5175209488560728818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;Subtract two integers&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;The code for this is present in "Subtract.cpp". You can subtract integers of desired length as long as enough memory is available. Below is the snapshot of the "Subtract.exe" in which first two integers are entered by the user and their diffrence is then displayed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R9IJx0PkqwI/AAAAAAAAATM/Cpu0Cuw1sbw/s1600-h/Subtract.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R9IJx0PkqwI/AAAAAAAAATM/Cpu0Cuw1sbw/s400/Subtract.JPG" alt="" id="BLOGGER_PHOTO_ID_5175209673244322562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Compiler Used - &lt;span style="color: rgb(255, 204, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TURBO C++ Version 3.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;Download the source code and exe files from &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://jas.kaleka.googlepages.com/AddSubtractInfiniteIntegers.rar"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-2607079845235101392?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/2607079845235101392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=2607079845235101392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/2607079845235101392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/2607079845235101392'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/03/add-subtract-two-integers.html' title='Add-Subtract Two Integers'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iqbIgylZYps/R9IJnEPkqvI/AAAAAAAAATE/QxPZt4eAYwg/s72-c/Add.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-4631805477284626262</id><published>2008-03-07T19:18:00.000+05:30</published><updated>2008-11-13T14:33:57.250+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>"String" in TURBO C++</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"String" in TURBO C++&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;'String' is a very useful keyword but it is not  available in TURBO C++. So, I developed a small class named 'String' using which I can perform all the string related operations (as in other languages) in TURBO C++.  The 'String' class is capable of performing almost all the string related functions like adding, searching, replacing, assigning, comparing, conversions etc. Below is the overview of 'String' class.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;div  style="border: thin double inactiveborder; background: white none repeat scroll 0% 50%; overflow: auto; width: 431px; height: 500px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:11px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;/*##########*/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;/*String Class*/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:130%;"  &gt;&lt;span&gt;&lt;span&gt;/*##########*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;class String&lt;br /&gt;{&lt;br /&gt;char *wd ;&lt;br /&gt;int Length;&lt;br /&gt;&lt;br /&gt;public :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /*********CONSTRUCTORS*********/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* CONSTRUCTOR 1 */&lt;/span&gt;&lt;br /&gt;String (int len);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* CONSTRUCTOR 2 */&lt;/span&gt;&lt;br /&gt;String (const char ch);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* CONSTRUCTOR 3 */&lt;/span&gt;&lt;br /&gt;String (const char *sentence);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* CONSTRUCTOR 4 */&lt;/span&gt;&lt;br /&gt;String (const String *str);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* COPY CONSTRUCTOR */&lt;/span&gt;&lt;br /&gt;String (const String &amp;amp;str) ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /**********DESTRUCTOR**********/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;~String();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /*****OVERLOADED OPERATORS*****/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* OVERLOADED ASSIGNMENT OPERATORS */&lt;/span&gt;&lt;br /&gt;String&amp;amp; operator = (char ch);&lt;br /&gt;String&amp;amp; operator = (const char *sentence);&lt;br /&gt;String&amp;amp; operator = (const String &amp;amp;str);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* OVERLOADED PRE-INCREMENT OPERATOR */&lt;/span&gt;&lt;br /&gt;String&amp;amp; operator ++();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* OVERLOADED POST-INCREMENT OPERATOR */&lt;/span&gt;&lt;br /&gt;String operator ++(int Faltu);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* OVERLOADED RELATIONAL OPERATORS */&lt;/span&gt;&lt;br /&gt;bool operator == (const String str) const;&lt;br /&gt;&lt;br /&gt;bool operator != (const String str) const;&lt;br /&gt;&lt;br /&gt;bool operator &gt; (const String str) const;&lt;br /&gt;&lt;br /&gt;bool operator &lt; (const String str) const;       bool operator &gt;= (const String str) const;&lt;br /&gt;&lt;br /&gt;bool operator &lt;= (const String str) const;      &lt;span style="font-weight: bold;"&gt; /* OVERLOADED ASSIGNMENT &amp;amp; AIRTHMATIC OPERATORS */ &lt;/span&gt;&lt;br /&gt;void operator += (const String str);&lt;br /&gt;&lt;br /&gt;String operator + (const String &amp;amp;str);&lt;br /&gt;&lt;br /&gt;friend String operator + (const String &amp;amp;str1,const String &amp;amp;str2);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* OVERLOADED EXTRACTOR OPERATOR */ &lt;/span&gt;&lt;br /&gt;friend ostream&amp;amp; operator &lt;&lt; (ostream &amp;amp;outputStream,String &amp;amp;str)    &lt;span style="font-weight: bold;"&gt;/* OVERLOADED INSERTOR OPERATOR */ &lt;/span&gt;&lt;br /&gt;friend istream&amp;amp; operator &gt;&gt; (istream &amp;amp;inputStream,String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* OVERLOADED SQUARE BRACKETS */&lt;/span&gt;&lt;br /&gt;char&amp;amp; operator [] (int n) const;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /*******ASSIGN FUNCTION********/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* Assign a substring of str starting at n that is l characters long&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;to the current string */&lt;/span&gt;&lt;br /&gt;String&amp;amp; assign (const String &amp;amp;str,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /*******INSERT FUNCTION********/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; /* Inserts the string str into the current string, at location n */&lt;/span&gt;&lt;br /&gt;String&amp;amp; insert(const String &amp;amp;str,int n);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/******APPEND FUNCTIONS********/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Appends a substring of str starting at n that is l characters long&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;on to the end of the current string */&lt;/span&gt;&lt;br /&gt;String&amp;amp; append (const String &amp;amp;str,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Appends n repititions of ch on to the end of the current string */&lt;/span&gt;&lt;br /&gt;String&amp;amp; append (const String &amp;amp;str,int n);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*******COMPARE FUNCTIONS******/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Compare a substring of str starting at n that is l characters long to the current string.Returns 0 if two strings are equal,-1 if first string is less than second string, else returns 1 */&lt;/span&gt;&lt;br /&gt;int compare (const String &amp;amp;str,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Compare a substring of the string str to a substring of the current string,where n and l refer to str and nc and lc refer to current string. Returns 0 if two strings are equal,-1 if first string is less than second string, else returns 1 */&lt;/span&gt;&lt;br /&gt;int compare (int nc,int lc,const String&amp;amp;,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/******ERASE FUNCTIONS*********/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes num characters from the current string, starting at index and returns *this */&lt;/span&gt;&lt;br /&gt;String&amp;amp; erase(int index,int num);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes all characters from the current string, till it finds the character ch ,if not found then dosen't modifies the current string and returns *this */&lt;/span&gt;&lt;br /&gt;String&amp;amp; erase_upto (const char &amp;amp;ch);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes all digits from the current string and returns *this */&lt;/span&gt;&lt;br /&gt;String&amp;amp; erase_all_digits ();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes all isspace characters from the current string and returns *this */&lt;/span&gt;&lt;br /&gt;String&amp;amp; erase_all_isspace_chars ();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*****SUBSTRING FUNCTIONS******/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns a substring of the current string starting at n that is l characters long */&lt;/span&gt;&lt;br /&gt;String substr(int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns a substring of the current string starting from n'th character to m'th character */&lt;/span&gt;&lt;br /&gt;String substr(char n,char m);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes a substring of the current string starting from n'th character to m'th character except the m'th character*/&lt;/span&gt;&lt;br /&gt;String cut_substr(char n,char m);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/****FIND ONLY FUNCTIONS*******/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the first occurrence of str within the current string, starting at index, -1 if nothing is found */&lt;/span&gt;&lt;br /&gt;int find(const String &amp;amp;str,int index);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the first occurrence of ch within the current string and num characters, starting at index, -1 if nothing is found */&lt;/span&gt;&lt;br /&gt;int find(const String &amp;amp;str,int index,int num);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the index of the first character within the current string that matches any character in str, beginning the search at index, -1 if nothing is found */&lt;/span&gt;&lt;br /&gt;int find_first_of(const String &amp;amp;str,int index);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the index of the first character within the current string that does not match any character in str, beginning the search at index, -1 if nothing is found */&lt;/span&gt;&lt;br /&gt;int find_first_not_of(const String &amp;amp;str,int index);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the index of the last character within the current string that matches any character in str, beginning the search at index, -1 if nothing is found */&lt;/span&gt;&lt;br /&gt;int find_last_of(const String &amp;amp;str,int index);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the index of the last character within the current string that does not match any character in str, beginning the search at index,-1 if nothing is found */&lt;/span&gt;&lt;br /&gt;int find_last_not_of(const String &amp;amp;str,int index);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/***FIND AND MODIFY FUNCTIONS***/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Replaces the first occurence of src with dest if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;/span&gt;&lt;br /&gt;String find_first_and_replace (const String &amp;amp;src,const String &amp;amp;dest);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Replaces all the occurences of src with dest if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;/span&gt;&lt;br /&gt;String find_and_replace_all (const String &amp;amp;src,const String &amp;amp;dest);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes the first occurence of str if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;/span&gt;&lt;br /&gt;String find_first_and_remove (const String &amp;amp;str);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes all the occurences of str if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;/span&gt;&lt;br /&gt;String find_and_remove_all (const String &amp;amp;str);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/*****CONVERSION FUNCTIONS*****/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;friend double strtodbl(const String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;friend String dbltostr(double dbl)&lt;br /&gt;&lt;br /&gt;friend int strtoint(const String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;friend String inttostr(int x)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/****MISCELLANEOUS FUNCTIONS***/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* TO MANUALLY DELETE CURRENT STRING */&lt;/span&gt;&lt;br /&gt;void Delete();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns the length of the current string */&lt;/span&gt;&lt;br /&gt;int length() const;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns a standard C character array version of my String */&lt;/span&gt;&lt;br /&gt;char* c_str() const;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Returns true if the string has no elements, else returns false */&lt;/span&gt;&lt;br /&gt;bool IsEmpty();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Removes all elements from the current string */&lt;/span&gt;&lt;br /&gt;String&amp;amp; clear();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Swaps the current string with given string */&lt;/span&gt;&lt;br /&gt;void swap(String &amp;amp;str);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Sort the current string */&lt;/span&gt;&lt;br /&gt;String&amp;amp; sort ();&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Copies characters from a string into an array ch, starting at n that is l characters long*/&lt;/span&gt;&lt;br /&gt;int Copy_to_array (char *ch,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Reverses the current string */&lt;/span&gt;&lt;br /&gt;friend String strrev (String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Changes the current string characters to uppercase */&lt;/span&gt;&lt;br /&gt;friend String strupr (String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Changes the current string characters to lowercase */&lt;/span&gt;&lt;br /&gt;friend String strlwr (String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* cin strings with white spaces in b/w */&lt;/span&gt;&lt;br /&gt;friend void gets (String &amp;amp;str)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/* Prints a string */&lt;/span&gt;&lt;br /&gt;friend void puts (String str)&lt;br /&gt;&lt;br /&gt;protected :&lt;br /&gt;&lt;br /&gt;String substr(char n,char m,int cut);&lt;br /&gt;void ValidateIndex(int &amp;amp;index,int offset);&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*#################*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt; &lt;span style="font-weight: bold;"&gt;/*End Of String Class*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*#################*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;I have placed the "String" class inside a header file named "j_string.h". You can download this header file from the link given at the end of this article or you  can copy the below written code and save it as "&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;j_string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;.h".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;div  style="border: thin double inactiveborder; background: white none repeat scroll 0% 50%; overflow: auto; width: 431px; height: 500px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:11px;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*###########*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*J_STRING.H*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*###########*/&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#ifndef __J_STRING_H&lt;br /&gt;#define __J_STRING_H&lt;br /&gt;&lt;br /&gt;#ifndef __IOSTREAM_H&lt;br /&gt;#include "iostream.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __CONIO_H&lt;br /&gt;#include "conio.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __STRING_H&lt;br /&gt;#include "string.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __CTYPE_H&lt;br /&gt;#include "ctype.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __STDIO_H&lt;br /&gt;#include "stdio.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __STDLIB_H&lt;br /&gt;#include "stdlib.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __MATH_H&lt;br /&gt;#include "math.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;#ifndef __J_BOOL_H&lt;br /&gt;#include "j_bool.h"&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;class String&lt;br /&gt;{&lt;br /&gt;    char *wd ;&lt;br /&gt;    int Length;&lt;br /&gt;&lt;br /&gt;    public :&lt;br /&gt;&lt;br /&gt;    /***************CONSTRUCTORS***********/&lt;br /&gt;&lt;br /&gt;    /* CONSTRUCTOR 1 */&lt;br /&gt;    String (int len);&lt;br /&gt;&lt;br /&gt;    /* CONSTRUCTOR 2 */&lt;br /&gt;    String (const char ch);&lt;br /&gt;&lt;br /&gt;    /* CONSTRUCTOR 3 */&lt;br /&gt;    String (const char *sentence);&lt;br /&gt;&lt;br /&gt;    /* CONSTRUCTOR 4 */&lt;br /&gt;    String (const String *str);&lt;br /&gt;&lt;br /&gt;    /* COPY CONSTRUCTOR */&lt;br /&gt;    String (const String &amp;str) ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /***************DESTRUCTOR*************/&lt;br /&gt;&lt;br /&gt;    ~String();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /*********OVERLOADED OPERATORS*********/&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED ASSIGNMENT OPERATORS */&lt;br /&gt;    String&amp; operator = (char ch);&lt;br /&gt;    String&amp; operator = (const char *sentence);&lt;br /&gt;    String&amp; operator = (const String &amp;str);&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED PRE-INCREMENT OPERATOR */&lt;br /&gt;    String&amp; operator ++();&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED POST-INCREMENT OPERATOR */&lt;br /&gt;    String operator ++(int Faltu);&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED RELATIONAL OPERATORS */&lt;br /&gt;    bool operator == (const String str) const;&lt;br /&gt;&lt;br /&gt;    bool operator != (const String str) const;&lt;br /&gt;&lt;br /&gt;    bool operator &gt; (const String str) const;&lt;br /&gt;&lt;br /&gt;    bool operator &lt; (const String str) const;&lt;br /&gt;&lt;br /&gt;    bool operator  &gt;=  (const String str) const;&lt;br /&gt;&lt;br /&gt;    bool operator &lt;= (const String str) const;&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED ASSIGNMENT &amp; AIRTHMATIC OPERATORS */&lt;br /&gt;    void operator += (const String str);&lt;br /&gt;    String operator + (const String &amp;str);&lt;br /&gt;    friend String operator + (const String &amp;str1,const String &amp;str2);&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED EXTRACTOR OPERATOR */&lt;br /&gt;    friend ostream&amp; operator &lt;&lt; (ostream &amp;outputStream,String &amp;str)&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED INSERTOR OPERATOR */&lt;br /&gt;    friend istream&amp; operator &gt;&gt; (istream &amp;inputStream,String &amp;str)&lt;br /&gt;&lt;br /&gt;    /* OVERLOADED SQUARE BRACKETS */&lt;br /&gt;    char&amp; operator [] (int n) const;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /************ASSIGN FUNCTION***********/&lt;br /&gt;&lt;br /&gt;    /* Assign a substring of str starting at n that is l characters long to the current string */&lt;br /&gt;    String&amp; assign (const String &amp;str,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /*************INSERT FUNCTION**********/&lt;br /&gt;&lt;br /&gt;    /* Inserts the string str into the current string, at location n */&lt;br /&gt;    String&amp; insert(const String &amp;str,int n);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /*************APPEND FUNCTIONS*********/&lt;br /&gt;&lt;br /&gt;    /* Appends a substring of str starting at n that is l characters long on to the end of the current string */&lt;br /&gt;    String&amp; append (const String &amp;str,int n,int l);&lt;br /&gt;&lt;br /&gt;    /* Appends n repititions of ch on to the end of the current string */&lt;br /&gt;    String&amp; append (const String &amp;str,int n);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /************COMPARE FUNCTIONS*********/&lt;br /&gt;&lt;br /&gt;    /* Compare a substring of str starting at n that is l characters long to the current string.Returns 0 if two strings are equal,-1 if first string is less than second string, else returns 1 */&lt;br /&gt;    int compare (const String &amp;str,int n,int l);&lt;br /&gt;&lt;br /&gt;    /* Compare a substring of the string str to a substring of the current string,where n and l refer to str and nc and lc refer to current string. Returns 0 if two strings are equal,-1 if first string is less than second string, else returns 1 */&lt;br /&gt;    int compare (int nc,int lc,const String&amp;,int n,int l);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /**************ERASE FUNCTIONS*********/&lt;br /&gt;&lt;br /&gt;    /* Removes num characters from the current string, starting at index and returns *this */&lt;br /&gt;    String&amp; erase(int index,int num);&lt;br /&gt;&lt;br /&gt;    /* Removes all characters from the current string, till it finds the character ch ,if not found then dosen't modifies the current string and returns *this */&lt;br /&gt;    String&amp; erase_upto (const char &amp;ch);&lt;br /&gt;&lt;br /&gt;    /* Removes all digits from the current string and returns *this */&lt;br /&gt;    String&amp; erase_all_digits ();&lt;br /&gt;&lt;br /&gt;    /* Removes all isspace characters from the current string and returns *this */&lt;br /&gt;    String&amp; erase_all_isspace_chars ();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /************SUBSTRING FUNCTIONS*******/&lt;br /&gt;&lt;br /&gt;    /* Returns a substring  of the current string starting at n that is l characters long */&lt;br /&gt;    String substr(int n,int l);&lt;br /&gt;&lt;br /&gt;    /* Returns a substring of the current string starting from n'th character to m'th character */&lt;br /&gt;    String substr(char n,char m);&lt;br /&gt;&lt;br /&gt;    /* Removes a substring of the current string starting from n'th character to m'th character except the m'th character*/&lt;br /&gt;    String cut_substr(char n,char m);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /***********FIND ONLY FUNCTIONS********/&lt;br /&gt;&lt;br /&gt;    /* Returns the first occurrence of str within the current string, starting at index, -1 if nothing is found */&lt;br /&gt;    int find(const String &amp;str,int index);&lt;br /&gt;&lt;br /&gt;    /* Returns the first occurrence of ch within the current string and num characters, starting at index, -1 if nothing is found */&lt;br /&gt;    int find(const String &amp;str,int index,int num);&lt;br /&gt;&lt;br /&gt;    /* Returns the index of the first character within the current string that matches any character in str, beginning the search at index, -1 if nothing is found */&lt;br /&gt;    int find_first_of(const String &amp;str,int index);&lt;br /&gt;&lt;br /&gt;    /* Returns the index of the first character within the current string that does not match any character in str, beginning the search at index, -1 if nothing is found */&lt;br /&gt;    int find_first_not_of(const String &amp;str,int index);&lt;br /&gt;&lt;br /&gt;    /* Returns the index of the last character within the current string that matches any character in str, beginning the search at index, -1 if nothing is found */&lt;br /&gt;    int find_last_of(const String &amp;str,int index);&lt;br /&gt;&lt;br /&gt;    /* Returns the index of the last character within the current string that does not match any character in str, beginning the search at index,-1 if nothing is found */&lt;br /&gt;    int find_last_not_of(const String &amp;str,int index);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /*********FIND AND MODIFY FUNCTIONS**************/&lt;br /&gt;&lt;br /&gt;    /* Replaces the first occurence of src with dest if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;br /&gt;    String find_first_and_replace (const String &amp;src,const String &amp;dest);&lt;br /&gt;&lt;br /&gt;    /* Replaces all the occurences of src with dest if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;br /&gt;    String find_and_replace_all (const String &amp;src,const String &amp;dest);&lt;br /&gt;&lt;br /&gt;    /* Removes the first occurence of str if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;br /&gt;    String find_first_and_remove (const String &amp;str);&lt;br /&gt;&lt;br /&gt;    /* Removes all the occurences of str if found, else the current string remains the same.Returns the modified string if found else returns a null string. */&lt;br /&gt;    String find_and_remove_all (const String &amp;str);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /***********CONVERSION FUNCTIONS*******/&lt;br /&gt;&lt;br /&gt;    friend double strtodbl(const String &amp;str)&lt;br /&gt;&lt;br /&gt;    friend String dbltostr(double dbl)&lt;br /&gt;&lt;br /&gt;    friend int strtoint(const String &amp;str)&lt;br /&gt;&lt;br /&gt;    friend String inttostr(int x)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /**********MISCELLANEOUS FUNCTIONS***************/&lt;br /&gt;&lt;br /&gt;    /* TO MANUALLY DELETE CURRENT STRING */&lt;br /&gt;    void Delete();&lt;br /&gt;&lt;br /&gt;    /* Returns the length of the current string */&lt;br /&gt;    int length() const;&lt;br /&gt;&lt;br /&gt;    /* Returns a standard C character array version of my String */&lt;br /&gt;    char* c_str() const;&lt;br /&gt;&lt;br /&gt;    /* Returns true if the string has no elements, else returns false */&lt;br /&gt;    bool IsEmpty();&lt;br /&gt;&lt;br /&gt;    /* Removes all elements from the current string */&lt;br /&gt;    String&amp; clear();&lt;br /&gt;&lt;br /&gt;    /* Swaps the current string with given string */&lt;br /&gt;    void swap(String &amp;str);&lt;br /&gt;&lt;br /&gt;    /* Sort the current string */&lt;br /&gt;    String&amp; sort ();&lt;br /&gt;&lt;br /&gt;    /* Copies characters from a string into an array ch, starting at n  that is l characters long*/&lt;br /&gt;    int Copy_to_array (char *ch,int n,int l);&lt;br /&gt;&lt;br /&gt;    /* Reverses the current string */&lt;br /&gt;    friend String strrev (String &amp;str)&lt;br /&gt;&lt;br /&gt;    /* Changes the current string characters to uppercase */&lt;br /&gt;    friend String strupr (String &amp;str)&lt;br /&gt;&lt;br /&gt;    /* Changes the current string characters to lowercase */&lt;br /&gt;    friend String strlwr (String &amp;str)&lt;br /&gt;&lt;br /&gt;    /* cin strings with white spaces in b/w */&lt;br /&gt;    friend void gets (String &amp;str)&lt;br /&gt;&lt;br /&gt;    /* Prints a string */&lt;br /&gt;    friend void puts (String str)&lt;br /&gt;&lt;br /&gt;    protected :&lt;br /&gt;&lt;br /&gt;    String substr(char n,char m,int cut);&lt;br /&gt;    void ValidateIndex(int &amp;index,int offset);&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;/*************CONSTRUCTORS***********/&lt;br /&gt;&lt;br /&gt;String :: String(int len = 0)&lt;br /&gt;{&lt;br /&gt;    Length = len;&lt;br /&gt;    wd = new char[len+1];&lt;br /&gt;    wd[len] = '\0';&lt;br /&gt;    *wd = '\0';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String :: String(const char ch)&lt;br /&gt;{&lt;br /&gt;    *this = ch;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String :: String(const char *sentence)&lt;br /&gt;{&lt;br /&gt;    *this = sentence;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String :: String(const String* str)&lt;br /&gt;{&lt;br /&gt;    *this = *str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String :: String(const String&amp; str)&lt;br /&gt;{&lt;br /&gt;    *this = str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*************DESTRUCTOR*************/&lt;br /&gt;&lt;br /&gt;String :: ~String()&lt;br /&gt;{&lt;br /&gt;    delete wd;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*******OVERLOADED OPERATORS*********/&lt;br /&gt;&lt;br /&gt;String&amp; String :: operator = (char ch)&lt;br /&gt;{&lt;br /&gt;    Length = 1;&lt;br /&gt;    wd = new char[Length+1];&lt;br /&gt;    wd[0] = ch;&lt;br /&gt;    wd[1] = '\0';&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String :: operator = (const char *ch)&lt;br /&gt;{&lt;br /&gt;    Length = strlen(ch);&lt;br /&gt;    wd = new char[Length+1];&lt;br /&gt;    strcpy(wd,ch);&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String :: operator = (const String&amp; str)&lt;br /&gt;{&lt;br /&gt;    Length = strlen(str.wd);&lt;br /&gt;    wd = new char[Length+1];&lt;br /&gt;    strcpy(wd,str.wd);&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String :: operator ++ ()&lt;br /&gt;{&lt;br /&gt;    ++(this-&gt;wd);&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String :: operator ++ (int a)&lt;br /&gt;{&lt;br /&gt;    a = a;&lt;br /&gt;    String temp = *this;&lt;br /&gt;    (this-&gt;wd)++;&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: operator == (const String str) const&lt;br /&gt;{&lt;br /&gt;    return strcmp(wd,str.wd) == 0 ? true : false ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: operator != (const String str) const&lt;br /&gt;{&lt;br /&gt;    return strcmp(wd,str.wd) == 0 ? false : true ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: operator &gt; (const String str) const&lt;br /&gt;{&lt;br /&gt;    return strcmp(this-&gt;wd,str.wd) &gt; 0  ? true : false ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: operator &lt; (const String str) const&lt;br /&gt;{&lt;br /&gt;    return strcmp(this-&gt;wd,str.wd) &lt; 0 ? true : false ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: operator  &gt;=  (const String str) const&lt;br /&gt;{&lt;br /&gt;    return *this &gt; str?true:*this == str ? true : false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: operator &lt;= (const String str) const&lt;br /&gt;{&lt;br /&gt;    return *this &lt; str?true:*this == str ? true : false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void String :: operator += (const String str)&lt;br /&gt;{&lt;br /&gt;    *this = *this + str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String :: operator + (const String &amp;str)&lt;br /&gt;{&lt;br /&gt;    String Temp( Length + str.Length );&lt;br /&gt;    strcpy(Temp.wd,wd);&lt;br /&gt;    strcat(Temp.wd, str.wd);&lt;br /&gt;    return Temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String operator + (const String &amp;str1,const String &amp;str2)&lt;br /&gt;{&lt;br /&gt;    String temp = str1;&lt;br /&gt;    return temp.operator+(str2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ostream&amp; operator &lt;&lt; (ostream &amp;outputStream,String &amp;str)&lt;br /&gt;{&lt;br /&gt;    outputStream &lt;&lt; str.wd;&lt;br /&gt;    return outputStream;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;istream&amp; operator &gt;&gt; (istream &amp;inputStream,String &amp;str)&lt;br /&gt;{&lt;br /&gt;    char *p;&lt;br /&gt;    inputStream &gt;&gt; p;&lt;br /&gt;    str = p;&lt;br /&gt;    return inputStream;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char&amp; String :: operator [] (int n) const&lt;br /&gt;{&lt;br /&gt;    return wd[n];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*********ASSIGN FUNCTION************/&lt;br /&gt;&lt;br /&gt;String&amp; String:: assign (const String &amp;str,int index,int len)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,str.length());&lt;br /&gt;    ValidateIndex(len,str.length());&lt;br /&gt;    String temp = str;&lt;br /&gt;    temp.erase(0,index);&lt;br /&gt;    temp[len] = '\0';&lt;br /&gt;    *this = temp;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/********INSERT FUNCTION*************/&lt;br /&gt;&lt;br /&gt;String&amp; String:: insert(const String &amp;str,int x)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(x,Length);&lt;br /&gt;    if(x==0)&lt;br /&gt;    {&lt;br /&gt;        *this = str + *this;&lt;br /&gt;        return *this;&lt;br /&gt;    }&lt;br /&gt;    String cpy;&lt;br /&gt;    cpy.assign(*this,x,Length);&lt;br /&gt;    this-&gt;assign(*this,0,x);&lt;br /&gt;    *this = *this + str;&lt;br /&gt;    *this+=cpy;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/********APPEND FUNCTIONS************/&lt;br /&gt;&lt;br /&gt;String&amp; String:: append (const String &amp;str,int index,int len)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,str.length());&lt;br /&gt;    ValidateIndex(len,str.length());&lt;br /&gt;    int n = index+len;&lt;br /&gt;    for ( index; index &lt; n; index++)&lt;br /&gt;    *this = *this + str[index];&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String:: append (const String &amp;str,int num)&lt;br /&gt;{&lt;br /&gt;    for (int i=1;i &lt;= num;i++)&lt;br /&gt;    *this = *this + str;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*******COMPARE FUNCTIONS************/&lt;br /&gt;&lt;br /&gt;int String :: compare (const String &amp;str,int n,int l)&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp.assign (str,n,l);&lt;br /&gt;    return *this &lt; temp?-1:*this &gt; temp?1:0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String :: compare (int nc,int lc,const String &amp;str,int n,int l)&lt;br /&gt;{&lt;br /&gt;    String temp,tempc;&lt;br /&gt;    temp.assign (str,n,l);&lt;br /&gt;    tempc.assign (*this,nc,lc);&lt;br /&gt;    return tempc &lt; temp?-1:tempc &gt; temp?1:0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/********ERASE FUNCTIONS*************/&lt;br /&gt;&lt;br /&gt;String&amp; String:: erase (int n,int l)&lt;br /&gt;{&lt;br /&gt;    if(*this=="")&lt;br /&gt;    {&lt;br /&gt;        return *this;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if(n &lt; 0)&lt;br /&gt;    {&lt;br /&gt;        n = 0;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (n+l  &gt;=  Length)&lt;br /&gt;    {&lt;br /&gt;        this-&gt;assign(*this,0,n);&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        String temp = *this;&lt;br /&gt;        int nd = n + l;&lt;br /&gt;        for (n,nd;n &lt; Length;n++,nd++)&lt;br /&gt;        temp[n] = temp[nd];&lt;br /&gt;        *this = temp;&lt;br /&gt;    }&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String:: erase_upto (const char &amp;ch)&lt;br /&gt;{&lt;br /&gt;    String temp = *this;&lt;br /&gt;    for (int n=0;n &lt; Length;n++)&lt;br /&gt;    if(temp[n] == ch)&lt;br /&gt;    break;&lt;br /&gt;    temp.erase(0,n);&lt;br /&gt;    if(n &lt; Length)&lt;br /&gt;    *this = temp;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String:: erase_all_digits ()&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp = *this;&lt;br /&gt;    for (int n=0;n &lt; Length;n++)&lt;br /&gt;    {&lt;br /&gt;        if(isdigit(temp[n]))&lt;br /&gt;        {&lt;br /&gt;            temp.erase(n,1);&lt;br /&gt;            n--;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    *this = temp;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String:: erase_all_isspace_chars ()&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp = *this;&lt;br /&gt;    for (int n=0;n &lt; Length;n++)&lt;br /&gt;    {&lt;br /&gt;        if(isspace(temp[n]))&lt;br /&gt;        {&lt;br /&gt;            temp.erase(n,1);&lt;br /&gt;            n--;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    *this = temp;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/******SUBSTRING FUNCTIONS***********/&lt;br /&gt;&lt;br /&gt;String String:: substr(int index,int num)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    ValidateIndex(num,Length);&lt;br /&gt;    String temp;&lt;br /&gt;    if( index+num &gt; Length)&lt;br /&gt;    temp.assign(*this,index,Length);&lt;br /&gt;    else&lt;br /&gt;    temp.assign(*this,index,num);&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String:: substr(char n,char m)&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp = this-&gt;substr(n,m,0);&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String:: cut_substr(char n,char m)&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp = this-&gt;substr(n,m,1);&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*********FIND FUNCTIONS*************/&lt;br /&gt;&lt;br /&gt;int String:: find(const String &amp;str,int index=0)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    int c,count = 0;&lt;br /&gt;    for (index; index &lt; Length ;index++)&lt;br /&gt;    {&lt;br /&gt;        if (wd[index] == str[0])&lt;br /&gt;        {&lt;br /&gt;            c = index;&lt;br /&gt;            for (int j=0; j &lt; str.length();j++,c++)&lt;br /&gt;            if (wd[c] == str[j])&lt;br /&gt;            count++;&lt;br /&gt;            if (count == str.length())&lt;br /&gt;            return index;&lt;br /&gt;            count = 0;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String:: find(const String &amp;str,int index,int num)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    ValidateIndex(num,Length);&lt;br /&gt;    int c,count=0,flag=-1;&lt;br /&gt;    int len_a = str.length();&lt;br /&gt;    int nd = index+num-1;&lt;br /&gt;    for (index; index &lt;= nd;index++)&lt;br /&gt;    {&lt;br /&gt;        if (wd[index] == str[0])&lt;br /&gt;        {&lt;br /&gt;            c = index;&lt;br /&gt;            for (int j=0; j &lt; len_a;j++,c++)&lt;br /&gt;            if (wd[c] == str[j])&lt;br /&gt;            count++;&lt;br /&gt;            if (count == len_a)&lt;br /&gt;            flag = index;&lt;br /&gt;            if (count != len_a)&lt;br /&gt;            count = 0;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return flag;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String:: find_first_of(const String &amp;str,int index=0)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    int count = 0;&lt;br /&gt;    for (index; index &lt;= Length-1;index++)&lt;br /&gt;    for (int i=0;i &lt;= str.Length-1;i++)&lt;br /&gt;    {&lt;br /&gt;        if (wd[index] != str.wd[i])&lt;br /&gt;        {&lt;br /&gt;            count = 0;&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            int c = index;&lt;br /&gt;            for (int j=0; j &lt; str.Length;j++,c++)&lt;br /&gt;            if (wd[c] == str.wd[j])&lt;br /&gt;            count++;&lt;br /&gt;            if(count==str.Length)&lt;br /&gt;            return index;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String:: find_first_not_of(const String &amp;str,int index=0)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    int count = 0;&lt;br /&gt;    for (index; index &lt;= Length-1;index++)&lt;br /&gt;    {&lt;br /&gt;        for (int i=0;i &lt;= str.Length-1;i++)&lt;br /&gt;        {&lt;br /&gt;            if (wd[index] == str.wd[i])&lt;br /&gt;            {&lt;br /&gt;                count = 0;&lt;br /&gt;                break;&lt;br /&gt;            }&lt;br /&gt;            count++;&lt;br /&gt;        }&lt;br /&gt;        if(count==str.Length)&lt;br /&gt;        return index;&lt;br /&gt;        continue;&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String:: find_last_of(const String &amp;str,int index=0)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    int count = 0;&lt;br /&gt;    String temp,temp1;&lt;br /&gt;    temp = *this;&lt;br /&gt;    temp1 = str;&lt;br /&gt;    strrev(temp);&lt;br /&gt;    strrev(temp1);&lt;br /&gt;    for (index; index &lt;= temp.Length-1;index++)&lt;br /&gt;    for (int i=0;i &lt;= temp1.Length-1;i++)&lt;br /&gt;    {&lt;br /&gt;        if (temp.wd[index] != temp1.wd[i])&lt;br /&gt;        {&lt;br /&gt;            count = 0;&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            int c = index;&lt;br /&gt;            for (int j=0; j &lt; temp1.Length;j++,c++)&lt;br /&gt;            if (temp.wd[c] == temp1.wd[j])&lt;br /&gt;            count++;&lt;br /&gt;            if(count==temp1.Length)&lt;br /&gt;            return temp.Length-index-temp1.Length;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String:: find_last_not_of(const String &amp;str,int index=0)&lt;br /&gt;{&lt;br /&gt;    ValidateIndex(index,Length);&lt;br /&gt;    int count = 0;&lt;br /&gt;    String temp,temp1;&lt;br /&gt;    temp = *this;&lt;br /&gt;    temp1 = str;&lt;br /&gt;    strrev(temp);&lt;br /&gt;    strrev(temp1);&lt;br /&gt;    for (index; index &lt;= temp.Length-1;index++)&lt;br /&gt;    {&lt;br /&gt;        for (int i=0;i &lt;= str.Length-1;i++)&lt;br /&gt;        {&lt;br /&gt;            if (temp.wd[index] == str.wd[i])&lt;br /&gt;            {&lt;br /&gt;                count = 0;&lt;br /&gt;                break;&lt;br /&gt;            }&lt;br /&gt;            count++;&lt;br /&gt;        }&lt;br /&gt;        if(count==str.Length)&lt;br /&gt;        return temp.Length-index;&lt;br /&gt;        continue;&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/************FIND AND MODIFY FUNCTIONS*********/&lt;br /&gt;&lt;br /&gt;String String:: find_first_and_replace (const String &amp;src,const String &amp;dest)&lt;br /&gt;{&lt;br /&gt;    int index = 0;&lt;br /&gt;    if( ( index = this-&gt;find(src) ) == -1)&lt;br /&gt;    return *this;&lt;br /&gt;    String Pre,Post;&lt;br /&gt;    Pre.assign(*this,0,index);&lt;br /&gt;    Post.assign(*this,index+src.length(),Length);&lt;br /&gt;    *this = Pre + dest + Post;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String:: find_and_replace_all (const String &amp;src,const String &amp;dest)&lt;br /&gt;{&lt;br /&gt;    if( src == dest )&lt;br /&gt;    return *this;&lt;br /&gt;&lt;br /&gt;    int index = 0;&lt;br /&gt;    String temp,temp1 = *this,temp2;&lt;br /&gt;    while( (index = temp1.find(src) ) != -1)&lt;br /&gt;    {&lt;br /&gt;        temp2.assign(temp1,0,index);&lt;br /&gt;        temp = temp + temp2 + dest;&lt;br /&gt;        temp1.erase(0,index);&lt;br /&gt;        temp1.find_first_and_remove(src);&lt;br /&gt;    }&lt;br /&gt;    if(temp == '\0')&lt;br /&gt;    temp = *this;&lt;br /&gt;    *this = temp;&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String:: find_first_and_remove (const String &amp;str)&lt;br /&gt;{&lt;br /&gt;    int index = 0;&lt;br /&gt;    if( ( index = this-&gt;find(str) ) == -1)&lt;br /&gt;    return *this;&lt;br /&gt;    String Pre = "" , Post = "";&lt;br /&gt;    Pre.assign(*this,0,index);&lt;br /&gt;    Post.assign(*this,index+str.length(),Length);&lt;br /&gt;    *this = Pre + Post;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String String:: find_and_remove_all (const String &amp;str)&lt;br /&gt;{&lt;br /&gt;    while(this-&gt;find(str) != -1)&lt;br /&gt;    find_first_and_remove(str) ;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/***************CONVERSION FUNCTIONS***********/&lt;br /&gt;&lt;br /&gt;double strtodbl(const String &amp;str)&lt;br /&gt;{&lt;br /&gt;    double dbl;&lt;br /&gt;    dbl = strtod( str.c_str(), NULL);&lt;br /&gt;    return dbl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String dbltostr(double dbl)&lt;br /&gt;{&lt;br /&gt;    char *str;&lt;br /&gt;    int dec, sign, ndig = 5;&lt;br /&gt;    str = fcvt(dbl, ndig, &amp;dec, &amp;sign);&lt;br /&gt;    String temp = str;&lt;br /&gt;    temp.insert('.',dec);&lt;br /&gt;    if(sign == 1)&lt;br /&gt;    temp = '-' + temp;&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int strtoint(const String &amp;str)&lt;br /&gt;{&lt;br /&gt;       return (int)strtodbl(str);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String inttostr(int x)&lt;br /&gt;{&lt;br /&gt;    char *str;&lt;br /&gt;    int dec, sign, ndig = 5;&lt;br /&gt;    str = fcvt((double)(x), ndig, &amp;dec, &amp;sign);&lt;br /&gt;    String temp = str;&lt;br /&gt;    temp.erase(dec,temp.length());&lt;br /&gt;    if(sign == 1)&lt;br /&gt;    temp = '-' + temp;&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/***************MISCELLANEOUS FUNCTIONS*********/&lt;br /&gt;&lt;br /&gt;void String :: Delete()&lt;br /&gt;{&lt;br /&gt;    delete wd;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String :: length() const&lt;br /&gt;{&lt;br /&gt;    return Length;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char* String :: c_str() const&lt;br /&gt;{&lt;br /&gt;    return this-&gt;wd;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool String :: IsEmpty()&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    return *this==temp?true:false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String :: clear()&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    *this = temp;&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void String ::swap(String &amp;str)&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp = *this;&lt;br /&gt;    *this = str;&lt;br /&gt;    str = temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String&amp; String:: sort ()&lt;br /&gt;{&lt;br /&gt;    for (int i=0; i &lt;= Length-2;i++)&lt;br /&gt;    for (int j=i+1; j &lt;= Length-1;j++)&lt;br /&gt;    if (wd[i] &lt; wd[j])&lt;br /&gt;    {&lt;br /&gt;        char temp;&lt;br /&gt;        temp = wd[i];&lt;br /&gt;        wd[i] = wd[j];&lt;br /&gt;        wd[j] = temp;&lt;br /&gt;    }&lt;br /&gt;    strrev(*this);&lt;br /&gt;    return *this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int String :: Copy_to_array (char *ch,int l,int n=0)&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    temp.assign (*this,n,l);&lt;br /&gt;    strcpy(ch,temp.wd);&lt;br /&gt;    return l;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String strrev(String &amp;str)&lt;br /&gt;{&lt;br /&gt;    strrev(str.wd);&lt;br /&gt;    return str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String strupr(String &amp;str)&lt;br /&gt;{&lt;br /&gt;    strupr(str.wd);&lt;br /&gt;    return str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String strlwr(String &amp;str)&lt;br /&gt;{&lt;br /&gt;    strlwr(str.wd);&lt;br /&gt;    return str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void gets( String &amp;str )&lt;br /&gt;{&lt;br /&gt;    char *cp = new char[100001];&lt;br /&gt;    int i = 0;&lt;br /&gt;    char key;&lt;br /&gt;    while(1)&lt;br /&gt;    {&lt;br /&gt;        key = getch();&lt;br /&gt;        if(key == '\r')&lt;br /&gt;        {&lt;br /&gt;            cp[i] = '\0';&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;        if ( key == '\b' &amp;&amp; i != 0)&lt;br /&gt;        {&lt;br /&gt;            i--;&lt;br /&gt;            cout &lt;&lt; '\b' &lt;&lt; " " &lt;&lt; '\b';&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            cp[i]=key;&lt;br /&gt;            i++;&lt;br /&gt;            cout &lt;&lt; key;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    str = cp;&lt;br /&gt;    delete cp;&lt;br /&gt;    cout &lt;&lt; endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void puts( String str )&lt;br /&gt;{&lt;br /&gt;    cout &lt;&lt; str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/******PROTECTED FUNCTIONS***********/&lt;br /&gt;&lt;br /&gt;String String:: substr(char n,char m,int cut)&lt;br /&gt;{&lt;br /&gt;    String temp;&lt;br /&gt;    int start = 0,last = 0;&lt;br /&gt;    if( (start = this-&gt;find(n,0) ) == -1 )&lt;br /&gt;    start = 0;&lt;br /&gt;    if( (last = this-&gt;find(m,start+1) ) == -1 )&lt;br /&gt;    last = Length;&lt;br /&gt;    temp = this-&gt;substr(start,last-start);&lt;br /&gt;    if(cut == 1)&lt;br /&gt;    this-&gt;erase(start,last-start);&lt;br /&gt;    return temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void String:: ValidateIndex(int &amp;index,int offset = 0)&lt;br /&gt;{&lt;br /&gt;    if( index &lt; 0 )&lt;br /&gt;    index = 0;&lt;br /&gt;    if( index &gt; offset )&lt;br /&gt;    index = offset;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#endif&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*#################*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt; &lt;span style="font-weight: bold;"&gt;/*End Of J_STRING.H*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;/*#################*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;iostream.h&gt;&lt;conio.h&gt;&lt;string.h&gt;&lt;ctype.h&gt;&lt;stdio.h&gt;&lt;stdlib.h&gt;&lt;math.h&gt;&lt;str?true:*this str="" true="" void="" this="*this" cpy="" wd="new" length="" const="" string="" temp="" return="" operator=""&gt;&lt;/str?true:*this&gt;&lt;/math.h&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;/ctype.h&gt;&lt;/string.h&gt;&lt;/conio.h&gt;&lt;/iostream.h&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Using the 'String' Class&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;To use the class see the code below:-&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/R9FUR0PkqqI/AAAAAAAAAR8/rKpOETSUtp0/s1600-h/StrTest.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/R9FUR0PkqqI/AAAAAAAAAR8/rKpOETSUtp0/s320/StrTest.JPG" alt="" id="BLOGGER_PHOTO_ID_5175010111883881122" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;Output:-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iqbIgylZYps/R9FUYkPkqrI/AAAAAAAAASE/YOX2dyYosv8/s1600-h/StrTestExe.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iqbIgylZYps/R9FUYkPkqrI/AAAAAAAAASE/YOX2dyYosv8/s320/StrTestExe.JPG" alt="" id="BLOGGER_PHOTO_ID_5175010227847998130" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Compiler Used - &lt;span style="color: rgb(255, 204, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TURBO C++ Version 3.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;Download the source code and exe files from &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://jas.kaleka.googlepages.com/j_string_h.rar"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-4631805477284626262?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/4631805477284626262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=4631805477284626262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4631805477284626262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4631805477284626262'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/03/string-in-turbo-c.html' title='&quot;String&quot; in TURBO C++'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iqbIgylZYps/R9FUR0PkqqI/AAAAAAAAAR8/rKpOETSUtp0/s72-c/StrTest.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-7038196614227128937</id><published>2008-02-24T09:35:00.001+05:30</published><updated>2008-11-13T14:33:57.557+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pinout n Working'/><title type='text'>IC ULN 2803 Pinout &amp; Working</title><content type='html'>&lt;span style="font-weight: bold;font-family:verdana;" &gt;Introduction&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;IC ULN2803 consists of octal high voltage, high current darlington transistor arrays. The eight NPN Darlington connected transistors in this family of arrays are ideally suited for interfacing between low logic level digital circuitry (such as TTL, CMOS or PMOS/NMOS) and the higher current/voltage requirements of lamps, relays, printer hammers or other similar loads for a broad range of computer, industrial, and consumer applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Features&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Eight Darlingtons with Common Emitter.&lt;/li&gt;&lt;li&gt;Open–collector outputs.&lt;/li&gt;&lt;li&gt;Free wheeling clamp diodes for transient suppression.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Output Current to 500 mA.&lt;/li&gt;&lt;li&gt;Output Voltage to 50 V.&lt;/li&gt;&lt;li&gt;Inputs pinned opposite outputs to simplify board layout.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;br /&gt;Pinout&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/R8FEQCqrcxI/AAAAAAAAARs/WsJZXxKC8QQ/s1600-h/ULN+2803+Pinout.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/R8FEQCqrcxI/AAAAAAAAARs/WsJZXxKC8QQ/s320/ULN+2803+Pinout.jpg" alt="ULN2803 Pinout" id="BLOGGER_PHOTO_ID_5170488889582514962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style=""&gt;Working&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=""&gt;The ULN 2803 IC consists of eight NPN Darlington connected transistors (often called a Darlington pair). Darlington pair consists of two bipolar transistors such that the current amplified by the first is amplified further by the second to get a high current gain β or h&lt;sub&gt;FE&lt;/sub&gt;. The figure shown below is one of the eight Darlington pairs of ULN 2803 IC.&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/R8FEmCqrcyI/AAAAAAAAAR0/xjbyjzsfqGQ/s1600-h/ULN+2803+Internal+Darlington+Pair.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/R8FEmCqrcyI/AAAAAAAAAR0/xjbyjzsfqGQ/s320/ULN+2803+Internal+Darlington+Pair.jpg" alt="ULN 2803 Internal Darlington Pair" id="BLOGGER_PHOTO_ID_5170489267539637026" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R8FAlSqrcwI/AAAAAAAAARk/AIta4DymvjU/s1600-h/ULN+2803+Internal+Darlington+Pair.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Now 2 cases arise:-&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;Case 1: When IN is 0 volts.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=""&gt;Q1 and Q2 both will not conduct as there is no base current provided to them. Thus, nothing will appear at the output (OUT).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;Case 2: When IN is 5 volts.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=""&gt;Input current will increase and both transistors Q1 and Q2 will begin to conduct. Now, input current of Q2 is combination of input current and emitter current of Q1, so Q2 will conduct more than Q1 resulting in higher current gain which is very much required to meet the higher current requirements of devices like motors, relays etc. Output current flows through Q2 providing a path (sink) to ground for the external circuit that the output is applied to. Thus, when a 5V input is applied to any of the input pins (1 to 8), output voltage at corresponding output pin (11 to 18) drops down to zero providing GND for the external circuit. Thus, the external circuit gets grounded at one end while it is provided +V&lt;sub&gt;cc&lt;/sub&gt; at its other end. So, the circuit gets completed and starts operating.&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;b&gt;&lt;span style=""&gt;DataSheet&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Download ULN2803 datasheet- &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fforums.futura-sciences.com%2Fattachment.php%3Fattachmentid%3D7670%26d%3D1148832291&amp;amp;ei=zkHBR82UCYyI6gOxluy_Dg&amp;amp;usg=AFQjCNGk6kZzr6tcFSFzQatIkK1yzNEuCg&amp;amp;sig2=NBwK-YbTGFmFDO1Df65CyA"&gt;Link 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download ULN2803 datasheet- &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=4&amp;amp;url=http%3A%2F%2Fwww.onsemi.com%2Fpub%2FCollateral%2FULN2803-D.PDF&amp;amp;ei=zkHBR82UCYyI6gOxluy_Dg&amp;amp;usg=AFQjCNHmmi8rO6WYhWl2e3qnRx_nDEqG3Q&amp;amp;sig2=XxbN6ce9YJNTPyaM5j117w"&gt;Link 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-7038196614227128937?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/7038196614227128937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=7038196614227128937' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/7038196614227128937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/7038196614227128937'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/02/uln-2803-pinout-working.html' title='IC ULN 2803 Pinout &amp; Working'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iqbIgylZYps/R8FEQCqrcxI/AAAAAAAAARs/WsJZXxKC8QQ/s72-c/ULN+2803+Pinout.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-5685530300353933714</id><published>2008-01-25T16:46:00.000+05:30</published><updated>2008-11-13T14:33:57.673+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Use of # and ##</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use of # and ##&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;# (Pound Sign) is used as operators to perform token replacement &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;and ## (Double Pound Sign) &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;is &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;used as operators to perform &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;merging during the preprocessor scanning phase.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;The following code illustrates the use of # and ##.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;br /&gt;&lt;textarea name="CodeArea" readonly="readonly" style="background: lightblue; overflow: auto; width: 431px; height: 205px; font-size: 14px;" /&gt;#include &lt;iostream.h&gt;                                                          #include &lt;conio.h&gt;                                                                                                                                                                                                                                               #define Display(s)  cout &lt;&lt; #s                                                     #define _Display(x,y)  cout &lt;&lt; x##y                                                  void main()                                                                            {                                                                                                                                                    clrscr();                                                                         char *xy = " JASPREET SINGH KALEKA";                                                                                                   Display(HELLO! MY NAME IS);                                                  _Display(x,y);                                                                   getch();                                                                          }&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Output :-&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R5nU2l2-MbI/AAAAAAAAAQk/IRK3yKGH_O0/s1600-h/Use+of+%23+and+%23%23+Output.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R5nU2l2-MbI/AAAAAAAAAQk/IRK3yKGH_O0/s320/Use+of+%23+and+%23%23+Output.JPG" alt="Use of # and ## Output" id="BLOGGER_PHOTO_ID_5159388882470318514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Compiler Used - &lt;span style="color: rgb(255, 204, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TURBO C++ Version 3.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;Download the source code and exe files from &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://jas.kaleka.googlepages.com/UseofPoundandDoublePoundSign.rar"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-5685530300353933714?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/5685530300353933714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=5685530300353933714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/5685530300353933714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/5685530300353933714'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/01/use-of-and.html' title='Use of # and ##'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iqbIgylZYps/R5nU2l2-MbI/AAAAAAAAAQk/IRK3yKGH_O0/s72-c/Use+of+%23+and+%23%23+Output.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-6562671265532267304</id><published>2008-01-25T15:52:00.000+05:30</published><updated>2008-11-13T14:33:57.762+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Display All 256 Keyboard Characters (ASCII)</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ASCII &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;characters&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;- &lt;/span&gt; This is the set    familiar from the dawn of computing; all of these characters correspond to keyboard    keys.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;0-31 are control characters.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;32 is the space.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;48-57 are numbers.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;65-90 are upper-case letters.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;97-122    are lower-case letters.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Rest are punctuation and symbols.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;Th&lt;span style="font-size:100%;"&gt;e &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;a style="font-weight: bold;" href="http://jas.kaleka.googlepages.com/All256Chars.rar"&gt;code&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt; is&lt;/span&gt; used to display all these keyboard characters by using key combinations like CTRL+ PA , ALT+253 etc.&lt;br /&gt;Note:-&lt;br /&gt;Some of the characters are not displayable like \a (or Beep,&lt;br /&gt;used to  produce a  beep  sound) , \b (or Backspace) etc.&lt;br /&gt;Below are some of the displayable characters shown.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iqbIgylZYps/R5nBEF2-MZI/AAAAAAAAAQU/7NdIuUD97Lw/s1600-h/256+Keyboard+Characters.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iqbIgylZYps/R5nBEF2-MZI/AAAAAAAAAQU/7NdIuUD97Lw/s400/256+Keyboard+Characters.JPG" alt="256 Keyboard Characters" id="BLOGGER_PHOTO_ID_5159367124165996946" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;br /&gt;Compiler Used - &lt;span style="color: rgb(255, 204, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TURBO C++ Version 3.0&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;font-size:130%;"  &gt;Download the source code and exe files from &lt;a href="http://jas.kaleka.googlepages.com/All256Chars.rar"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:130%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-6562671265532267304?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/6562671265532267304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=6562671265532267304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/6562671265532267304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/6562671265532267304'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/01/display-all-256-keyboard-characters.html' title='Display All 256 Keyboard Characters (ASCII)'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iqbIgylZYps/R5nBEF2-MZI/AAAAAAAAAQU/7NdIuUD97Lw/s72-c/256+Keyboard+Characters.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-9006930144910269569</id><published>2008-01-23T15:15:00.000+05:30</published><updated>2008-11-13T14:33:57.935+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>Sum Of Digits</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:130%;" &gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sum Of Digits&lt;br /&gt;&lt;/span&gt;&lt;span&gt;The following code is used to find the sum of digits of a number.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;textarea name="CodeArea" readonly="readonly" style="background: lightblue; overflow: auto; width: 431px; height: 205px; font-size: 14px;" /&gt;#include &lt;iostream.h&gt;                                                   #include &lt;conio.h&gt;                                                                                                                     void main()                                                                               {                                                                                                 clrscr();                                                                                        long n,num;                                                                                            cout &lt;&lt; "Enter a number -&gt; ";                                                                                                                                                                         cin &gt;&gt; n;                                                                           cout &lt;&lt; "\n\nSum of digits of " &lt;&lt; num &lt;&lt; " is -&gt; ";                                cout&lt;&lt; ((num=n,n=(n-1)%9+1)&lt;0?-n:n);                                                           getch();                                                                          }&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Output :-&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iqbIgylZYps/R5cRvl2-MYI/AAAAAAAAAQM/COtgnH_YAB8/s1600-h/Sum+of+digits+Output.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iqbIgylZYps/R5cRvl2-MYI/AAAAAAAAAQM/COtgnH_YAB8/s200/Sum+of+digits+Output.JPG" alt="Sum Of Digits Output" id="BLOGGER_PHOTO_ID_5158611407490396546" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Compiler Used - &lt;span style="color: rgb(255, 204, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TURBO C++ Version 3.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Download the source code and exe files from &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://jas.kaleka.googlepages.com/SumOfDigits.rar"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-9006930144910269569?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/9006930144910269569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=9006930144910269569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/9006930144910269569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/9006930144910269569'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/01/cc-sum-of-digits-following-code-is-used.html' title='Sum Of Digits'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iqbIgylZYps/R5cRvl2-MYI/AAAAAAAAAQM/COtgnH_YAB8/s72-c/Sum+of+digits+Output.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-4455463624642188431</id><published>2008-01-14T19:06:00.000+05:30</published><updated>2010-08-10T21:07:38.525+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parallel Port'/><title type='text'>Interfacing RELAYs using the Parallel Port</title><content type='html'>&lt;span style="color: rgb(255, 153, 0);font-family:verdana;" &gt;If you haven't read my previous article&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; "&lt;/span&gt;&lt;a style="font-family: verdana;" href="http://jaspreetscodezone.blogspot.com/2007/12/what-is-port-port-contains-set-of.html"&gt;Basics of Parallel Port&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;" &lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);font-family:verdana;" &gt;then I would suggest you to read &lt;a href="http://jaspreetscodezone.blogspot.com/2007/12/what-is-port-port-contains-set-of.html"&gt;it&lt;/a&gt; first.&lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);font-family:verdana;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Xfut8wnHvM0&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/Xfut8wnHvM0&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Introduction&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;In this article I will first tell you about how to build the Relay interface circuit for the Parallel Port and then how to control the circuit using software. With this very basic prototype you will be able to learn a lot how the parallel port works, how a relay works and the use of ULN2803 IC. So, I'll start with the circuit first.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Circuit Diagram&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/R4traakwErI/AAAAAAAAAOI/O7nLl315vWU/s1600-h/Interfacing+RELAY+using+the+Parallel+Port.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/R4traakwErI/AAAAAAAAAOI/O7nLl315vWU/s320/Interfacing+RELAY+using+the+Parallel+Port.jpg" alt="Interfacing Relays using the Parallel Port" id="BLOGGER_PHOTO_ID_5155332300009902770" border="0" /&gt;&lt;/a&gt; &lt;span style="font-weight: bold;font-family:verdana;" &gt;Circuit Description&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Components Used:-&lt;/span&gt; &lt;ol style="font-family: verdana;" face="verdana"&gt;&lt;li&gt;One 12V Relay&lt;/li&gt;&lt;li&gt;IC &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; display: inline;font-size:inherit;color:black;"  &gt;&lt;/span&gt;ULN2803&lt;/li&gt;&lt;li&gt;12V power supply&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DB-25 Male Connector&lt;/li&gt;&lt;li&gt;Light Bulb&lt;/li&gt;&lt;li&gt;Zero PCB&lt;/li&gt;&lt;li&gt;Ribbon Wire&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul  style="font-family:verdana;"&gt;&lt;li&gt;Connect the data pins(2 to 9) of the parallel port to pins 1 to 8 of &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; display: inline;font-size:inherit;color:black;"  &gt;&lt;/span&gt;ULN2803 IC.&lt;/li&gt;&lt;li&gt;Connect GND pin 25 of the parallel port to pin 9 of &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; display: inline;font-size:inherit;color:black;"  &gt;&lt;/span&gt;ULN2803 IC.&lt;/li&gt;&lt;li&gt;Connect one side of Relay coil to pin 10 and other side to pin 18 of ULN2803 IC.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Connect a bulb between common terminal of relay and neutral AC wire.&lt;/li&gt;&lt;li&gt;Connect the live AC wire to normally open terminal of relay.&lt;/li&gt;&lt;li&gt;Connect +ve terminal of power supply to pin 10 and -ve terminal to pin 9.&lt;/li&gt;&lt;li&gt;Your circuit is now complete.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Note &lt;/span&gt;- &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;For 12 V power supply I have used the power supply of my computer system. Power supply of a PC has got 4 terminals, of which 2 are GND and the other 2 are +5V and +12V. I have used one GND and +12V terminal to give power supply to ULN2803 IC.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;br /&gt;How the circuit  works?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;The circuit consists of two main parts - ULN2803 IC and a 5 pin Relay. Working of both of them is explained below:-&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;  &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;br /&gt;&lt;br /&gt;Working of Relay&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;  &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;A relay is an electrically operated switch. It allows one circuit to switch a second circuit which is completely separated from the first. For example a low voltage battery circuit can use a relay to switch a 230V AC mains circuit. There is no electrical connection inside the relay between the two circuits, the link is magnetic and mechanical.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iqbIgylZYps/R4y6d6kwEuI/AAAAAAAAAO8/C4I6FYOAwVg/s1600-h/Relay+Operation.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iqbIgylZYps/R4y6d6kwEuI/AAAAAAAAAO8/C4I6FYOAwVg/s320/Relay+Operation.JPG" alt="Relay Operation" id="BLOGGER_PHOTO_ID_5155700696534749922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In the above figure, when controlling switch is closed, current flows through the coil and thus, magnetic field is produced. The resulting magnetic field attracts an armature that is mechanically linked to a set of contacts. The movement makes a connection with a fixed contact and circuit gets completed. When the current to the coil is switched off, the armature is returned by a force approximately half as strong as the magnetic force to its relaxed position and the connection is broken.&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;  &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;The relay's switch connections are usually labeled COM, N/C and N/O:&lt;br /&gt;&lt;/span&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;COM = Common, always connect to this, it is the moving part of the switch.&lt;/li&gt;&lt;li&gt; N/C = Normally Closed, COM is connected to this when the relay coil is off.&lt;/li&gt;&lt;li&gt;N/O = Normally Open, COM is connected to this when the relay coil is on.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;Connect to COM and N/O if you want the switched circuit to be on when the relay coil is on.&lt;/li&gt;&lt;li&gt;Connect to COM and N/C if you want the switched circuit to be on when the relay coil is off.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;Working of ULN2803 IC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;For working of ULN2803 click &lt;a href="http://jaspreetscodezone.blogspot.com/2008/02/uln-2803-pinout-working.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Circuit Working&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Working of this circuit is very simple. When data at pin 2 is '1', i.e., when 5V is coming out of pin 2 then, pin 1 of &lt;/span&gt;ULN280&lt;span style="font-family:verdana;"&gt;3 IC receives 5V input and thus its pin 18 provides GND to one end of relay coil. The other end of relay coil is given +Vcc (12V), so the coil gets energized and the &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;C&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;OM gets connected to the N/O contact and the AC mains circuit gets completed and the bulb glows.&lt;br /&gt;Now, bulb will glow as long as data at pin 2 is high. When data at pin 2 becomes low, then the GND provided by pin 18 of &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; display: inline;font-size:inherit;color:black;"  &gt;&lt;/span&gt;&lt;/span&gt;ULN2803&lt;span style="font-family:verdana;"&gt; IC vanishes and coil gets de-energized and thus COM is connected back to N/C contact. Thus, external AC mains circuit is broken and bulb stops glowing.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Software&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;  &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;To control any port we need a kernel mode driver software. Softwares generally run in USER mode. But to control the Parallel Port we need a software running in kernel mode. I have used C#.Net for developing this software.&lt;/span&gt; &lt;ol  style="font-family:verdana;"&gt;&lt;li&gt;Download and install &lt;span style="font-size:100%;"&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=90&amp;amp;p=&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe"&gt;Microsoft .NET Framework Version 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now download and install  &lt;a href="http://jas.kaleka.googlepages.com/ParallelPortControlSetup.rar"&gt;&lt;/a&gt;&lt;a href="https://sites.google.com/site/jaskaleka/ParallelPortControlSetup.rar"&gt;My Parallel  Port  Control  Setup.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://sites.google.com/site/jaskaleka/ParallelPortControlCSharpSourceCode.rar"&gt;Download C#.net source code.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;For more info on software click&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;a style="color: rgb(255, 0, 0);" href="http://jaspreetscodezone.blogspot.com/2008/03/parallel-port-user-control.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-4455463624642188431?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/4455463624642188431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=4455463624642188431' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4455463624642188431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4455463624642188431'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2008/01/interfacing-relays-using-parallel-port.html' title='Interfacing RELAYs using the Parallel Port'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iqbIgylZYps/R4traakwErI/AAAAAAAAAOI/O7nLl315vWU/s72-c/Interfacing+RELAY+using+the+Parallel+Port.jpg' height='72' width='72'/><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-6579203497543613775</id><published>2007-12-27T11:33:00.000+05:30</published><updated>2010-08-10T21:03:21.927+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parallel Port'/><title type='text'>Interfacing LEDs using the Parallel Port</title><content type='html'>&lt;span style="color: rgb(255, 153, 0);"&gt;If you haven't read my previous article&lt;/span&gt; "&lt;a href="http://jaspreetscodezone.blogspot.com/2007/12/what-is-port-port-contains-set-of.html"&gt;Basics of Parallel Port&lt;/a&gt;" &lt;span style="color: rgb(255, 153, 0);"&gt;then I would suggest you to read &lt;a href="http://jaspreetscodezone.blogspot.com/2007/12/what-is-port-port-contains-set-of.html"&gt;it&lt;/a&gt; first.&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6FvAOkMax0s&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/6FvAOkMax0s&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this article I will first tell you about how to build the LED interface circuit for the Parallel Port and then how to control the circuit using software. With this very basic prototype you will be able to learn a lot how the parallel port works. So,  I'll  start with the circuit first.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Circuit Diagram&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R3kVXKkwEpI/AAAAAAAAANg/ZzW1uejuaMk/s1600-h/Interfacing+LEDs+using+Parallel+Port.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R3kVXKkwEpI/AAAAAAAAANg/ZzW1uejuaMk/s320/Interfacing+LEDs+using+Parallel+Port.JPG" alt="Interfacing LED using Parallel Port" id="BLOGGER_PHOTO_ID_5150171136594547346" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Circuit Description&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Components Used:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Eight RED colored LEDs&lt;/li&gt;&lt;li&gt;DB-25 Male Connector&lt;/li&gt;&lt;li&gt;Zero PCB&lt;/li&gt;&lt;li&gt;Ribbon Wire&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;All you need to do is to connect each data pin from the parallel port (pins 2 to 9) to positive terminal of a LED and one ground pin (any one from 18 to 25) to  the negative terminal of all the LEDs.&lt;br /&gt;Since LEDs have polarity, you should pay attention to correctly locate its positive and negative terminals. If you pay close attention, you will see that LEDs are not completely rounded, the cathode side is a little bit flat. Also the longer leg of LED is anode or positive terminal and the shorter leg is cathode or negative terminal.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R3kWDKkwEqI/AAAAAAAAANo/M0NnNUsuZNs/s1600-h/LED+Pinout.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R3kWDKkwEqI/AAAAAAAAANo/M0NnNUsuZNs/s320/LED+Pinout.JPG" alt="LED Pinout" id="BLOGGER_PHOTO_ID_5150171892508791458" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;How the circuit  works?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Working of this circuit is pretty simple. When data at any pin 2 - 9 is '1' , that particular LED will glow, else if data is '0', the LED will stop glowing.&lt;br /&gt;&lt;br /&gt;When data at any pin from 2 - 9 is '1',then it means that 5 volts is coming out of that pin and is going towards +ve terminal of LED. Circuit gets completed through ground pin (any from 18 to 25) and the LED glows until data at that particular pin is not '0'.&lt;br /&gt;&lt;br /&gt;This data flow is controlled using software discussed below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To control any port we need a kernel mode driver software. Softwares generally run in USER mode. But to control the Parallel Port we need a software running in kernel mode. I have used C#.Net for developing this software.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and install &lt;span style="font-size:100%;"&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=90&amp;amp;p=&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe"&gt;Microsoft .NET Framework Version 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now download and install  &lt;a href="http://jas.kaleka.googlepages.com/ParallelPortControlSetup.rar"&gt;&lt;/a&gt;&lt;a href="https://sites.google.com/site/jaskaleka/ParallelPortControlSetup.rar"&gt;My Parallel  Port  Control  Setup.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://sites.google.com/site/jaskaleka/ParallelPortControlCSharpSourceCode.rar"&gt;Download the source code in C#.Net.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;For more info on software click&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;a style="color: rgb(255, 0, 0);" href="http://jaspreetscodezone.blogspot.com/2008/03/parallel-port-user-control.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;In The End&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;This article was just an building block to the parallel port interfacing.&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify; color: rgb(255, 0, 0);font-family:verdana;"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Now you are ready to make your second parallel port controlled device. Read my next article on&lt;/span&gt; &lt;a href="http://jaspreetscodezone.blogspot.com/2008/01/interfacing-relays-using-parallel-port.html"&gt;Interfacing RELAYs using the Parallel Port.&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="verdana" style="text-align: justify; color: rgb(255, 0, 0);"&gt;&lt;a href="http://jaspreetscodezone.blogspot.com/2008/01/interfacing-relays-using-parallel-port.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-6579203497543613775?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/6579203497543613775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=6579203497543613775' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/6579203497543613775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/6579203497543613775'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2007/12/interfacing-leds-using-parallel-port.html' title='Interfacing LEDs using the Parallel Port'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iqbIgylZYps/R3kVXKkwEpI/AAAAAAAAANg/ZzW1uejuaMk/s72-c/Interfacing+LEDs+using+Parallel+Port.JPG' height='72' width='72'/><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2079058808839696112.post-4963234289618650325</id><published>2007-12-16T07:59:00.000+05:30</published><updated>2008-11-13T14:33:59.721+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parallel Port'/><title type='text'>Introduction To Parallel Port</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FHCvrn9B6W0&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/FHCvrn9B6W0&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:130%;" &gt;What is a port?&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;A port contains a set of signal lines that the CPU sends or receives data with other components. We use ports to communicate via modem, printer, keyboard, mouse etc. In signaling, open signals are "1" and close signals are "0" so it is like binary system. A Standard Parallel Port sends 8 bits and receives 5 bits at a time. The serial port RS-232 sends and receive 1 bit at a time.&lt;br /&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;b style="font-style: italic;"&gt;About Parallel Port&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The Parallel Port is the easiest way to control devices outside the PC, like LEDs, lights and even home appliances. In fact the idea behind parallel port is really simple. It is an 8-bit parallel interface, so we have eight bits available there. Simple put, since each data bit can be set as either “0” (“turned off”) or “1” (“turned on”), we can directly turn on or off up to eight devices.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;Parallel Port has mainly 3 modes &lt;/span&gt;of operation :-&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;SPP - Standard Parallel Port (Discussed in this article).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;EPP - Enhanced Parallel Port (Not discussed in this article).For more info on EPP click &lt;a href="http://beyondlogic.org/epp/epp.htm"&gt;&lt;u&gt;here&lt;/u&gt;.&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;ECP - &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;Extended Capabilities Port &lt;/span&gt; (Not discussed in this article).&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;For more info on ECP click &lt;a href="http://beyondlogic.org/ecp/ecp.htm"&gt;&lt;u&gt;here&lt;/u&gt;.&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;p  style="font-style: italic;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;b style="font-style: italic;"&gt;How it looks?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;On the PC the parallel port uses a 25-pin connector (called DB-25, 25-pin D-sub or 25-pin D-shell), as you can see in figure shown below.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/R2Z1LqkwEdI/AAAAAAAAAKw/5BNm_uLZyY0/s1600-h/Parallel+Port.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/R2Z1LqkwEdI/AAAAAAAAAKw/5BNm_uLZyY0/s320/Parallel+Port.JPG" alt="Parallel Port" id="BLOGGER_PHOTO_ID_5144928467584815570" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;b style="font-style: italic;"&gt;Pin Configuration&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The Parallel Port actually has 32 pins.&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=""&gt;8 - Data Pins (shown in yellow)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;8 - Control Pins (shown in red)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;8 - Status Pins (shown in blue)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt; 8 - Ground Pins (shown in green)&lt;/span&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=""&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R2Z186kwEeI/AAAAAAAAAK4/nZ83sNQGHm0/s1600-h/Parallel+Port+Pins.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R2Z186kwEeI/AAAAAAAAAK4/nZ83sNQGHm0/s320/Parallel+Port+Pins.JPG" alt="Parallel Port Pinout" id="BLOGGER_PHOTO_ID_5144929313693372898" border="0" /&gt;&lt;/a&gt;&lt;span style=""&gt;But only 25 pins were required to run a printer through it, so rest of the pins (not shown in above picture) were not made available outside the mother board.&lt;br /&gt;So, we have in total 25 pins.&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=""&gt;8 - Data Pins&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;4 - Control Pins&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;5 - Status Pins&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;8 - Ground Pins&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;  &lt;b&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Data Pins&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Data pins are used to send 8-bits of data.&lt;span style=""&gt; Pins 2 to 9 are data pins or we can call them as an 8-bit data bus (D0 – D7). This data bus carries 8-bit data at any instant of time as shown below.&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R2Z2V6kwEfI/AAAAAAAAALA/Pe4Jt9sA3D0/s1600-h/Parallel+Data+Transfer.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R2Z2V6kwEfI/AAAAAAAAALA/Pe4Jt9sA3D0/s200/Parallel+Data+Transfer.GIF" alt="Parallel Port Data Transfer" id="BLOGGER_PHOTO_ID_5144929743190102514" border="0" /&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;The type of data it carries is in digital form, i.e. either 0 or 1.&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=""&gt;‘0’ means OFF or 0 volts.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;‘1’ means ON or 5 volts.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;              &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;For example, if pin 2 is carrying ‘0’, then it will give 0 volts at output. And if it is carrying ‘1’, then it will give 5 volts at its output. Similarly we get output as 0 volts or 5 volts from other data pins. &lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;Now a question arises, how can we send data?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle"  style="text-indent: 0in;font-family:verdana;"&gt;&lt;span style=""&gt;Answer to this is pretty simple. Every port on our computer has got some unique hexadecimal address. Parallel Port also has got a specific address. Generally this address is 0x378H.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle"  style="text-indent: 0in;font-family:verdana;"&gt;&lt;span style=""&gt;To find out the address of the parallel port on your computer follow the steps written below:-&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in; font-family: verdana;"&gt;  &lt;/p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;/span&gt;Open Device Manager.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Go to Ports (COM &amp;amp; LPT) item in it.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Double click ECP Printer Port (LPT1).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;A new window will pop up.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;In that window click Resources tab.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Now see the I/O Range. Mine is 0378–037F.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Here 0378 is the starting address of the Parallel Port.&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal"  style="margin-left: 0.25in;font-family:verdana;"&gt;&lt;span style=""&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;      &lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Now we can send data using software programs (discussed later) to this address.&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;Now we know where to send data, but what data we have to send?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;We have to send ‘0’ or ‘1’ to each pin (D0-D7) simultaneously.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;Each Data Pin has been assigned a bit value as shown below.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iqbIgylZYps/R2Z35qkwEkI/AAAAAAAAAL4/2_uyxErxKn4/s1600-h/Data+Table.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_iqbIgylZYps/R2Z35qkwEkI/AAAAAAAAAL4/2_uyxErxKn4/s320/Data+Table.JPG" alt="Parallel Port Data Table" id="BLOGGER_PHOTO_ID_5144931456882053698" border="0" /&gt;&lt;/a&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;Here, D7 is the most significant bit and D0 is the least significant bit.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;This means, if we send &lt;span style=""&gt; &lt;/span&gt;any data say ‘16’ , then ‘1’ will be sent to D4 and ‘0’ to rest of the pins. Similarly ‘255’ will send ‘1’ to each pin.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=""&gt;We can also view it like this:-&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style=""&gt;Binary representation of 16 is 00010000.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;Binary representation of 255 &lt;span style=""&gt; &lt;/span&gt;is 11111111.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;  &lt;p class="MsoNormal" face="verdana"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p class="MsoNormal" face="verdana"&gt;&lt;span style="font-size:100%;"&gt;&lt;p class="MsoNormal" face="verdana"&gt;&lt;span style=""&gt;See the table below for other decimal numbers.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="MsoNormal" face="verdana" style="margin-left: 0.25in;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iqbIgylZYps/R2Z4S6kwEmI/AAAAAAAAAMI/Msi9Yxjw-D4/s1600-h/Binary+Table.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iqbIgylZYps/R2Z4S6kwEmI/AAAAAAAAAMI/Msi9Yxjw-D4/s400/Binary+Table.JPG" alt="Parallel Port Binary Table" id="BLOGGER_PHOTO_ID_5144931890673750626" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;p class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style=""&gt;So, every data is converted to 8-bit binary form and pins are send data accordingly.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: verdana;"&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;b style=""&gt;&lt;span style=""&gt;Status&lt;span style=""&gt; Pins&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;These ports are made for reading signals. The range is like in data ports which are S0-S7. But S0, S1, S2 are invisible in the connector. And the address for this is 0x379.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style=""&gt;Note- Address of data bus is same as that of parallel port. But address of Status Bus is 0x378 + 1, i.e. 0x379 (Address of Data Bus + 1).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style=""&gt;Bit value for these is shown below.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iqbIgylZYps/R2Z4JakwElI/AAAAAAAAAMA/kxGdce4tXwg/s1600-h/Status+Table.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_iqbIgylZYps/R2Z4JakwElI/AAAAAAAAAMA/kxGdce4tXwg/s320/Status+Table.JPG" alt="Parallel Port Status Table" id="BLOGGER_PHOTO_ID_5144931727464993362" border="0" /&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;b&gt;&lt;span style=""&gt;Control Pins&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;This port usually used for sending as well as recieving data. The range is like in data ports C0-C7 but C4, C5, C6, C7 are invisible in connector. And the address for this is 0x37A. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style=""&gt;Note- Address of Control Bus is 0x378 + 2, i.e. 0x37A (Address of Data Bus + 2). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;b style=""&gt;&lt;span style=""&gt;Ground Pins&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;These pins are just used to complete the circuit attached to the parallel port.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; font-family: verdana;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="verdana" style="text-align: justify;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:130%;" &gt;In The End&lt;/span&gt;&lt;br /&gt;This article was just an introduction to the parallel port.&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify; color: rgb(255, 0, 0);font-family:verdana;"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Now you are ready to make your first parallel port controlled device. Read my next article on&lt;/span&gt; &lt;a style="color: rgb(102, 51, 255);" href="http://jaspreetkaleka.blogspot.com/2007/12/interfacing-leds-using-parallel-port.html"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://jaspreetscodezone.blogspot.com/2007/12/interfacing-leds-using-parallel-port.html"&gt;Interfacing LEDs using the Parallel Port.&lt;/a&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="verdana" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2079058808839696112-4963234289618650325?l=jaspreetscodezone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jaspreetscodezone.blogspot.com/feeds/4963234289618650325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2079058808839696112&amp;postID=4963234289618650325' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4963234289618650325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2079058808839696112/posts/default/4963234289618650325'/><link rel='alternate' type='text/html' href='http://jaspreetscodezone.blogspot.com/2007/12/what-is-port-port-contains-set-of.html' title='Introduction To Parallel Port'/><author><name>Jaspreet Kaleka</name><uri>https://profiles.google.com/107271439509824370122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-KC-aCXw3QQw/AAAAAAAAAAI/AAAAAAAAAAA/vkC8ANkfv7s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iqbIgylZYps/R2Z1LqkwEdI/AAAAAAAAAKw/5BNm_uLZyY0/s72-c/Parallel+Port.JPG' height='72' width='72'/><thr:total>23</thr:total></entry></feed>
