<?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-4927073990021425188</id><updated>2011-11-27T16:10:47.864-08:00</updated><title type='text'>Technical Articles</title><subtitle type='html'>This blog has been created to provide you with latest, updated and best in quality Technical Articles. Your Comments and Feedback is highly appreciated.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-7483399968230672368</id><published>2010-07-02T21:28:00.001-07:00</published><updated>2010-07-02T21:28:44.458-07:00</updated><title type='text'>Make Your Own PCBs on Laserjet</title><content type='html'>&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;Hello and welcome to weekend projects. I’m Farhan and I’m Naveed. And this week we are going to show you how to take something like this and turn into something like this, a printed circuit board. A PCB. So the first thing you need to do is make up a circuit. How do you do that? I made up this one myself but you can find circuits online at various sites like discovercircuits.com or many others. Why would we print up our own circuit boards? Why? There are a number of reasons why you might want to have a printed circuit board as opposed to a bred board. Number one, you can get much higher density with printed circuit board. Number two, it’s a little bit more reliable and you have a finished product that’s not going to fall apart and wires pop out. And number three, it’s good because you can use, you can have very precise controls with the parts that you’re using and have odd shaped parts that won’t fit on a bred board. The first part of making a printed circuit board is to define your circuit and this is where you specify what parts are on the board and how to connect them with each other. Once you have your circuit defined then you lay it out on the board. And that involves taking this and making it into something like this. Eagle cat has little bit of a steep learning curve but theres tutorials online that will walk you walk you through it. Once we have our circuit defined, its time to go ahead and get it on the circuit board, to do that we’re going to use the toner transfer method. Toner transfer is basically where you print out your circuit pattern using a laser printer and then transfer the toner that was on the sheet of paper on to a sheet of copper. There’s a lot of different schools of thought on toner transfer. We’re using the method written up by Thomas Gutti and found online. One of the most important things about toner transfer is the choice of paper that you use. This is a very popular choice, staples photo basic gloss. A lot of people had a lot of really great success with this, including myself.&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;The first thing we do is cut our board to size. I like printing out an extra copy of the pattern using that as a template. The dust on this stuff is toxic dust. So, you want to make sure you wear a respiratory protection.&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;To prepare a board, we rough it up. We file down the edges. We clean it with a little bit of acetone. Do this with a scotch brite pad or artificial steel wool because real steel wool will rust and mess things up. Warm up your iron to the hottest possible setting. Use about 30-40 pounds of force. We really lay into this thing. Now the plastic of the toner is attached to the board and the paper. We want to get rid of the paper. so it’s just attached to the board. So, we are going to soak in water. After about 2 minutes of soaking, we’re going to peel off the first layer of paper, exposing the paper that’s underneath. If you don’t do this, you can let this soak overnight and the water still won’t penetrate all the way through. Once it’s soaked for long enough, you want to take it out and rub it with your fingers to get all the paper bits off.&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;Then, its etchant time. There’s lot of different types of etchant. But the one that we are using today is ferric chloride which is the most common variety you can find in your local electronic store. Don’t drink this stuff. It’s toxic. One you get in the etchant, you want to keep the etchant moving over the surface of it. Agitated. Don’t leave it in there for too long. Take it out when the copper that you want gone is gone. Once you are done etchant, we use acetone to remove the existing toner to reveal the shining copper underneath. To drill the holes in our PCB, we’re going to use carbide bits and a dermal drill press. These bits can be got for relatively cheap on EBay. The 0.035 inch drill bit will take care of most of your needs. This is an optional step. I would like to print out a documentation layer that you can put on the top side of the board, to give me a guide when I’m soldering the parts on.&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;Now, we have got our board all soldered up. All that’s left is to cross our fingers, turn it off and see if it works. Great. That was your turn. Go ahead, design some circuits print up your own boards and then you can go ahead and make something like this. We will put the designs on the PDF and I’m going to put this on my bike and you can also make something similar to spruce up a birthday cake or you can hang around town in order to use your local law enforcement. Whatever you do make sure to take pictures of it and put them in the next Flickr pool. Go make some circuits. Have a great weekend.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-7483399968230672368?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/7483399968230672368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/07/make-your-own-pcbs-on-laserjet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/7483399968230672368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/7483399968230672368'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/07/make-your-own-pcbs-on-laserjet.html' title='Make Your Own PCBs on Laserjet'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-928723394300950570</id><published>2010-06-23T21:10:00.000-07:00</published><updated>2010-06-23T21:10:03.494-07:00</updated><title type='text'>'Brand China' takes aim at global electronics giants</title><content type='html'>&lt;div style="border-bottom: solid #B4D2EA 1.0pt; border: none; mso-border-bottom-alt: solid #B4D2EA .75pt; mso-element: para-border-div; padding: 0in 0in 4.0pt 0in;"&gt;  &lt;div class="MsoNormal" style="border: none; line-height: normal; margin-bottom: 3.75pt; mso-border-bottom-alt: solid #B4D2EA .75pt; mso-outline-level: 3; mso-padding-alt: 0in 0in 4.0pt 0in; padding: 0in;"&gt;&lt;b&gt;&lt;span style="color: #333333; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 13.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;'Brand China' takes aim at global electronics giants&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-bottom: dotted #999999 1.0pt; border: none; margin-left: 0in; margin-right: 3.75pt; mso-border-bottom-alt: dotted #999999 .75pt; mso-element: para-border-div; padding: 0in 0in 2.0pt 0in;"&gt;  &lt;div class="MsoNormal" style="border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 3.75pt; mso-border-bottom-alt: dotted #999999 .75pt; mso-outline-level: 5; mso-padding-alt: 0in 0in 2.0pt 0in; padding: 0in;"&gt;&lt;span class="Apple-style-span" style="color: #404040; font-family: Verdana, sans-serif; font-size: 11px;"&gt;After decades building its reputation as the go-to country for electronics manufacturers, China's intention to promote its own brands and produce the world's next Sony or Samsung was obvious during a massive telecoms exhibition in Singapore.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;While foreign giants such as Apple, Dell and Nokia have taken advantage of China's vast pool of cheap labour to manufacture or assemble their products, the country's own electronics firms are now looking to make their presence felt in the global marketplace.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Chinese firms led by heavyweights Huawei Technologies and ZTE Corporation flew the Asian giant's flag proudly at the massive annual CommunicAsia and BroadcastAsia trade fairs in Singapore, signalling the rise of a new power in the industry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;They were the top foreign exhibitors with 257 booths displaying everything from sleek tablet computers to slim mobile phones with Chinese branding, proof that the country is not just a cheap production centre for Western firms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Once dominated by European and North American brands, the global telecoms industry is now more fragmented, and Chinese companies have joined the Japanese and South Koreans on the front lines of the battle for Asian and global market share.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Finland's Nokia is still the world's biggest mobile phone manufacturer, followed by Samsung and LG Electronics, the twin giants of South Korea's high-tech industry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;One of the most popular Chinese brands is Huawei Technologies, which had a massive booth at CommunicAsia displaying its mobile phones and tablets.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;And beyond consumer devices, Chinese firms are also supplying digital encoders and receivers to the telecoms industry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Technology consultancy IDC said the global telecom industry is now worth 1.5 trillion dollars a year, with the mobile sector accounting for than half of the total.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"More and more Chinese companies are paying more attention to the exhibitions overseas," said Tina Feng, who is in charge of international sales with Chengdu Dexin Digital Technology, a wireless equipment maker.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"You know, China has developed very fast so they can supply high-quality stuff now, and they want to show it through their products," she told AFP, beaming with obvious national pride.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;She said her company, just a visitor to the show in 2008, decided to exhibit for the first time this year after spotting plenty of opportunities to reach out to new markets.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"There are many customers from Asia so our company hope to enlarge this market," Feng said.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"It's been rather busy for us at the show. We should be back next year again," she smiled.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Chinese participation at this year's show, which ended Friday, jumped 21 percent from 2009 and the interest is not only coming from the major players, according to organiser Singapore Exhibition Services (SES).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"It is not just the Huawei or the ZTE that you are talking about but you see a lot more group participation, and you also see a lot more of the medium-sized enterprises taking part," said Victor Wong, SES project director for communications events.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;They were also the largest foreign exhibitor last year, but only by a small margin, said Wong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Prior to that, the United States had the biggest number of foreign booths in 2008, but American firms were a distant second at this year's show with 179 exhibitors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"I think one of the reasons for them to come out is they want to export, they find that it is really worthwhile for them to do so because if you continue to do stay in China, you can only compete on price," he said.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"I think we have confidence that the Chinese participation will continue to grow," Wong added.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Alan Yin, a regional sales director with Chinese electronics company Konka Group, is convinced his country has what it takes to produce the world's next Samsung, Sony or Motorola.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"In the past years, we have learnt technology from the Western countries but now a lot of Chinese companies have invested a lot in research and development in the high-tech area.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;"&gt;&lt;span style="color: #404040; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.5pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;"I am sure in the next 10 or 20 years later, Chinese companies will be stronger," Yin said.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-928723394300950570?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/928723394300950570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/brand-china-takes-aim-at-global.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/928723394300950570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/928723394300950570'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/brand-china-takes-aim-at-global.html' title='&apos;Brand China&apos; takes aim at global electronics giants'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-2681565450394842770</id><published>2010-06-15T21:14:00.001-07:00</published><updated>2010-06-15T21:14:39.731-07:00</updated><title type='text'>Geolocation Made easy</title><content type='html'>&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;&lt;b&gt;Geolocation&lt;/b&gt;&amp;nbsp;is the process through which the geographical position related to an user connected to Internet can be obtained basing on the information provided by its&amp;nbsp;&lt;b&gt;IP address&lt;/b&gt;. Knowing the physical location is an important thing, since, using it, a website could provide more detailed information to the user (such as hotels or restaurants close to his/her area, targeted ads, maps and other information related to the traffic or the weather conditions), and, moreover, it is very useful and helpful when used on mobile devices such as laptops, smartphones, or PDAs. IP addresses are assigned to the Internet users by the service provider and they are assigned all over the world basing on geographical areas: basing on this information, the physical location can be easily associated to each IP address (in a similar way to what happens for the telephone numbers). In order to do that operation, a database with the IP &amp;lt;-&amp;gt; location association is required; on the web there are several companies that provides this type of service, either free of charge or not. One of these companies is&amp;nbsp;&lt;b&gt;Maxmind&lt;/b&gt;, with its&amp;nbsp;&lt;b&gt;GeoIP technology&lt;/b&gt;&amp;nbsp;(&lt;a href="http://www.maxmind.com/app/ip-location" style="color: #336299; text-decoration: none;" title="http://www.maxmind.com/app/ip-location"&gt;http://www.maxmind.com/app/ip-location&lt;/a&gt;). By visiting a website powered with GeoIP, it is possible to obtain detailed information about the user’s location, such as: country, region, city, postal code, area code, latitude, longitude, connection speed, ISP, company name, and domain name. MaxMind provides geolocation APIs both for Linux and Windows, and for many different languages, such as C, C#, Java, Pascal, Perl, PHP, Python, Ruby, and so on.&lt;/div&gt;&lt;h3 style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 1.1em; line-height: 20px; margin-bottom: 0.5em;"&gt;GeoIP Javascript Web Service&lt;/h3&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;We will see now the Javascript code provided by MaxMind at&amp;nbsp;&lt;a href="http://www.maxmind.com/app/javascript_city" style="color: #336299; text-decoration: none;"&gt;THIS&lt;/a&gt;&amp;nbsp;address:&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;pre style="background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; font-size: 12px; padding-bottom: 0.75em; padding-left: 1.5em; padding-right: 1.5em; padding-top: 0.75em;"&gt;&lt;script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Country Code:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_country_code());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Country Name:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_country_name());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;City:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_city());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Region:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_region());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;Region Name:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_region_name());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;Latitude:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_latitude());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;Longitude:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_longitude());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Postal Code:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;document.write(geoip_postal_code());&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;Just copy this script in an html page and open it with your favorite web browser: you will see the relevant information related to your geographical position. It’s really very easy, right? GeoIP JavaScript is a service offered by MaxMind to return the Country, Region, City, Latitude, and Longitude for your web visitors. It uses Javascript and is very easy to program, works on both static and dynamically served web pages. You can even produce a graphical output by means of the Google Maps application (visit the website:&amp;nbsp;&lt;a href="http://code.google.com/intl/it-IT/apis/maps/" style="color: #336299; text-decoration: none;" title="http://code.google.com/intl/it-IT/apis/maps/"&gt;http://code.google.com/intl/it-IT/apis/maps/&lt;/a&gt;), centering it providing the coordinates (latitude and longitude) obtained with the MaxMind javascript. It should be noticed that IP geo-location does not always provide the exact geographical position: an approximation is always present depending on the provider’s actual position; moreover, if you are using a private network connection (that is, a VPN) you might not obtain the right information (actually misleading information will be shown, probably).&lt;/div&gt;&lt;h3 style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 1.1em; line-height: 20px; margin-bottom: 0.5em;"&gt;W3C geolocation API&lt;/h3&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;Support for geolocation is provided also by W3C through a specific set of APIs (specifications are available at&amp;nbsp;&lt;a href="http://dev.w3.org/geo/api/spec-source.html" style="color: #336299; text-decoration: none;"&gt;THIS&lt;/a&gt;&amp;nbsp;site. Not all of the Internet browsers support it, as well, but Firefox (starting from release 3.5) is one of those that provide support for it. You can check the coordinates (latitude and longitude) corresponding to your IP address position by running the below shown script. It should also be noticed that, in order to protect your privacy, the browser will ask you for permission when requesting the position’s coordinates (you may accept or not accept it, of course):&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;pre style="background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; font-size: 12px; padding-bottom: 0.75em; padding-left: 1.5em; padding-right: 1.5em; padding-top: 0.75em;"&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;function getPosition()&lt;br /&gt;{&lt;br /&gt;  if (!navigator.geolocation)&lt;br /&gt;  {&lt;br /&gt;    alert('Unfortunately, your browser does not support Geo Services');&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    navigator.geolocation.getCurrentPosition(displayCoordinates);&lt;br /&gt;    return false;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;function displayCoordinates(curPos)&lt;br /&gt;{&lt;br /&gt;  var Latitude  = curPos.coords.latitude;&lt;br /&gt;  var Longitude = curPos.coords.longitude;&lt;br /&gt;  alert('Your current coordinates are: Lat='+Latitude+',Longitude='+Longitude);&lt;br /&gt;  return false;&lt;br /&gt;}&lt;br /&gt;//--&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;h3 style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 1.1em; line-height: 20px; margin-bottom: 0.5em;"&gt;Obtaining a map with Google Maps&lt;/h3&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;We can now put all stuff together and, knowing the current geographical position (expressed by latitude and longitude), we can display the map corresponding to that position. That is achieved through the&amp;nbsp;&lt;b&gt;Google Maps&lt;/b&gt;&amp;nbsp;service, and you should prior register and obtain a key for non-commercial use (insert your key in place of the "InsertHereYourKey" word). The following script starts displaying a fixed map centered on Italy (you can change lat and lon to display another geographical area); then, if the user agrees to do it, it shows the current position coordinates in a dialog box. Finally, it shows the map corresponding to that geographical position:&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;pre style="background-color: #eeeeee; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; font-size: 12px; padding-bottom: 0.75em; padding-left: 1.5em; padding-right: 1.5em; padding-top: 0.75em;"&gt;&lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;sensor=true&amp;amp;key=InsertHereYourKey" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;var yourMap;&lt;br /&gt;function initialize()&lt;br /&gt;{&lt;br /&gt;  if (GBrowserIsCompatible())&lt;br /&gt;  {&lt;br /&gt;    yourMap = new GMap2(document.getElementById("mapStyle"));&lt;br /&gt;    yourMap.setCenter(new GLatLng(41.54, 12.29), 5);&lt;br /&gt;    yourMap.setUIToDefault();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;function getPosition()&lt;br /&gt;{&lt;br /&gt;  initialize();&lt;br /&gt;  if (!navigator.geolocation)&lt;br /&gt;  {&lt;br /&gt;    alert('Unfortunately, your browser does not support Geo Services');&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    navigator.geolocation.getCurrentPosition(displayCoordinates);&lt;br /&gt;    return false;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;function displayCoordinates(curPos)&lt;br /&gt;{&lt;br /&gt;  var Latitude  = curPos.coords.latitude;&lt;br /&gt;  var Longitude = curPos.coords.longitude;&lt;br /&gt;  alert('Your current coordinates are: Lat='+Latitude+',Lon='+Longitude);&lt;br /&gt;  var yourPoint = new GLatLng(Latitude, Longitude);&lt;br /&gt;  yourMap.setCenter(yourPoint, 15);&lt;br /&gt;  var yourCurrPoint = new GMarker(yourPoint);&lt;br /&gt;  youMap.addOverlay(yourCurrPoint);&lt;br /&gt;  return false;&lt;br /&gt;}&lt;br /&gt;//--&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="mapStyle" style="height: 400px; width: 600px;"&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;The following two images shows the output of the previous script assuming the Internet user is located in the Florence area:&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;&lt;img border="0" height="238" src="http://dev.emcelettronica.com/files/u9973/geoloc_01.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px;" width="486" /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #2f2f2f; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;&lt;img border="0" height="321" src="http://dev.emcelettronica.com/files/u9973/geoloc_02.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px;" width="481" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-2681565450394842770?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/2681565450394842770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/geolocation-made-easy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/2681565450394842770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/2681565450394842770'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/geolocation-made-easy.html' title='Geolocation Made easy'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-3996401876522272379</id><published>2010-06-07T21:56:00.000-07:00</published><updated>2010-06-07T21:56:03.173-07:00</updated><title type='text'>Intel® Core™ i7 Processor Extreme Edition</title><content type='html'>&lt;div class="imageside" style="color: #666666; font-family: Verdana, sans-serif; font-size: 11px; margin-bottom: 0px; margin-left: 85px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;h2 style="border-bottom-color: rgb(166, 166, 166); border-bottom-style: solid; border-bottom-width: 1px; color: black; font-size: 12px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Gear up for extreme processing power&lt;/h2&gt;&lt;div class="intro" style="font-size: 12px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;Hardcore multitaskers rejoice. Fly through everything you do on your PC - from playing intense 3D games to creating and editing digital video, music, and photos. With the high performance platform capabilities of Intel® X58 Express Chipset-based motherboards, along with faster, intelligent multi-core technology that applies processing power dynamically when its needed most, PCs based on the Intel® Core™ i7-980X processor Extreme Edition deliver incredible performance with a rich feature set.&lt;/div&gt;&lt;div class="intro" style="font-size: 12px; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;Wield the ultimate gaming weapon for greater performance in 3D gaming applications. Experience smoother and more realistic gaming made possible by distributing AI, physics, and rendering across six cores and 12 threads, bringing 3D to life for the ultimate gaming experience. And take digital content creation to a whole new level for photo retouching and photo editing. Unlock your full potential with Intel’s top-of-the-line desktop processor and experience total creative freedom that’s limited only by your imagination.&lt;/div&gt;&lt;/div&gt;&lt;div class="endfloat" style="clear: both; color: #666666; display: block; font-family: Verdana, sans-serif; font-size: 1px; height: 1px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; visibility: hidden;"&gt;&lt;/div&gt;&lt;h2 style="border-bottom-color: rgb(166, 166, 166); border-bottom-style: solid; border-bottom-width: 1px; color: black; font-family: Verdana, sans-serif; font-size: 12px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Product information&lt;/h2&gt;&lt;h3 style="color: black; font-family: Verdana, sans-serif; font-size: 11px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® Core™ i7-980X processor Extreme Edition&lt;/h3&gt;&lt;ul class="bullets" style="color: #666666; font-family: Verdana, sans-serif; font-size: 11px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 8px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;3.33 GHz core speed&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;Up to 3.6 GHz with Intel® Turbo Boost Technology&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;6 cores and 12 processing threads with Intel® Hyper-Threading Technology&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;12 MB Intel® Smart Cache&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;3 Channels DDR3 1066 MHz memory&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;32nm manufacturing process technology&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="color: black; font-family: Verdana, sans-serif; font-size: 11px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® Core™ i7-975 processor Extreme Edition&lt;/h3&gt;&lt;ul class="bullets" style="color: #666666; font-family: Verdana, sans-serif; font-size: 11px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 8px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;3.33 GHz core speed&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;Up to 3.6 GHz with Intel® Turbo Boost Technology&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;4 cores and 8 processing threads with Intel® Hyper-Threading Technology&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;8 MB Intel® Smart Cache&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;3 Channels DDR3 1066 MHz memory&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;45nm manufacturing process technology&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: Verdana, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;h2 style="border-bottom-color: rgb(166, 166, 166); border-bottom-style: solid; border-bottom-width: 1px; color: black; font-size: 12px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Features and benefits&lt;/h2&gt;&lt;h3 style="color: black; font-size: 11px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Get extreme with your gaming and advanced multimedia.&lt;/h3&gt;&lt;div style="margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;Intel Core i7 processors deliver an incredible breakthrough in six-core performance and feature the latest innovations in processor technologies:&lt;/div&gt;&lt;ul class="bullets" style="list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 8px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;a href="http://www.intel.com/technology/turboboost/index.htm" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® Turbo Boost Technology&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;maximizes speed for demanding applications, dynamically accelerating performance to match your workload-more performance when you need it the most.³&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® Hyper-Threading Technology&lt;/strong&gt;&amp;nbsp;enables highly threaded applications to get more work done in parallel. With 8 threads available to the operating system, multi-tasking becomes even easier.Δ&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® Smart Cache&lt;/strong&gt;&amp;nbsp;provides a higher-performance, more efficient cache subsystem. Optimized for industry leading multi-threaded games.&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® QuickPath Interconnect&lt;/strong&gt;&amp;nbsp;is designed for increased bandwidth and low latency. It can achieve data transfer speeds as high as 25.6 GB/sec with the Extreme Edition processor.&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Integrated memory controller&lt;/strong&gt;&amp;nbsp;enables three channels of DDR3 1066 MHz memory, resulting in up to 25.6 GB/sec memory bandwidth. This memory controller's lower latency and higher memory bandwidth delivers amazing performance for data-intensive applications.&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Intel® HD Boost&lt;/strong&gt;&amp;nbsp;significantly improves a broad range of multimedia and compute-intensive applications. The 128-bit SSE instructions are issued at a throughput rate of one per clock cycle, allowing a new level of processing efficiency with SSE4 optimized applications.&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 0px; margin-left: 10px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;AES-NI Encryption/Decryption Acceleration&lt;/strong&gt;&amp;nbsp;provides 6 new processor instructions that help to improve performance for AES encryption and decryption algorithms&lt;/li&gt;&lt;/ul&gt;&lt;div class="legal" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.intel.com/sites/sitewide/30/pix/hr-dotted.gif); background-origin: initial; background-position: 0% 0%; background-repeat: repeat no-repeat; font-size: 10px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 15px; padding-bottom: 10px; padding-left: 15px; padding-right: 0px; padding-top: 10px;"&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;¹ Performance based on select industry benchmarks, game titles, and multimedia creation applications. Actual performance may vary. See&amp;nbsp;&lt;a href="http://www.intel.com/performance/desktop/extreme/index.htm" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_parent"&gt;www.intel.com/performance/desktop/extreme/&lt;/a&gt;&amp;nbsp;for additional information.&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;² Intel® processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different processor families. See&lt;a href="http://www.intel.com/products/processor_number/index.htm" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_parent"&gt;www.intel.com/products/processor_number/&lt;/a&gt;&amp;nbsp;for details.&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;³ Intel® Turbo Boost Technology requires a PC with a processor with Intel Turbo Boost Technology capability. Intel Turbo Boost Technology performance varies depending on hardware, software, and overall system configuration. Check with your PC manufacturer on whether your system delivers Intel Turbo Boost Technology. See&amp;nbsp;&lt;a href="http://www.intel.com/technology/turboboost/index.htm" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;www.intel.com/technology/turboboost/&lt;/a&gt;&amp;nbsp;for more information.&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;Δ Intel® Hyper-Threading Technology (Intel® HT Technology) requires a computer system with an Intel® processor supporting Intel HT Technology and an Intel HT Technology-enabled chipset, BIOS, and operating system. Performance will vary depending on the specific hardware and software you use. See&amp;nbsp;&lt;a href="http://www.intel.com/products/ht/hyperthreading_more.htm" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;www.intel.com/products/ht/hyperthreading_more.htm&lt;/a&gt;&amp;nbsp;for more information including details on which processors support Intel HT Technology.&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="spectable" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;iframe frameborder="0" height="261" id="http://ark.intel.com/OneSourceSpecTable.aspx?familyId=39597&amp;amp;columns=desktop&amp;amp;width=567#127597293296337096&amp;amp;iframeProxy=http%3A%2F%2Fwww.intel.com%2Fsites%2Fjs%2FINTEL%2Fwidget%2Fproxy.html&amp;amp;ds=0&amp;amp;ipd=www.intel.com" scrolling="no" src="http://ark.intel.com/OneSourceSpecTable.aspx?familyId=39597&amp;amp;columns=desktop&amp;amp;width=567#127597293296337096&amp;amp;iframeProxy=http%3A%2F%2Fwww.intel.com%2Fsites%2Fjs%2FINTEL%2Fwidget%2Fproxy.html&amp;amp;ds=0&amp;amp;ipd=www.intel.com" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" width="567"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;div class="endfloat" style="clear: both; display: block; font-size: 1px; height: 1px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; visibility: hidden;"&gt;&lt;/div&gt;&lt;h2 style="border-bottom-color: rgb(166, 166, 166); border-bottom-style: solid; border-bottom-width: 1px; color: black; font-size: 12px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Get detailed specifications&lt;/h2&gt;&lt;ul style="list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.intel.com/sites/sitewide/30/pix/caret_double.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 12px; padding-right: 5px; padding-top: 0px;"&gt;&lt;a href="http://ark.intel.com/ProductCollection.aspx?familyID=28037" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;Compare desktop processors&lt;/a&gt;&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.intel.com/sites/sitewide/30/pix/caret_double.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 12px; padding-right: 5px; padding-top: 0px;"&gt;&lt;a href="http://processorfinder.intel.com/List.aspx?ProcFam=3059" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;Processor Spec Finder&lt;/a&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Get the detailed technical specifications of each Intel® Core™2 Extreme processor.&lt;/li&gt;&lt;/ul&gt;&lt;div class="legal" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.intel.com/sites/sitewide/30/pix/hr-dotted.gif); background-origin: initial; background-position: 0% 0%; background-repeat: repeat no-repeat; font-size: 10px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 15px; padding-bottom: 10px; padding-left: 15px; padding-right: 0px; padding-top: 10px;"&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;♦ Intel® Turbo Boost Technology requires a PC with a processor with Intel Turbo Boost Technology capability. Intel Turbo Boost Technology performance varies depending on hardware, software, and overall system configuration. Check with your PC manufacturer on whether your system delivers Intel Turbo Boost Technology. See&amp;nbsp;&lt;a href="http://www.intel.com/technology/turboboost/index.htm" style="color: #0860a8; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;www.intel.com/technology/turboboost/&lt;/a&gt;&amp;nbsp;for more information.&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;◊&amp;nbsp;Intel® Virtualization Technology (Intel® VT), Intel® Trusted Execution Technology (Intel® TXT), and Intel® 64 architecture require a computer system with a processor, chipset, BIOS, enabling software and/or operating system, device drivers and applications designed for these features. Performance will vary depending on your configuration. Contact your vendor for more information.&lt;/div&gt;&lt;div style="margin-bottom: 0.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 5px; padding-top: 0px;"&gt;◊&amp;nbsp;Enabling Execute Disable Bit functionality requires a PC with a processor with Execute Disable Bit capability and a supporting operating system. Check with your PC manufacturer on whether your system delivers Execute Disable Bit functionality.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-3996401876522272379?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/3996401876522272379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/intel-core-i7-processor-extreme-edition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/3996401876522272379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/3996401876522272379'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/intel-core-i7-processor-extreme-edition.html' title='Intel® Core™ i7 Processor Extreme Edition'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-5315365346590437930</id><published>2010-06-01T22:47:00.001-07:00</published><updated>2010-06-01T22:47:32.009-07:00</updated><title type='text'>multithreading</title><content type='html'>It is easy to confuse multithreading with multitasking or multiprogramming , which are somewhat different ideas.&lt;br /&gt;&lt;br /&gt;Multithreading is the ability of a program or an operating system process to manage its use by more than one user at a time and to even manage multiple requests by the same user without having to have multiple copies of the programming running in the computer. Each user request for a program or system service (and here a user can also be another program) is kept track of as a thread with a separate identity. As programs work on behalf of the initial request for that thread and are interrupted by other requests, the status of work on behalf of that thread is kept track of until the work is completed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-5315365346590437930?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/5315365346590437930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/multithreading.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5315365346590437930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5315365346590437930'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/multithreading.html' title='multithreading'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-1200700175757549156</id><published>2010-06-01T22:44:00.001-07:00</published><updated>2010-06-01T22:44:56.358-07:00</updated><title type='text'>Multitasking</title><content type='html'>Multitasking, in an operating system, is allowing a user to perform more than one computer task (such as the operation of an application program) at a time. The operating system is able to keep track of where you are in these tasks and go from one to the other without losing information. Microsoft Windows 2000, IBM's OS/390, and Linux are examples of operating systems that can do multitasking (almost all of today's operating systems can). When you open your Web browser and then open word at the same time, you are causing the operating system to do multitasking.&lt;br /&gt;Being able to do multitasking doesn't mean that an unlimited number of tasks can be juggled at the same time. Each task consumes system storage and other resources. As more tasks are started, the system may slow down or begin to run out of shared storage.&lt;br /&gt;&lt;br /&gt;It is easy to confuse multitasking with multithreading, a somewhat different idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-1200700175757549156?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/1200700175757549156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/multitasking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1200700175757549156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1200700175757549156'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/06/multitasking.html' title='Multitasking'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-9102177024627296094</id><published>2010-05-30T23:35:00.001-07:00</published><updated>2010-05-30T23:35:55.725-07:00</updated><title type='text'>Parallel Processing</title><content type='html'>The simultaneous use of more than one CPU to execute a program. Ideally, parallel processing makes a program run faster because there are more engines (CPUs) running it. In practice, it is often difficult to divide a program in such a way that separate CPUs can execute different portions without interfering with each other.&lt;br /&gt;Most computers have just one CPU, but some models have several. There are even computers with thousands of CPUs. With single-CPU computers, it is possible to perform parallel processing by connecting the computers in a network. However, this type of parallel processing requires very sophisticated software called distributed processing software.&lt;br /&gt;&lt;br /&gt;Note that parallel processing differs from multitasking, in which a single CPU executes several programs at once.&lt;br /&gt;&lt;br /&gt;Parallel processing is also called parallel computing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-9102177024627296094?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/9102177024627296094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/parallel-processing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/9102177024627296094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/9102177024627296094'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/parallel-processing.html' title='Parallel Processing'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8108672673900952473</id><published>2010-05-26T22:12:00.000-07:00</published><updated>2010-05-26T22:12:28.860-07:00</updated><title type='text'></title><content type='html'>This is how you hack your Keyboard to use it in Darkness, Get lights through your keyboard to en-light the keys.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iOn72Y5DT6M&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/iOn72Y5DT6M&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8108672673900952473?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8108672673900952473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/this-is-how-you-hack-your-keyboard-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8108672673900952473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8108672673900952473'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/this-is-how-you-hack-your-keyboard-to.html' title=''/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-2005497748465199195</id><published>2010-05-26T00:34:00.000-07:00</published><updated>2010-05-26T00:34:08.470-07:00</updated><title type='text'>How Search Engines Work</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;The term "search engine" is often used generically to describe both crawler-based search engines and human-powered directories. These two types of search engines gather their listings in radically different ways.&lt;br /&gt;&lt;strong&gt;Crawler-Based Search Engines&lt;/strong&gt;&lt;br /&gt;Crawler-based search engines, such as Google, create their listings automatically. They "crawl" or "spider" the web, then people search through what they have found.&lt;br /&gt;If you change your web pages, crawler-based search engines eventually find these changes, and that can affect how you are listed. Page titles, body copy and other elements all play a role.&lt;br /&gt;&lt;strong&gt;Human-Powered Directories&lt;/strong&gt;&lt;br /&gt;A human-powered directory, such as the Open Directory, depends on humans for its listings. You submit a short description to the directory for your entire site, or editors write one for sites they review. A search looks for matches only in the descriptions submitted.&lt;br /&gt;Changing your web pages has no effect on your listing. Things that are useful for improving a listing with a search engine have nothing to do with improving a listing in a directory. The only exception is that a good site, with good content, might be more likely to get reviewed for free than a poor site.&lt;br /&gt;&lt;strong&gt;"Hybrid Search Engines" Or Mixed Results&lt;/strong&gt;&lt;br /&gt;In the web's early days, it used to be that a search engine either presented crawler-based results or human-powered listings. Today, it extremely common for both types of results to be presented. Usually, a hybrid search engine will favor one type of listings over another. For example, MSN Search is more likely to present human-powered listings from LookSmart. However, it does also present crawler-based results (as provided by Inktomi), especially for more obscure queries.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Parts Of A Crawler-Based Search Engine&lt;/strong&gt;&lt;br /&gt;Crawler-based search engines have three major elements. First is the spider, also called the crawler. The spider visits a web page, reads it, and then follows links to other pages within the site. This is what it means when someone refers to a site being "spidered" or "crawled." The spider returns to the site on a regular basis, such as every month or two, to look for changes.&lt;br /&gt;Everything the spider finds goes into the second part of the search engine, the index. The index, sometimes called the catalog, is like a giant book containing a copy of every web page that the spider finds. If a web page changes, then this book is updated with new information.&lt;br /&gt;Sometimes it can take a while for new pages or changes that the spider finds to be added to the index. Thus, a web page may have been "spidered" but not yet "indexed." Until it is indexed -- added to the index -- it is not available to those searching with the search engine.&lt;br /&gt;Search engine software is the third part of a search engine. This is the program that sifts through the millions of pages recorded in the index to find matches to a search and rank them in order of what it believes is most relevant. You can learn more about how search engine software ranks web pages on the aptly-named&amp;nbsp;&lt;a href="http://searchenginewatch.com/2167961" style="color: #336699; text-decoration: none;"&gt;How Search Engines Rank Web Pages&lt;/a&gt;&amp;nbsp;page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Major Search Engines: The Same, But Different&lt;/strong&gt;&lt;br /&gt;All crawler-based search engines have the basic parts described above, but there are differences in how these parts are tuned. That is why the same search on different search engines often produces different results. Some of the significant differences between the major crawler-based search engines are summarized on the&amp;nbsp;&lt;a href="http://searchenginewatch.com/2167891" style="color: #336699; text-decoration: none;"&gt;Search Engine Features Page&lt;/a&gt;. Information on this page has been drawn from the help pages of each search engine, along with knowledge gained from articles, reviews, books, independent research, tips from others and additional information received directly from the various search engines.&lt;br /&gt;Now let's look more about how crawler-based search engine rank the listings that they gather.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-2005497748465199195?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/2005497748465199195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/how-search-engines-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/2005497748465199195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/2005497748465199195'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/how-search-engines-work.html' title='How Search Engines Work'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-6103523959226771409</id><published>2010-05-25T04:23:00.001-07:00</published><updated>2010-05-25T04:23:57.123-07:00</updated><title type='text'>Cars running on Water</title><content type='html'>&lt;span class="Apple-style-span" style="color: white; font-family: 'Trebuchet MS', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Water Powered Cars or Hydrogen/Oxygen Powered Cars, using 100% water as fuel is real. By splitting water by electrolysis and creating hydrogen/oxygen gas, you can replace gasoline. We have been taught this is impossible! Engineers, scientists and professors may in fact tell tell you you're crazy to believe such non sense. They will also set out to prove you wrong. They base their laws of physics form 1825 thinking. Faraday's laws. Did you know that the first ICE engine ran on hydrogen from water? BMW has them! Hyundai will be making them. Japan endorses them. Many patents, inventions have been bought and there project is shelved, yes it is true. Some of the stubborn inventors who don't sell out disappear. Yes that's right. It happens in the US, Aus, NZ, UK and India. We are in a crunch to find alternative fuels. The pressure is on. War for oil is not the way to go. Talking politics about a hydrogen future that never comes, is not going to help either. Arthur C. Clarke explained how there were four stages in the way scientists react to the development of anything of a revolutionary nature.&lt;br /&gt;&lt;br /&gt;1) "It's nonsense,"&lt;br /&gt;2) "It is not important,"&lt;br /&gt;3) "I always said it was a good idea," and&lt;br /&gt;4) "I thought of it first."&lt;br /&gt;&lt;br /&gt;If all ICE motors (Internal Combustion Engines) were converted to burn hydrogen and oxygen in the water, as fuel to propel our cars, trucks, semi's etc., we would no longer need gas stations, oil tankers, refineries, SMOG and war. The only problem would be that the large Oil Corporations would go under and SMOG would leave the planet for good. The government is worried that National Securities would be ruptured &amp;amp; it would cause the economy to fall? The Ozone would get healed and we would survive. God will then once again smile down on the Earth, instead of letting the powers to be, destroy it. If we stopped producing SMOG, the ozone and global warming and greenhouse effects would go away.&lt;br /&gt;&lt;br /&gt;It is said that the OIL MAFIA has been hiding/preventing this Technology to hit the Limelight.They are said to be stalling future inventions which would curtail the OIL &amp;amp; GAS sales.Whatever may be the Truth,the the ultimate sufferer's the common man himself.What we can do is just pray for the future!&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-6103523959226771409?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/6103523959226771409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/cars-running-on-water.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/6103523959226771409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/6103523959226771409'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/cars-running-on-water.html' title='Cars running on Water'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-1424350544834028901</id><published>2010-05-24T20:52:00.000-07:00</published><updated>2010-05-24T20:52:35.703-07:00</updated><title type='text'>Scaling and Centering of ID3DXMesh Geometry in DX9</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Arial, Helvetica;"&gt;&lt;h2&gt;Introduction&lt;/h2&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', Arial, Helvetica;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', Arial, Helvetica;"&gt;Frequently I have received requests for functions that will allow a mesh to be rescaled to fit within specific bounds and/or centered at origin, so I decided to take some time to publish source code to accomplish this task.&amp;nbsp; It is often necessary to do this when dealing with arbitrary content such as in a mesh viewer, or as a means to verify the validity of imported meshes that may be arbitrarily scaled or offset from origin.&amp;nbsp; In that context it may also be useful for rescaling mesh geometry so that it can be saved back to a geometry file properly scaled for later use.&lt;br /&gt;&lt;h2&gt;Normalizing a Mesh&lt;/h2&gt;Rather than scaling the mesh by a fixed amount, the first function that I am going to show here "normalizes" a mesh - that is, it scales the mesh based on the dimensions of the mesh, so that it will fit inside of a bounding sphere of a specified size.&amp;nbsp; Normalization typically refers to scaling to unit (1.0) dimensions, but in the case of our function we will allow you to specify the final dimensions of the bounding sphere.&lt;br /&gt;Before we can write our mesh normalization function, we will first need a couple of supporting functions, which will allow us to measure the mesh and to apply scaling and offset.&lt;br /&gt;&lt;h3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Measuring the Mesh&lt;/h3&gt;Our first function will allow us to compute the bounding sphere of the mesh, by wrapping the D3DXComputeBoundingSphere() function:&lt;/span&gt;&lt;pre&gt;&lt;span style="font-family: Fixedsys;"&gt;HRESULT CalcBounds(ID3DXMesh *pMesh, D3DXVECTOR3 *vCenter, float *radius)&lt;br /&gt;{&lt;br /&gt; BYTE *ptr=NULL;&lt;br /&gt; HRESULT hr;&lt;br /&gt;&lt;br /&gt; // return failure if no mesh pointer provided&lt;br /&gt; if (!pMesh)&lt;br /&gt;  return D3DERR_INVALIDCALL;&lt;br /&gt;&lt;br /&gt; // get the face count&lt;br /&gt; DWORD numVerts=pMesh-&amp;gt;GetNumVertices();&lt;br /&gt;&lt;a href="" name="fvfsize"&gt;&lt;/a&gt;&lt;br /&gt; // get the FVF flags&lt;br /&gt; DWORD fvfSize=D3DXGetFVFVertexSize(pMesh-&amp;gt;GetFVF());&lt;span style="font-size: x-small;"&gt;  &lt;a href="http://www.mvps.org/directx/articles/scalemesh.htm#getfvf"&gt;// See DX8 Version&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; // lock the vertex buffer&lt;br /&gt; if (FAILED(hr=pMesh-&amp;gt;LockVertexBuffer(0,&amp;amp;ptr)))&lt;br /&gt;&lt;br /&gt;  // return on failure&lt;br /&gt;  return hr;&lt;br /&gt;&lt;a href="" name="calcbound"&gt;&lt;/a&gt;&lt;br /&gt; // compute bounding sphere&lt;br /&gt; if (FAILED(hr=D3DXComputeBoundingSphere((D3DXVECTOR3 *) ptr, &lt;br /&gt;      numVerts, &lt;br /&gt;      fvfSize, &lt;span style="font-size: x-small;"&gt;  &lt;a href="http://www.mvps.org/directx/articles/scalemesh.htm#calcbound"&gt;// See DX8 Version&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;      vCenter, radius )))&lt;br /&gt;  // return on failure&lt;br /&gt;  return hr;&lt;br /&gt;&lt;br /&gt; // unlock the vertex buffer&lt;br /&gt; if (FAILED(hr=pMesh-&amp;gt;UnlockVertexBuffer()))&lt;br /&gt;&lt;br /&gt;  // return on failure&lt;br /&gt;  return hr;&lt;br /&gt;  &lt;br /&gt; // return success to caller&lt;br /&gt; return S_OK;&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family: 'Trebuchet MS', Arial, Helvetica;"&gt;&lt;h3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scaling the Mesh&lt;/h3&gt;Our next function allows us to scale and offset the vertices of a mesh:&lt;/span&gt;&lt;pre&gt;&lt;span style="font-family: Fixedsys;"&gt;HRESULT ScaleMesh(ID3DXMesh *pMesh, float scale, D3DXVECTOR3 *offset=NULL)&lt;br /&gt;{&lt;br /&gt; BYTE *ptr=NULL;&lt;br /&gt; HRESULT hr;&lt;br /&gt; D3DXVECTOR3 vOff;&lt;br /&gt;&lt;br /&gt; // return failure if no mesh pointer set&lt;br /&gt; if (!pMesh)&lt;br /&gt;  return D3DERR_INVALIDCALL;&lt;br /&gt;&lt;br /&gt; // select default or specified offset vector&lt;br /&gt; if (offset)&lt;br /&gt;  vOff=*offset;&lt;br /&gt; else&lt;br /&gt;  vOff=D3DXVECTOR3(0.0f,0.0f,0.0f);&lt;br /&gt;&lt;br /&gt; // get the face count&lt;br /&gt; DWORD numVerts=pMesh-&amp;gt;GetNumVertices();&lt;br /&gt;&lt;br /&gt; // get the FVF flags&lt;br /&gt; DWORD fvf=pMesh-&amp;gt;GetFVF();&lt;br /&gt;&lt;br /&gt; // calculate vertex size&lt;br /&gt; DWORD vertSize=D3DXGetFVFVertexSize(fvf);&lt;br /&gt;&lt;br /&gt; // lock the vertex buffer&lt;br /&gt; if (FAILED(hr=pMesh-&amp;gt;LockVertexBuffer(0,&amp;amp;ptr)))&lt;br /&gt; &lt;br /&gt;  // return on failure&lt;br /&gt;  return hr;&lt;br /&gt;&lt;br /&gt; // loop through the vertices&lt;br /&gt; for (DWORD i=0;i&lt;numverts;i++) *)="" *vptr+="vOff;" *vptr="(D3DXVECTOR3" d3dxvector3="" get="" location="" pointer="" ptr;="" scale="" the="" to="" vertex="" vptr-="" {=""&gt;x*=scale;&lt;br /&gt;  vPtr-&amp;gt;y*=scale;&lt;br /&gt;  vPtr-&amp;gt;z*=scale;&lt;br /&gt;&lt;br /&gt;  // increment pointer to next vertex&lt;br /&gt;  ptr+=vertSize;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // unlock the vertex buffer&lt;br /&gt; if (FAILED(hr=pMesh-&amp;gt;UnlockVertexBuffer()))&lt;br /&gt;&lt;br /&gt;  // return on failure&lt;br /&gt;  return hr;&lt;br /&gt;  &lt;br /&gt; // return success to caller&lt;br /&gt; return S_OK;&lt;br /&gt;}&lt;/numverts;i++)&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family: 'Trebuchet MS', Arial, Helvetica;"&gt;&lt;h3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Our Normalization Function&lt;/h3&gt;Finally, we get to our normalization function, which will utilize the two functions we saw above:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First, it will find the bounding sphere of the mesh, as a radius and center.&lt;/li&gt;&lt;li&gt;Next, it will calculate a scaling factor based on the radius calculated and the desired mesh size.&lt;/li&gt;&lt;li&gt;If centering of the mesh is requested, the center will be negated for use as an offset.&lt;/li&gt;&lt;li&gt;The scaling function we wrote will then be called with the calculated scaling factor and offset.&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="font-family: Fixedsys;"&gt;HRESULT NormalizeMesh(ID3DXMesh *pMesh, float scaleTo=1.0f, BOOL bCenter=TRUE)&lt;br /&gt;{&lt;br /&gt; D3DXVECTOR3 vCenter;&lt;br /&gt; float radius;&lt;br /&gt; HRESULT hr;&lt;br /&gt;&lt;br /&gt; // calculate bounds of mesh&lt;br /&gt; if (FAILED(hr=CalcBounds(pMesh,&amp;amp;vCenter,&amp;amp;radius)))&lt;br /&gt;  return hr;&lt;br /&gt;&lt;br /&gt; // calculate scaling factor&lt;br /&gt; float scale=scaleTo/radius;&lt;br /&gt;&lt;br /&gt; // calculate offset if centering requested&lt;br /&gt; D3DXVECTOR3 vOff;&lt;br /&gt; if (bCenter) &lt;br /&gt;  vOff=-vCenter;&lt;br /&gt; else&lt;br /&gt;  vOff=D3DXVECTOR3(0.0f,0.0f,0.0f);&lt;br /&gt;&lt;br /&gt; // scale and offset mesh&lt;br /&gt; return ScaleMesh(pMesh,scale,&amp;amp;vOff);&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-1424350544834028901?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/1424350544834028901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/scaling-and-centering-of-id3dxmesh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1424350544834028901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1424350544834028901'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/scaling-and-centering-of-id3dxmesh.html' title='Scaling and Centering of ID3DXMesh Geometry in DX9'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-174641277739523460</id><published>2010-05-24T02:05:00.000-07:00</published><updated>2010-05-24T02:05:01.607-07:00</updated><title type='text'>What is an IP address?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center; vertical-align: baseline; width: 205px;"&gt;&lt;img alt="Ethernet cable with ip addresses in background" border="0" height="292" src="http://static.howstuffworks.com/gif/question549-1-1.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" width="205" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span class="credit" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 8pt; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Hans Joachim Roy/Dreamstime.com&lt;/span&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span class="caption" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;There are 4.3 billion possible combinations of IP addresses.&lt;/span&gt;&lt;/div&gt;Every machine on the&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/internet-infrastructure.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Internet&lt;/a&gt;&amp;nbsp;has a unique identifying number, called an IP Address. A typical IP address looks like this:&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 14px; margin-left: 20px; margin-right: 20px; margin-top: 14px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;216.27.61.137&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;To make it easier for us humans to remember, IP addresses are normally expressed in decimal format as a "&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;dotted decimal number&lt;/em&gt;" like the one above. But&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/pc.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;computers&lt;/a&gt;&amp;nbsp;communicate in&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/bytes.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;binary&lt;/a&gt;&amp;nbsp;form. Look at the same IP address in binary:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 14px; margin-left: 20px; margin-right: 20px; margin-top: 14px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;11011000.00011011.00111101.10001001&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The four numbers in an IP address are called&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;octets&lt;/strong&gt;, because they each have eight positions when viewed in binary form. If you add all the positions together, you get 32, which is why IP addresses are considered 32-bit numbers. Since each of the eight positions can have two different states (1 or 0) the total number of possible combinations per octet is 2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;8&lt;/span&gt;&lt;/sup&gt;&amp;nbsp;or 256. So each octet can contain any value between 0 and 255. Combine the four octets and you get 2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;32&lt;/span&gt;&lt;/sup&gt;&amp;nbsp;or a possible 4,294,967,296 unique values!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Out of the almost 4.3 billion possible combinations, certain values are restricted from use as typical IP addresses. For example, the IP address 0.0.0.0 is reserved for the default&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/home-network.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;network&lt;/a&gt;&amp;nbsp;and the address 255.255.255.255 is used for&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/question549.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;broadcasts&lt;/a&gt;.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table class="sideBoxLeft" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; float: left; font-family: Arial, Helvetica, sans-serif; margin-right: 20px; padding-bottom: 0px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 200px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;div class="titleGray" style="border-bottom-color: rgb(210, 210, 210); border-bottom-style: dashed; border-bottom-width: 1px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; margin-bottom: 0px; margin-left: 6px; margin-right: 6px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; vertical-align: baseline; word-wrap: break-word;"&gt;Learn More&lt;/div&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; left: 0px; margin-bottom: 8px; margin-left: 28px; margin-right: 10px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; left: 0px; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; vertical-align: baseline;"&gt;&lt;a href="http://computer.howstuffworks.com/internet-infrastructure.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Internet Infrastructure&lt;/a&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; left: 0px; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; vertical-align: baseline;"&gt;&lt;a href="http://computer.howstuffworks.com/home-network.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Home Networking&lt;/a&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; left: 0px; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; vertical-align: baseline;"&gt;&lt;a href="http://science.discovery.com/tv/download/quizzes/quizzes.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;ScienceChannel.com: Internet Quiz&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The octets serve a purpose other than simply separating the numbers. They are used to create&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;classes&lt;/strong&gt;&amp;nbsp;of IP addresses that can be assigned to a particular business, government or other entity based on size and need. The octets are split into two sections:&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Net&lt;/strong&gt;and&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Host&lt;/strong&gt;. The Net section always contains the first octet. It is used to identify the network that a computer belongs to. Host (sometimes referred to as&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Node&lt;/strong&gt;) identifies the actual computer on the network. The Host section always contains the last octet. There are five IP classes plus certain special addresses:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 14px; margin-left: 20px; margin-right: 20px; margin-top: 14px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Default Network&lt;/strong&gt;&amp;nbsp;- The IP address of&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;0.0.0.0&lt;/strong&gt;&amp;nbsp;is used for the default network.&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Class A&lt;/strong&gt;&amp;nbsp;- This class is for very large networks, such as a major international company might have. IP addresses with a first octet from 1 to 126 are part of this class. The other three octets are used to identify each host. This means that there are 126 Class A networks each with 16,777,214 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;24&lt;/span&gt;&lt;/sup&gt;&amp;nbsp;-2) possible hosts for a total of 2,147,483,648 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;31&lt;/span&gt;&lt;/sup&gt;) unique IP addresses. Class A networks account for half of the total available IP addresses. In Class A networks, the high order bit value (the very first binary number) in the first octet is always 0.&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Net&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Host or Node&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;115.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;24.53.107&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 14px; margin-left: 20px; margin-right: 20px; margin-top: 14px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Loopback&lt;/strong&gt;&amp;nbsp;- The IP address&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;127.0.0.1&lt;/strong&gt;&amp;nbsp;is used as the loopback address. This means that it is used by the host computer to send a message back to itself. It is commonly used for troubleshooting and network testing.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;h1 class="articlePageTitle" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Other IP Classes&lt;/h1&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 14px; margin-left: 20px; margin-right: 20px; margin-top: 14px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Class B&lt;/strong&gt;&amp;nbsp;- Class B is used for medium-sized&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/home-network.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;networks&lt;/a&gt;. A good example is a large college campus. IP addresses with a first octet from 128 to 191 are part of this class. Class B addresses also include the second octet as part of the Net identifier. The other two octets are used to identify each host. This means that there are 16,384 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;14&lt;/sup&gt;) Class B networks each with 65,534 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;16&lt;/sup&gt;&amp;nbsp;-2) possible hosts for a total of 1,073,741,824 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;30&lt;/sup&gt;) unique IP addresses. Class B networks make up a quarter of the total available IP addresses. Class B networks have a first bit value of 1 and a second bit value of 0 in the first octet.&lt;/li&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Net&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Host or Node&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;145.24.&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;53.107&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Class C&lt;/strong&gt;&amp;nbsp;- Class C addresses are commonly used for small to mid-size businesses. IP addresses with a first octet from 192 to 223 are part of this class. Class C addresses also include the second and third octets as part of the Net identifier. The last octet is used to identify each host. This means that there are 2,097,152 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;21&lt;/sup&gt;) Class C networks each with 254 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;8&lt;/sup&gt;&amp;nbsp;-2) possible hosts for a total of 536,870,912 (2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;29&lt;/sup&gt;) unique IP addresses. Class C networks make up an eighth of the total available IP addresses. Class C networks have a first bit value of 1, second bit value of 1 and a third bit value of 0 in the first octet.&lt;/li&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Net&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Host or Node&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;195.24.53.&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;107&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Class D&lt;/strong&gt;&amp;nbsp;- Used for&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/internet/basics/lan-switch1.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;multicasts&lt;/a&gt;, Class D is slightly different from the first three classes. It has a first bit value of 1, second bit value of 1, third bit value of 1 and fourth bit value of 0. The other 28 bits are used to identify the group of computers the multicast message is intended for. Class D accounts for 1/16&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;th&lt;/sup&gt;&amp;nbsp;(268,435,456 or 2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;28&lt;/sup&gt;) of the available IP addresses.&lt;/li&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Net&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Host or Node&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;224.&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;24.53.107&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Class E&lt;/strong&gt;&amp;nbsp;- Class E is used for experimental purposes only. Like Class D, it is different from the first three classes. It has a first bit value of 1, second bit value of 1, third bit value of 1 and fourth bit value of 1. The other 28 bits are used to identify the group of computers the multicast message is intended for. Class E accounts for 1/16&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;th&lt;/sup&gt;&amp;nbsp;(268,435,456 or 2&lt;sup style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;28&lt;/sup&gt;) of the available IP addresses.&lt;/li&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Net&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Host or Node&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;240.&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;24.53.107&lt;/strong&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Broadcast&lt;/strong&gt;&amp;nbsp;- Messages that are intended for all computers on a network are sent as&lt;a href="http://computer.howstuffworks.com/internet/basics/lan-switch1.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;broadcasts&lt;/a&gt;. These messages always use the IP address&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;255.255.255.255&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-174641277739523460?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/174641277739523460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/what-is-ip-address.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/174641277739523460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/174641277739523460'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/what-is-ip-address.html' title='What is an IP address?'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8880879960959569193</id><published>2010-05-23T20:43:00.001-07:00</published><updated>2010-05-23T20:43:24.747-07:00</updated><title type='text'>MAXQ61C 16-Bit Microcontroller with Infrared Module</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #2f2f2f; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;The&amp;nbsp;&lt;a href="http://datasheets.maxim-ic.com/en/ds/MAXQ61C.pdf" style="color: #336299; text-decoration: none;" target="_blank"&gt;&lt;strong&gt;MAXQ61C&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;is a low-power, 16-bit MAXQ® microcontroller designed for low-power applications including universal remote controls, consumer electronics, and white goods. The device combines a powerful 16-bit RISC microcontroller and integrated peripherals including two universal synchronous/asynchronous receiver-transmitters (USARTs) and an SPI™ master/slave communications port, along with an IR module with carrier frequency generation and flexible port I/O capable of multiplexed keypad control.&lt;/div&gt;&lt;div style="color: #2f2f2f; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;The device includes 80KB of ROM memory and 2KB of data SRAM.&lt;/div&gt;&lt;div style="color: #2f2f2f; margin-bottom: 0.9em; margin-top: 0.5em;"&gt;For the ultimate in low-power battery-operated performance, the device includes an ultra-low-power stop mode (0.2µA typ). In this mode, the minimum amount of circuitry is powered. Wake-up sources include external interrupts, the power-fail interrupt, and a timer interrupt. The microcontroller runs from a wide 1.70V to 3.6V operating voltage.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8880879960959569193?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8880879960959569193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/maxq61c-16-bit-microcontroller-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8880879960959569193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8880879960959569193'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/maxq61c-16-bit-microcontroller-with.html' title='MAXQ61C 16-Bit Microcontroller with Infrared Module'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-4653360646521070102</id><published>2010-05-20T01:14:00.001-07:00</published><updated>2010-05-20T01:14:19.245-07:00</updated><title type='text'>Inside a Computer Mouse (Pointing Device)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Inside a Mouse&lt;/h1&gt;The main goal of any mouse is to translate the motion of your hand into signals that the computer can use. Let's take a look inside a track-ball mouse to see how it works:&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse5.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The guts of a mouse&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ol style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 14px; margin-left: 20px; margin-right: 20px; margin-top: 14px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: decimal !important; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;A&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ball&lt;/strong&gt;&amp;nbsp;inside the mouse touches the desktop and rolls when the mouse moves.&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse6.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The underside of the mouse's logic board: The exposed portion of the ball touches the desktop.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: decimal !important; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Two rollers&lt;/strong&gt;&amp;nbsp;inside the mouse touch the ball. One of the rollers is oriented so that it detects motion in the X direction, and the other is oriented 90 degrees to the first roller so it detects motion in the Y direction. When the ball rotates, one or both of these rollers rotate as well. The following image shows the two white rollers on this mouse:&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse10.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The rollers that touch the ball and detect X and Y motion&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: decimal !important; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;The rollers each connect to a&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;shaft&lt;/strong&gt;, and the shaft spins a&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;disk&lt;/strong&gt;&amp;nbsp;with holes in it. When a roller rolls, its shaft and disk spin. The following image shows the disk:&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse9.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;A typical optical encoding disk: This disk has 36 holes around its outer edge.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: decimal !important; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;On either side of the disk there is an&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;infrared LED&lt;/strong&gt;&amp;nbsp;and an&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;infrared sensor&lt;/strong&gt;. The holes in the disk break the beam of&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/light.htm" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;light&lt;/a&gt;&amp;nbsp;coming from the LED so that the infrared sensor sees pulses of light. The rate of the pulsing is directly related to the speed of the mouse and the distance it travels.&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse2.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;A close-up of one of the optical encoders that track mouse motion: There is an infrared LED (clear) on one side of the disk and an infrared sensor (red) on the other.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; list-style-position: outside; list-style-type: decimal !important; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 14px; padding-top: 0px; vertical-align: baseline;"&gt;An&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;on-board processor chip&lt;/strong&gt;&amp;nbsp;reads the pulses from the infrared sensors and turns them into binary data that the computer can understand. The chip sends the binary data to the computer through the mouse's cord.&lt;/li&gt;&lt;/ol&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse1.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The logic section of a mouse is dominated by an encoder chip, a small processor that reads the pulses coming from the infrared sensors and turns them into bytes sent to the computer. You can also see the two buttons that detect clicks (on either side of the wire connector).&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;In this&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;optomechanical&lt;/strong&gt;&amp;nbsp;arrangement, the disk moves mechanically, and an optical system counts pulses of light. On this mouse, the ball is 21 mm in diameter. The roller is 7 mm in diameter. The encoding disk has 36 holes. So if the mouse moves 25.4 mm (1 inch), the encoder chip detects 41 pulses of light.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;You might have noticed that each encoder disk has two infrared LEDs and two infrared sensors, one on each side of the disk (so there are four LED/sensor pairs inside a mouse). This arrangement allows the processor to detect the disk's&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;direction of rotation&lt;/strong&gt;. There is a piece of plastic with a small, precisely located hole that sits between the encoder disk and each infrared sensor. It is visible in this photo:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="3" cellspacing="0" style="font-family: Arial, Helvetica, sans-serif; width: 400px;"&gt;&lt;tbody style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;tr style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;td style="font-family: Arial, Helvetica, sans-serif; font-weight: normal; padding-bottom: 3px; padding-left: 3px; padding-right: 3px; padding-top: 3px; text-align: left;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: arial, helvetica; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;center style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img src="http://static.howstuffworks.com/gif/mouse2.jpg" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;A close-up of one of the optical encoders that track mouse motion: Note the piece of plastic between the infrared sensor (red) and the encoding disk.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 14pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br style="font-family: Arial, Helvetica, sans-serif;" /&gt;This piece of plastic provides a window through which the infrared sensor can "see." The window on one side of the disk is located slightly higher than it is on the other -- one-half the height of one of the holes in the encoder disk, to be exact. That difference causes the two infrared sensors to see pulses of light at slightly different times. There are times when one of the sensors will see a pulse of light when the other does not, and vice versa.&amp;nbsp;&lt;a href="http://computer.howstuffworks.com/framed.htm?parent=mouse.htm&amp;amp;url=http://www.4qdtec.com/meece.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #005288; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;This page&lt;/a&gt;&amp;nbsp;offers a nice explanation of how direction is determined.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-4653360646521070102?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/4653360646521070102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/inside-computer-mouse-pointing-device.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4653360646521070102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4653360646521070102'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/inside-computer-mouse-pointing-device.html' title='Inside a Computer Mouse (Pointing Device)'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8942739041157895159</id><published>2010-05-19T04:19:00.001-07:00</published><updated>2010-05-19T04:19:45.579-07:00</updated><title type='text'>GPS systems (PDAs software and applications)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GPS tracking is entering most of the popular mobile platforms, including mobile phones, PDAs, media players, and game consoles. The attached figure is a PSP with new released GPS module. It is a good reason that kids can use to convince parents to buy a PSP for them.&lt;br /&gt;It is difficult to mention all of the amazing GPS applications in the world. Here we summary the hottest GPS applications in the following list. And we try to offer some open source projects so anyone can use them as starting point.&lt;br /&gt;A lot of applications in our daily life have already used GPS technology for years. Some applications operate independently, such as navigation, geo-tagging and passive track logger. The other applications connect to the complementary web servers for map tiles access, local search services, landmarks sharing and routes planning. GPS is entering most of the popular mobile platforms, including mobile phones, PDAs, media players, and game consoles. The attached figure shows a PSP with new released GPS module. It is a good reason for kids to convince parents to buy a PSP for them.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;It is difficult to involve all of the amazing GPS applications. Here I summary the popular GPS applications in a list. And I try to offer some open source projects so anyone can use them as starting point.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Automotive Navigation&lt;/b&gt;: It is a typical application for GPS. Now it integrates more features including MP3/MP4 playback, DVB receiver, parking radar, and FM transmitter for voice guidance.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Personal Navigation&lt;/b&gt;: The personal navigation is available on the mobile phones and PDAs. It is a highly competitive market.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Tracking&lt;/b&gt;: It is yet another commercial application for tracking anyone and anything. The tracking services are used in seniors and children caring, pet tracking, fleet management, express delivery service and emergency positioning.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Traffic Management&lt;/b&gt;: Traffic management is a good idea to guide the drivers on the road to avoid traffic jams and accidents.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Location Based Services&lt;/b&gt;: It is the favorite word of mobile network operators. Actually LBS is a general terminology of mobile phone oriented value-added geographic services including navigation, local search and advertisement. LBS includes GPS and many other mobile networking based positioning technologies, such as GPSone, A-GPS, PHS positioning and Cell-ID positioning.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mobile Social Network&lt;/b&gt;: It is a mobile version of the popular social network with location services. You can use it to check if your friends happen to cross in your road and check the upcoming events nearby. Check Loopt (Live Virtual Earth based) for Android and GyPSii (Google Map based) for iPhone. These networks are growing so fast and many VCs are trying to find such startup companies.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Geo-tagging&lt;/b&gt;: More and more pictures and videos are geo-tagged and shared on the web. Some new cameras have embedded GPS module to meet the requirement. It is interesting that these GPS enabled cameras also offer entry level personal navigation for the consumers. See, too many players are fighting for the same market.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Clock Synchronization&lt;/b&gt;: It used to be very expensive to keep the accuracy of a clock. Thanks to GPS’ clock system, the applications require clock synchronization can get the accurate clock signal from a low cost GPS receiver.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Location Intelligence&lt;/b&gt; for government and business organizations: A lot of organizations are using GPS for government operations and commercial intelligence investigation. For example, a supermarket company can use it for analysis of competition, customer purchase capability, rush hours, and resident favorite routes before launch a real supermarket there.&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Navigation&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/Freerunner02.gif" alt="FreeRunner" align="right" border="0" height="385" hspace="10" vspace="10" width="339" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;Openmoko is the open source mobile phone project. This project is sponsored by FIC, a Taiwan based PC main board supplier. Openmoko’s latest model is NEO FreeRunner, which is an A-GPS mobile phone offers personal navigation.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;It claims as the first 100% open source mobile phone, including the GSM stack. A powerful mobile Linux distribution is running on a 400MHz S3C2440 ARM920T CPU from Samsung. It features 2D/3D graphic, USB2.0, mini SD, Bluetooth 2.0, WiFi and A-GPS module.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;It is a real hackers’ favorite toy. There is a hacker package available, including a NEO FreeRunner and a debug board. It should be the first candidate on your purchasing list if you are looking for a good GPS development platform. Everything is open for you.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The popular Dash Express is the first derivate project of Openmoko. This amazing device is a connected GPS, which allows the car drivers to share the real time traffic information and avoid traffic jams and accidents. Dash Express is the front-end of the whole aggressive project. This project uses web servers to collect the information of coordinates and velocity anonymously and broadcasts the road trend and traffic update to the drivers.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There is also a personal navigation program available in the Openmoko. The navigation software uses the map tiles from OpenStreetMap servers. It is much easier to access the map tiles from other free web geographic servers like Google, Live and Yahoo. However it may be forbidden in the terms and conditions. So the designer must check the legal terms of the map servers. Some projects already have big troubles of abuse the map servers. I have no idea about the capability of the web browser in Openmoko. If the web browser is JavaScript capable, the users can access Google Map for navigation.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Passive Tracking&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/holuxm241gpslogger.jpg" alt="Holux GPS Logger" align="left" border="0" height="207" hspace="10" vspace="10" width="275" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;The passive tracking is an off-line tracking technology by recording the coordinates during the whole trip. Passive tracking is commonly used in tracking services when real-time communication is not available or required. A wife may use it on her husband to check if he is cheating on her. The boss may use it to check the compliance of his delivery team. The scientists may track the birds for bird flu with a tiny track logger.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/gpstrack.gif" alt="GPStrack Satellite Map" align="right" border="0" height="246" hspace="10" vspace="10" width="240" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;There are many open source projects for tracking purposes. Mr. Dana Peter has developed a web project online tracking service at &lt;a href="http://www.qcontinuum.org/map/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Qcontinuum&lt;/a&gt;. The whole project is made up of a Bluetooth GPS module, a J2ME enabled mobile phone, and a web server. The source code of J2ME client software is opened for the public. And the JavaScript code in the web can be reused as well. However the back-end web pages involve user registration, mail, uploading, and format conversion have to be completed by an experienced web developer. I have ported Dana’s project to my own site at &lt;a href="http://www.ennovation.org/map/google/apps/tracker/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Ennovation&lt;/a&gt;. I reorganized the project to meet the requirement for Chinese people. And the Java code can be rebuilt on NetBeans IDE with slightly modification.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Since Google’s KML becomes the standard for geographic information exchange, many web sites and geographic software start to support track viewing with KML. The users can download the KML file from the GPS terminals and check it in Google Earth, OziExplorer, and World Wind of NASA. As alternative solution, the users can also upload to Google Map and Live Virtual Earth and view the tracks in the KML files online.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Real Time Tracking&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The real-time track is a profitable market segment for the traditional GPS suppliers. A lot of organizations and individuals require real-time track services for tracking their assets in real-time. These organizations are express services, banks, security companies, car rental companies and car user clubs. The real-time tracking is the passive tracking plus the extra communication capability.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;After 911, every mobile phone sold in US should have positioning capability. That creates anther market for personal tracking. Of course it brings up some arguments about privacy. After the massacre in Virginia Tech University, all of the college students especially the female graduates are told to carry the GPS phones, switch on the real time tracking and push the alarm key when necessary.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There are also some tailor-made terminals for the elder people and children, which are tracked by their families. Of course, more and more private cars are installed GPS based AVL (Automatic Vehicle Locator) anti-theft systems.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Although all of above real time tracking devices maybe have different names and outlooks, they share the same concept and system structure. An AVL is quite simple, one microcontroller with two serial ports, which connect to a communication module (GSM/GPRS/CDMA) and a GPS receiver module. The system controller will read the NMEA from the GPS and transmit via the communication module. The GPRS mode is preferred in a long time tracking project, rather than the SMS mode. An open source project called Open GPS Tracker uses a low-cost MOTO C168 mobile phone, Tyco A1035D GPS module and an AVR microcontroller to build an AVL. The total BOM cost is about 50USD.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/xt65_xt75_internet_picture_1398157_124003.jpg" alt="Wireless Modules from Siemens" align="left" height="108" hspace="10" vspace="10" width="198" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;Wavecom in France is a professional wireless communication module supplier, who offers various modules for GSM/GPRS/CDMA on different band. This company also deliveries combined modules with GPS inside. It is handy to develop and download your own code into the module via its Open-AT development tools. You can also purchase wireless communication modules from Cinterion (Benq-Siemens), Motorola, SIMCOM and Huawei. Wireless communication module has another popular name as M2M (Machine to Machine).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Google Earth is powerful and popular. In general, it does not support track viewing with either local GPS over serial port or remote GPS over IP. Because its free version does not support communication with a GPS terminal. However, recently I realized that Google Earth is possible to check the web generated KML file regularly. In another word, the real-time tracking is possible on Google Earth, without any plug-in. I am planning to use this feature to build a real-time tracking service on my web server.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Traffic Management&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/traffic-jam.jpg" alt="Traffic" align="right" border="0" height="413" hspace="10" vspace="10" width="336" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;Traffic management is the headache for the civil transportation management authorities. People are struggling with the traffic jam everyday. Up to now, at least in Shanghai, the traffic programs in FM radio are still the preferred source for the traffic update. It has a great value to allow the drivers on the go to have the overview insight for the traffic status ahead. TMC (Traffic Message Channel) is invented for this purpose. New delivery channels are emerging that could carry TMC services, including RDS/RDBS, digital radio (DAB), mobile Internet, paging and GSM/GPRS mobile phone networks.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Dash Express GPS is a promising alternative solution for traffic management. Let us see it in this way. The TMC is a top-down and centralized traffic management approach, and the Dash Express is a flat and distributed traffic management approach. It is for sure that the similar projects will launch if Dash Express is successful.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Both TMC and Dash Express require powerful servers to collect the data of speed and vehicle densities on the road, and send the information back to the drivers via broadcast channels or IP networks.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Mobile Social Network&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/loopt.gif" alt="Loopt" align="right" border="0" height="348" hspace="10" vspace="10" width="329" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;The social networks are invading mobile market. Since the biggest social networks have not consolidate their share in mobile world. A lot of startup companies announced mobile social networks because the concept is straight forward and easy to implement. GyPSii, a Dutch company is very successful in mobile social network on iPhone platform. We can expect that more similar applications will be available on Windows Mobile, Google Android. With Google’s expertise in Google Map and Google Earth and GPL, Android is the most promising platform. Let us pray Android phone can be released in 2008. In fact, Google's Android is a Java application environment. Google offers a complete API suite for it. However, Google forbids any other Java based applications to direct access its map tiles servers. Neither does MSN/Live and Yahoo.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Geo-tagging&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/magratheaIcon.png" alt="Geotag" align="left" border="0" height="128" hspace="10" vspace="10" width="128" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;The Flickr, Panoramio, and Google Picasa are popular because of the geo-tagging pictures. Some new cameras have embedded the GPS modules to meet the consumer requirement. The coordinates are usually written into the metadata area (EXIF) of each digital picture. So the consumers can upload the pictures and share with their friends seamlessly. The geo-tagging is a kind of passive tracking.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Geo-tagging brings revolution to the consumer electronics. The camera phones and digital cameras have GPS geo-tagging feature now. There are different solutions at this moment. One approach is connecting an external GPS logger to the shutter or flash light. The other approach is internal GPS, which offers coordinate to the application processor. Besides, I found some GPS suppliers are promoting some manual GPS loggers to record the coordinate for pictures. It is a less impressive and transitional idea, because everyone wants to carry less electronics during the journey.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Clock Synchronization&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/NetClock_System_banner.jpg" alt="GPS clock" align="left" height="100" hspace="10" vspace="10" width="185" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;Even fairly accurate computer clocks are likely to vary due to manufacturing defects, changes in temperature, electric and magnetic interference, the age of the quartz crystal, or even system load. Additionally, even the smallest errors in keeping time can significantly add up over a long period.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The GPS system includes 24 satellites each with three or four on board atomic clocks. The US Naval Observatory monitors the satellite’s clocks and sends control signals to minimize the differences between their atomic clocks and a master atomic clock for accuracy and traceable to national and international standards (known as UTC).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;For time synchronizing a clock, the GPS signal is received and distributed by a master clock, time server, or primary reference source to a device, system, or network so the local clocks are synchronized to UTC. Typical accuracies range from better than 500 nanoseconds to 1 millisecond anywhere on earth. The GPS clock synchronization eliminates the need for manual clock setting (an error-prone process). The benefits are numerous and include: legally validated time stamps, regulatory compliance, secure networking, and operational efficiency.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;A freeware called GPS Time and Test is a PC clock synchronization program. It uses NMEA protocol. $GPZDA, $ZQZDA or $GPRMC protocol sentences are explored as time source.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Legal Terms and Regulations&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In general, GPS is a free service for the ordinary consumers. There is no legal issue here. However if a system is made up of map data, there is some legal issues involves copyright and regulations. The major concerns are the source and abuse of the map data, copyright, country border argument, accuracy, and military facilities. Here I listed some challenges that a system designer may meet.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Google only allows users to access its map data and map tiles via AJAX API or Android API. Although the map tiles' addresses are quite simple to access, it is forbidden. Google also use some cookies to track the satellite map tiles. The famous 3rd party MGmap has to give up caching the Google's map tiles because of this issue. Now MGmap has to use different maps from Yahoo and Live.&lt;/li&gt;&lt;li&gt;Google forbids any commercial application with its free map API. The Google map based services have to be open and free. The commercial applications have to purchase the commercial services.&lt;/li&gt;&lt;li&gt;Google forbids any application for any vehicle navigation with its API.&lt;/li&gt;&lt;li&gt;Live virtual earth forbids any applications for real-time tracking with its API.&lt;/li&gt;&lt;li&gt;In some countries like China, all the web map services have to shift on purpose for security reasons. That means the GPS coordinate is not as identical as the Chinese map coordinate.&lt;/li&gt;&lt;li&gt;In China, online custom map is not allowed. Although this is not a law or a regulation, many map suppliers including Google has disable such service. But it is legal and encouraged in other countries.&lt;/li&gt;&lt;li&gt;More explicit and implicit rules...&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8942739041157895159?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8942739041157895159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gps-systems-pdas-software-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8942739041157895159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8942739041157895159'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gps-systems-pdas-software-and.html' title='GPS systems (PDAs software and applications)'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-6364034101981038434</id><published>2010-05-19T04:18:00.001-07:00</published><updated>2010-05-19T04:18:39.785-07:00</updated><title type='text'>Reuse Your old personal GSM phone for SMS control and monitoring</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The idea was born from the knowledge that everyone of us has in the drawer at least one old GSM phone, that, for varied reasons, we do not use! The following application is realized using a PIC microcontroller connected to Ericsson T18 phones, testing the compatibility also with A1018 and T28. But it is not commercialized for reasons of difficult availability of the connectors, instead it can be a lot interesting for hobby use.&lt;br /&gt;Moreover at the end of the post you can view the links for having other combinations of Microcontroller and cell phones.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;The target is remote activated (boiler, control relais..etc.) or receiving SMS in alarm case (gas or burglar alarm) to give again a life to our old cellular&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;GSM2 &lt;/strong&gt;[ bidirectional GSM Remote Control - remote activator - receiver of SMS alarms - ]&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;This is the picture of the ended project, the missed components are optional (Quartz Y1 and J1 connector...).The J2 connector is used in order to connect GSM2 to phone, therefore you will have to use a cable with connectors evidently adaptable to the used telephone.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;This is ALL the documentation for the realization of GSM2 design.&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Brochure &lt;a title="gsm2_istr.pdf" id="p113" target="_blank" href="http://dev.emcelettronica.com/various/PDF/gsm2_istr.pdf" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;gsm2_istr.pdf&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Manual &lt;a title="gsm2_rev3.pdf" id="p122" target="_blank" href="http://dev.emcelettronica.com/various/PDF/gsm2_rev3.pdf" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;gsm2_rev3.pdf&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Schematic, PartList, PCB and Firmware YOU CAN DOWNLOAD HERE---&gt;&gt; &lt;a target="_blank" href="http://dev.emcelettronica.com/download" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;DOWNLOAD&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Useful Resources to use various phones and also various microcontrollers but with the same target, to realize GSM remote control.&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Remote Control and monitoring with &lt;a target="_blank" href="http://www.atmel.com/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Atmel&lt;/a&gt; &lt;strong&gt;TINY12L &lt;/strong&gt;and a phone&lt;strong&gt; Ericsson (&lt;/strong&gt;&lt;strong&gt;tested with the Ericsson T10s, T28 and R320 only)&lt;/strong&gt;&lt;br /&gt;Review on issue 142 of the magazine &lt;a target="_blank" href="http://www.circuitcellar.com/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Circuit Cellar&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;link ---&gt; &lt;a target="_blank" href="http://www.riccibitti.com/tinyplanet/tiny_intro.htm" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;strong&gt;Tiny Planet&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Remote Control with 2 relais controlled by a serial com &lt;a target="_blank" href="http://en.wikipedia.org/wiki/RS232" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;RS232&lt;/a&gt; and a module &lt;a target="_blank" href="http://www.wavecom.com/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Wavecom&lt;/a&gt; You can connect it to the PC and command the module by your keyboard on the PC with &lt;a target="_blank" href="http://www.unitronic.de/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;OpenAT&lt;/a&gt;Command.&lt;br /&gt;Review on issue 317 (january 2003) of the magazine&lt;a target="_blank" href="http://www.elektor-electronics.co.uk/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt; Elektor Electronics&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;link---&gt; &lt;a target="_blank" href="http://www.elektor-electronics.co.uk/Default.aspx?tabid=27&amp;amp;art=50300&amp;amp;PN=On" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;SMS-Controlled Mains Sockets&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Remote control and monitoring by SMS with the use of microcontroller &lt;a target="_blank" href="http://www.atmel.com/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Atmel&lt;/a&gt; &lt;strong&gt;AT89S8252&lt;/strong&gt; and a phone&lt;br /&gt;Siemens '35' series. Compatible with command &lt;a target="_blank" href="http://en.wikibooks.org/wiki/Serial_Programming:Modems_and_AT_Commands" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;AT&lt;/a&gt;&lt;br /&gt;Review on issue 306 (january 2002) of the magazine&lt;a target="_blank" href="http://www.elektor-electronics.co.uk/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt; Elektor Electronics&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;link ---&gt; &lt;a target="_blank" href="http://www.elektor-electronics.co.uk/Default.aspx?tabid=27&amp;amp;art=50605&amp;amp;PN=On" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Remote Process Control using a Mobile Phone&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;SMS remote control with a Motorola microcontroller (&lt;a target="_blank" href="http://www.freescale.com/" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Freescale&lt;/a&gt;) &lt;strong&gt;68HC705C8&lt;/strong&gt; and a &lt;strong&gt;NOKIA 5110&lt;/strong&gt;phone. You can control by SMS up to 7 power relais.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GSM remote control with a &lt;strong&gt;PIC&lt;/strong&gt; microcontroller and a &lt;strong&gt;SIEMENS A65&lt;/strong&gt; phone. You can control 2 output relais and to have 2 input for alarm signals, moreover there are also present 3 I2C lines for future expansion.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-6364034101981038434?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/6364034101981038434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/reuse-your-old-personal-gsm-phone-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/6364034101981038434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/6364034101981038434'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/reuse-your-old-personal-gsm-phone-for.html' title='Reuse Your old personal GSM phone for SMS control and monitoring'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8615718568399492081</id><published>2010-05-19T04:17:00.001-07:00</published><updated>2010-05-19T04:17:44.803-07:00</updated><title type='text'>Top POS (Point Of Sale) Resources</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;FREESCALE&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.freescale.com/files/pr/rdmcf5329pos.html" title="Coldfire POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ColdfirePOS_200.jpg" alt="ColdFirePOS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;a href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDMCF5329POS&amp;amp;parentCode=WT559_POSTECHSEMILP&amp;amp;nodeId=02VS0lDFTQYTLC0ECB224E#" title="POS Block" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POSREFDESIGNBDTN.jpg" alt="PointOFSale" align="right" border="0" height="165" hspace="8" vspace="8" width="206" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The Point of Sale Reference Design demonstrates how the control,&lt;br /&gt;security, and connectivity features found on the MCF5329 ColdFire&lt;br /&gt;Microprocessor and MCS908QG8 Microcontroller work together to create a&lt;br /&gt;secure Industrial Point of Sale System. Complete with an Open Source&lt;br /&gt;Embedded &lt;a href="http://www.uclinux.org/" title="uCLinux" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;µCLinux&lt;/a&gt; Software Solution, the Point of Sale Reference Design&lt;br /&gt;serves as a great reference for any industrial design that requires&lt;br /&gt;flexible connectivity options, secure communication, or a human&lt;br /&gt;interface at a low cost and with a fast development cycle.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;INTEL&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.intel.com/design/network/products/npfamily/ixb8055.htm" title="Intel POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/Intel_POS_200.jpg" alt="Intel POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;a href="http://www.intel.com/design/network/papers/278379.htm" title="Intel POS Utopia" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ixb8055_blkdiag.gif" alt="Intel UTOPIA POS" align="right" border="0" height="150" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The Intel® IXB8055 UTOPIA/POS Reference Design is a new addition to the already full-featured set of robust tools Intel offers its customers to accelerate time-to-market for Intel® IXP1200 based products. The IXB8055 Verilog code assists customers in bridging between the IX Bus and the Universal Test and Operations PHY Interface for ATM (UTOPIA) and ATM Packet-over-SONET (POS) interfaces.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;ZILOG&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.zilog.com/zatara/devtools.asp" title="Zilog ARM9 Zatara" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/Zilog_POS200.jpg" alt="Zilog POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;a href="http://www.zilog.com/docs/pb0221.pdf" title="Zatara ARM9" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/Zatara_POS.jpg" alt="Zatara POS ARM9" align="right" border="0" height="200" hspace="8" vspace="8" width="154" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The ZiLOG ECOSystem is a collaboration between ZiLOG, Advance Printing Systems, Inside Contactless, MPC Data and VirtualLogix, each of whom bring their expertise to the reference design. The result is a complete development environment which includes all the functionality needed to develop a payment solution, including certified EMV Level 1, secure Real-Time Virtualization(TM) software, a complete Linux port, low-cost, compact thermal printer and drivers, multi-standard contactless readers and drivers, and the ZA9L high performance ARM-9 ASSP. &lt;a href="http://investor.zilog.com/phoenix.zhtml?c=107835&amp;amp;p=irol-newsArticle&amp;amp;t=Regular&amp;amp;id=926900&amp;amp;" title="Zatara POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;more&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;AMD&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_9863_9864%5E13441,00.html" title="AMD Geode" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/AMD_Geode_200.jpg" alt="AMD Geode" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;a href="http://www.logicpd.com/products/som/amd/geode_lx" title="AMD Geode Reference" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POS_Reference_Design.jpg" alt="AMD Geode Reference Design" align="right" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The AMD Geode™ LX UVC Reference Design Kit (RDK) brings together small form factor design, x86&lt;br /&gt;application compatibility, high processor performance, and low power consumption to create a complete product development solution that lets you create Ultra Value Client (UVC) products quickly and efficiently. &lt;a href="http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_9863_13022%5E14815,00.html" title="Geode AMD" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;more&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;RENESAS&lt;/b&gt;&lt;br /&gt;&lt;a href="http://america.renesas.com/fmwk.jsp?cnt=platform_summary_landing.jsp&amp;amp;fp=/products/security/epos/platform_summary/" title="ePOS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POS_Renesas.jpg" alt="POS Renesas" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;a href="http://america.renesas.com/media/products/security/epos/platform_summary/lit_ePOSReferencePlatform.pdf" title="ePOS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ePOS_Renesas.jpg" alt="ePOS Renesas" align="right" border="0" height="200" hspace="8" vspace="8" width="155" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The Renesas ePOS reference platform gives financial-transaction device manufacturers a strong base for developing secure, scalable terminals that meet the performance and cost requirements for next-generation payment devices.&lt;br /&gt;They can use this open-standard based, market-ready design to accelerate the development and deployment of secure EMV terminals that not only incorporate the latest security standards, but also achieve improved performance and have a lower overall cost of ownership.&lt;br /&gt;&lt;a href="http://eu.renesas.com/fmwk.jsp?cnt=industrial_1_root.jsp&amp;amp;fp=/applications/superh_solutions/superh_industrial/low_end_terminal/" title="Renesas SH POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;b&gt;Industrial Terminals including POS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;ST MICROELECTRONICS&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.st.com/stonline/stappl/cms/press/news/year2007/p2204.htm" title="ST Point Of Sale" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ST_Pos_200.jpg" alt="ST Point Of Sale" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.st.com/mcu/inchtml-pages-str7_tools.html" title="ST Point Of Sale" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ST_ARM200.jpg" alt="ST Point Of Sale" align="right" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;b&gt;STMicroelectronics (NYSE: STM)&lt;/b&gt;, the world’s leading semiconductor supplier for the Industrial market, today announced the&lt;br /&gt;availability of its POS (Point of Sale) reference design that integrates the card payment and fiscal cash register on a single board.&lt;br /&gt;The all-in-one system delivers optimized performance and significant cost benefits, coupled with superior reliability and expandability.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;POS Hardware Resources&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.cl.cam.ac.uk/~mkb23/interceptor/" title="POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POS_1.jpg" alt="POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Our "Chip and PIN" Point-of-Sale Interceptor has attracted some&lt;br /&gt;attention in the German media recently, since TV coverage on ARD TV's Plusminus, by Sabina Wolf, and a corresponding press release from Westdeutscher Rundfunk. This page briefly explains the principle of the interceptor, and what it achieves. Our interceptor is a prototype device which sits between a Point-of-Sale (POS) terminal in a shop and the Chip and PIN card carried by a customer. It listens passively to the electrical signals – "the conversation" – between the chip card and the terminal, and from this can retrieve and store the customer's account number. In the case of the cheaper "Static Data Authentication" (SDA) Chip and PIN cards, which are used by most UK banks, it can also store the customer's entered PIN, when it is sent from the terminal to the card, just after the customer types it in.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.maxim-ic.com/solutions/pos_terminal/index.mvp" title="POS Maxim" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POS_Maxim.jpg" alt="POS_Maxim" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Tamper Reactive Technology Clears Memory in 100ns upon Tamper Event.&lt;br /&gt;The DS3600 secure battery-backup controller is the industry's first IC to offer comprehensive data protection for&lt;br /&gt;Point-of-Sales Terminals. On-chip nonvolatile SRAM and a proprietary key memory architecture store encryption key data. The DS3600's unique memory architecture prevents system stress from influencing the memory cell or data remnants from being detected.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.zylogic.com.cn/english/solutions_1_2.htm" title="POS Zylogic" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POS_Zylogic.jpg" alt="POS Zylogic" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;The point-of-sale (POS) industry will grow significantly in the next several years, but manufacturers will be hampered&lt;br /&gt;in their ability to compete for market share because of commoditized products. According to Frost &amp;amp; Sullivan,&lt;br /&gt;the POS terminal market has reached the saturation point, since manufacturers have already sold basic equipment&lt;br /&gt;to target customers. POS companies must create innovative new products and services in order to generate sales.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.cirrus.com/en/products/pro/detail/P131.html" title="ARM9 Cirrus" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ARM9_Cirrus.jpg" alt="ARM9 Cirrus" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;EP9312 is an ARM9-based highly integrated embedded system-on-chip (SOC) processor from Cirrus Logic which is able to work at up to 200MHz. The ARM920T microprocessor core with MMU has separate 16 KByte, 64-way set-associative instruction and data caches is augmented by the MaverickCrunch co-processor, enabling faster-than-realtime compression of audio CDs. The processor has a large peripheral set including 1/10/100 Mbit Ethernet, three 16550 UARTs, IrDA, 3-port USB (host), up to 2 devices EIDE, touch interface, LCD and Raster interface, SPI interface, AC97 interface, etc. In addition, a highly flexible memory interface provides compatibility&lt;br /&gt;with SDRAM, SRAM, Flash, and ROM.&lt;br /&gt;&lt;a href="http://www.embedinfo.com/english/product/EP9312.asp" title="ARM9 Development Board" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Embest NK9312 Evaluation Board&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.fujitsu.com/emea/services/microelectronics/gdc/gdcdevices/mb86r01-jade.html" title="Fujitsu" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POS_Fujitsu_200.jpg" alt="Fujitsu" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;MB86R01 'Jade' is a highly-integrated device for embedded automotive graphics applications. Incorporating an ARM926EJ-S CPU core, together with an enhanced version of the successful Coral PA graphic processor and a number of external interfaces, this 90nm technology device is highly optimized for various types of applications which require outstanding CPU performance in combination with sophisticated 2D/3D graphics features in a compact SoC. Target applications include on-board and mobile navigation systems, graphical dashboard systems, HUD (head-up display) units, rear seat entertainment systems, Point of Sales terminals and industrial control panels.&lt;br /&gt;&lt;a href="http://www.fujitsu.com/au/services/industries/retail/pos/" title="POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Point of Sale&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.epson.jp/device/semicon_e/product/mcu/32bit/index.htm" title="EPSON 32bit" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/EPSON_32bit_200.jpg" alt="EPSON 32bit" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;S1C33 family is SEIKO EPSON's original 32-bit RISC CPU. The product incorporates peripheral functions including rapid DMA, multichannel SIO, programmable timer, PLL and prescaler. Features of fast operation and extremely low power consumption qualify this family for application to OA equipment such as printer and portable equipment, including PDA, cellular and TOY. In addition, as this family incorporates A/D converter and PWM timer, its combination with middleware provides digital signal processing such as voice processing&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.eu.necel.com/news/documents/pr07-10-04.html" title="NEC" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/NEC_Pos200.jpg" alt="NEC POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;NEC LCD Technologies, along with its sales and marketing channels in Europe, NEC Electronics Europe, today introduced two new 15-inch [38 centimeters (cm)-diagonal] amorphous-silicon color thin-film-transistor (TFT) liquid crystal display (LCD) modules with extended graphics array (XGA) resolution for industrial equipment such as factory automation controllers, measuring instruments, automatic teller machine (ATM) terminals, kiosks and point-of-sale (POS) systems. The NL10276BC30-32 is a standard product with brightness of 250 candelas per square meter (cd/m2), while the NL10276BC30-33 has brightness of 350 cd/m2. Both modules conform to the Panel Standardization Working Group (PSWG) standards for 15-inch LCD modules.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;Software Resources&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.kompiere.se/products/capabilities/point-of-sale.php" title="Compiere POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/compiere.jpg" alt="compiere pos" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Compiere Point of Sale (POS) processing enhances retail sales and E-commerce business processes. Unlike stand-alone POS solutions, each&lt;br /&gt;sales transaction immediately updates financial, accounting and customer records, providing a broader view of your overall sales&lt;br /&gt;activity and product stocking levels.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://pscafe.no-ip.org/" title="PSCafe POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/POSCAFE.jpg" alt="PScafe POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;PSCafe is a POS (Point of Sale) designed for a school cafeteria&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/freemercator" title="FreeMercator" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/freemercator.jpg" alt="freemercator" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Free and open Java POS Point of Sale terminal and back-office. Project goals include scalabiliy, robustness, and ease of use.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://sourceforge.net/projects/mercator" title="Mercator" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/mercator.jpg" alt="mercator" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Mercator is a Point of Sale (POS) application written in Java. It is a OO, multi-purpose transaction engine that supports general retail and quick-order restaurant environments using standard POS peripherals (JavaPOS) and/or menu interface.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://bananapos.com/pos/home.html" title="BananaPOS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/BananaPOS.jpg" alt="Banana POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 51, 153); "&gt;BananaPOS&lt;/span&gt; is a point of sale system aimed at the Linux operating system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://phppointofsale.com/" title="PHP POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/PHPPOS.jpg" alt="phppos" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;PHP Point Of Sale (POS)&lt;br /&gt;is a web based point of sale system designed to help small businesses with keeping track of customers, items, and sales. This program works great for businesses that use cash, check, or account numbers for their sales.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://burrellbizsys.com/products/lane.html" title="LanePOS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/LanePOS.jpg" alt="LanePOS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;L’ânePOS is our advanced open source point-of-sale system for Linux, Unix, and similar operating systems. It supports multiple check-out lanes, retail stores, restaurants, and numerous other advanced features.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://jpos.org/" title="jPOS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/jpos.jpg" alt="JPOS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;jPOS &lt;/b&gt;is a Java® platform-based, mission-critical, ISO-8583 based financial&lt;br /&gt;transaction library/framework that can be customized and extended&lt;br /&gt;in order to implement financial interchanges.&lt;br /&gt;jPOS provides electronic payment and related solutions to retailers,&lt;br /&gt;payment processors and banks around the world.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p class="bodyp" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.lynuxworks.com/products/bluecat/bluecat-linux-pos.php?ck=81" title="BlueCAT POS" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/BlueCAT.jpg" alt="BlueCAT POS" align="left" border="0" height="160" hspace="8" vspace="8" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;BlueCat Linux POS offers the smallest memory footprint of any modern POS operating system.&lt;br /&gt;Use BlueCat Linux POS to program the latest POS terminals, or to give new life to older terminals that&lt;br /&gt;you thought were too memory-constrained to run a modern POS application. Get the flexibility and cost benefits of open-source Linux. Applications built on BlueCat&lt;br /&gt;Linux POS preserve your software investment and can be ported to other Linux platforms later.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8615718568399492081?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8615718568399492081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/top-pos-point-of-sale-resources.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8615718568399492081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8615718568399492081'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/top-pos-point-of-sale-resources.html' title='Top POS (Point Of Sale) Resources'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8863566981847529146</id><published>2010-05-19T04:15:00.001-07:00</published><updated>2010-05-19T04:15:51.797-07:00</updated><title type='text'>Hacking a Network Attached Storage (NAS)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;Hacking a Network Attached Storage (NAS)&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;I try to find some candidate hardware platforms and Linux distributions in this article, so the fans can build their own Network Attached Storage (NAS) or expand their NAS with more features by hacking an existing NAS (Network Attached Storage).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;What is NAS?&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;NAS is the abbreviation of Network-attached Storage. It was introduced by Novel to offer the network file sharing service. Network attached Storage (NAS) was designed for enterprise applications, so it supports UNIX from the very beginning. The consumers realized they need more storage capability for the digital media files from Internet. A consumer NAS (Network-attached Storage) can share the media files with all the PCs and the digital media players. Furthermore, NAS can download the files from BitTorrent or eDonkey in a non-PC environment. The latest consumer NAS transforms into a full-functional media server with variety features.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Let us check out the long list:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;File sharing for Windows, Linux and Mac via Samba, NFS, HTTP, FTP and rsync;&lt;/li&gt;&lt;li&gt;Easy data backup capability for flash cards, USB stick and removable HDD, with optional RAID support;&lt;/li&gt;&lt;li&gt;A print server;&lt;/li&gt;&lt;li&gt;A Media server for Windows MCE, Xbox360 and PS3 with UPnP/DLNA;&lt;/li&gt;&lt;li&gt;A Web server with DDNS, PHP, ASP, SQLite and MySQL;&lt;/li&gt;&lt;li&gt;An FTP server;&lt;/li&gt;&lt;li&gt;An iTunes server;&lt;/li&gt;&lt;li&gt;A 24 hour download server supports BT, eDonkey and FTP;&lt;/li&gt;&lt;li&gt;A home video surveillance server, which supports both IP camera and USB camera;&lt;/li&gt;&lt;li&gt;Multiple administration panel choices in Web GUI, virtual console and custom terminal software;&lt;/li&gt;&lt;li&gt;Much more …&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;ol&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Why Do We Need NAS (Network Attached Storage)&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Although we can use the more powerful PCs in many applications, we still require embedded computers as NAS for security, power consumption, and network.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Security&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;A well-designed NAS can offer more security than a regular PC. Most of the NAS OSes are based upon Linux OS, so they have less virus problems compare to Windows. Even if they have downloaded the files infected by some viruses, the embedded OS in the NAS will not be infected by the viruses. Of course, you still have to scan the files with the anti-virus software.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;A dual slot NAS usually offers RAID backup service. So the important data can be restored if one disk has a malfunction.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Power Consumption&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;A PC is not designed for working 7*24 hour. It can work for a long time. But I will not leave my PC to download a huge file without knowing when it can be ended. A NAS can work in more energy effective ways. If there is no active connection, the NAS can shut down the hard disk drivers and wait for the connections. The power consumption of a regular NAS depends on its hard disk drivers, which is about 5W~20W. A NAS can save our money and environment with less carbon emission.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Network Access&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;A Network-Attached Storage (NAS) can reduce unnecessary network communication to Internet. Most of the media files are shared on the NAS within the LAN. The other IP based appliances can work with the NAS by fetching the digital media files to playback. We can setup our own “HOME” page at home, because a NAS also offers a web server with DDNS (Dynamic DNS). Besides the regular web content, we can use it to access to the cameras as a remote surveillance server. It is a very important service for digital home. A NAS is a good platform to host such service.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Actually the NAS could be a platform for many commercial network applications. For example, you can use it in a Bluetooth advertisement pusher or a music retail store. Just plug in a Bluetooth stick and install proper software, the NAS can start to push the advertisement or the sample music clips via Bluetooth.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Paradox of NAS&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There is a paradox for NAS. A NAS supposes to offer much larger storage capacity than the existing storage media. However, due to the fast growing of storage market, the storage capacity of a NAS usually seems smaller after several months. According to the famous Moore's Law, a NAS usually faces to the upgrading requirement for disk capacity and local network connectivity bandwidth in every 18 months. Today, an advanced desktop PC has a 512GB hard disk and a NAS has a 2TB hard disk. Maybe a regular PC will have a 2TB hard disk 6 month later. So the NAS will lose its capacity advantage at that moment. A consumer may hesitate to offer a NAS which seems to be obsolete in one year anyway. As a result, the consumer class NAS integrates many entertainment features, so the consumers can convince themselves that NAS can help in many other ways besides storage and sharing.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;NAS Hardware Platform&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The latest NAS model features SATA-II slots, USB 2.0 high speed host ports, Gigabit Ethernet or 54M WiFi connectivity. The structure of a NAS is identical to a regular PC without VGA and input devices. In general, either a RISC based embedded application computer or a regular x86 PC can be used as the hardware platform for a NAS. Most of the commercial NAS devices use the RISC processors. It is your own decision to pick the hardware platform. However, developing on a RISC embedded system requires extra hardware tools and knowledge, which is not recommended for a beginner. Building a PC based NAS is a good starting point for a beginner. At least we will not worry about breaking the board.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;RISC based&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;I browse the data catalogue of the semiconductors manufacturers for NAS. Among these chips, Marvell’s Digital Home Platforms integrates most of the desired features with a 1.5GHz ARM chip, SPDIF/I2S audio and TS/Video port. Obviously, it is more than a NAS. The chip is very popular in the commercial NAS products. You can easily find one and hack it.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;If you are looking for other platforms, you can also find the solutions from Freescale (Power PC based), PMC-Sierra (MIPS based), and Cirrus Logic (ARM920 based). However, these chips usually have slower microprocessors (from 200MHz to 400MHz) and slower peripherals (ATA, USB1.1, 10/100M Ethernet). So you can only use it as a pure storage device.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;If you want to build it from scratch to learn how Linux works, the best candidates are S3C2410/2440 and XScale. These chips are not designed for the NAS, but for hand-held devices. However, these chips are very popular and they have the most of the peripherals on chip. Of course, the performance of the peripherals are not enough, sometimes you have to expand it with supplementary hardware.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;JTAG and Serial Console&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;You may need a JTAG board and a serial port for bringing up a 'virgin' board. You must use the JTAG board to download the boot-loader to the on board flash memory, and use the serial port to give the boot-loader the further programming and configuration instructions. However, if the chip (such as TI OMAP3530) has build-in boot-code to support extra booting options, such USB stick, SD card, Ethernet, hard disk driver, then you are lucky to select an easy chip to work on.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Microcontroller&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Some NAS devices use a low cost microcontroller to get the user input and light the status LEDs. There are some hacks available for these microcontrollers. However, you have to get some hardware programming tools to download the microcontroller’s firmware. The programming method is vendor dependent.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;PC based&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;As I mentioned, we can use an obsolete PC as the hardware platform, since the hardware infrastructure of a NAS is almost identical to a PC. We only care about the power consumption, scalability and availability for a specific hardware platform. An obsolete usually consumes a lot of power, generates a lot of noise. I don't like that reuse idea. A PC based NAS must be low power, low noise and fast enough.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;If we check the x86 suppliers, Intel, VIA, AMD and their partners have offered many reference designs. Most of the reference designs are based upon low-power CPUs. Among these chips, I prefer the ATOM processor from Intel. It offers the lowest power consumption so far. The ATOM based main board is about 100USD. You can setup a dual bay NAS on ATOM platform within 140USD (excluding SATA HDD). The EPIA board from VIA is also a good candidate for x86 based NAS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;You can leverage the PC to develop your NAS with minimum cost. The cheap peripherals allow you to expand your NAS in many ways, such as WiFi connection, flash card bay, IEEE1394, eSATA and Bluetooth. You can download and install many open NAS OSes to find out the suitable package. Besides, you can install the OS on CD-ROM, USB stick or HDD without programming flash in an embedded system. Further more, you can expand your NAS to a media server with extra software modules.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;NAS Software Component&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;We should always look for the software components from open source communities, because most of the NAS software packages are Linux based distributions (although Microsoft SAK [Server Appliance Kit] and VxWork also have a small market share). Most of the semiconductors suppliers offer reference design with Linux BSP as well. Some vendors like Cirrus Logic offers full source on its site, the other vendors only offer their packages for their clients. So you have to find the alternative Linux distribution from the open source community sites if you can not get the packages from the semiconductors suppliers. Fortunately, there are too many options for you.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;First, there are off-the-shelf distribution from Debian and famous Linux distributors. You can install this distribution easily.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Second, you can build the Linux with open data sheet and open source tools by yourself. The other applications in user land can be build later and then install to the NAS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;Complete NAS OS&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;FreeNAS supports CIFS (Samba), FTP, NFS, rsync, AFP protocols, iSCSI, S.M.A.R.T., local user authentication, and software RAID (0,1,5), with a web-based configuration interface. FreeNAS is a Live CD distribution of FreeBSD, which can be installed on a 32 MB CompactFlash, hard drive or USB flash drive.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Openfiler was created by Xinit Systems, and is based on the rPath Linux distribution. Openfiler needs at least a 500 MHz CPU, 256 MB of RAM, 1.2 GB hard disk space, an optical drive and a FastEthernet network interface.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;NASLite is a Linux distribution designed to turn conventional x86-based computers with PCI interface into a simple network-attached storage device. NASLite boots from the floppy disk and runs in a 4MB RAM disk allowing for full capacity of the hard disk drives to be used as storage. Now NASLite becomes proprietary software, without source code.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The CryptoNAS is another live-CD project to offer encryption of user data in a NAS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The above NAS OS distributions can not offer every feature you want, then you can custom and strip down the Debian and FreeBSD to meet your requirement.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;File Sharing&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The basic file sharing services include NFS (for Linux), Samba (for Windows). Both services have been implemented already. In fact, any Linux computer can work as NAS, because file sharing is a default service for Linux. The only concern is file system for the hard disk. Usually the internal hard disks are formatted as EXT2/EXT3/UFS. That is transparent for the client PCs. But the developer must hack the kernel to support NTFS, especially in writing a USB hard disk formatted in NTFS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Data Backup&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;NAS normally uses RAID as back up feature. There are various combinations of these approaches giving different trade offs of protection against data loss, capacity, and speed. RAID levels 0, 1, and 5 are the most commonly found, and cover most requirements. Actually RAID level 0 just increases the capacity and speed, no any data backup is available. And RAID level 1 is a mirror backup, so you can restore the data in case one disk fails, but keep in mind that even if two HD of the same size are used, the total RAID volume capacity equals the capacity of one HD. The RAID level 5 offers high security for data restore. The RAID can be implemented in software, hardware and firmware. For Linux, it is supported in the kernel already. Even one disk failed in software RAID1 system, you can still read out the other hard disk on other hardware. If you configure the RAID system in other higher level, you need to restore the data in the same device.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Print server&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The printer sharing is implemented in SMB of Samba package. In order to install the Linux network printer for Windows workstation, you have to:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Install and configure the Samba server&lt;/li&gt;&lt;li&gt;Add extra script in /etc/printcap&lt;/li&gt;&lt;li&gt;Create a filter file under /var/spool/lpd/smb/&lt;/li&gt;&lt;li&gt;Create a .config file under /var/spool/lpd/smb/&lt;/li&gt;&lt;li&gt;Restart the printer by #lpc restart all&lt;/li&gt;&lt;li&gt;Find the network printer in Samba from Windows workstation&lt;/li&gt;&lt;li&gt;Install the printer postscript driver in Windows&lt;/li&gt;&lt;li&gt;Print from Windows workstation&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Please refer to Linux printer how-to for more informations.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;P2P Sharing&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The P2P sharing must be included in a consumer NAS. QNAP, ASUS and D-Link have integrated BitTorrent already. The BitTorrent client has many Linux ports, which can be cross-compiled in an embedded system. Another well-known P2P sharing protocol is eDonkey. eDonkey is open source software as well. But the first source is released for Windows VC++. Compared to BitTorrent, eDonkey has less Linux ports. So far, the eDonkey download feature is only included in some high-end consumer NAS. According to some reports, the download speed of the embedded P2P clients is much slower than the PC based clients. So far I didn't find the official analysis report.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There is a complete and update list for BitTorrent clients in Wikipedia, which are sorted by UI, programming languages, OS and etc. We need a web based, C++ based client software. Of course you can port a Java or Python client if your system supports these languages.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The consumers want to have these two major P2P protocols in one package. Some commercial NAS devices use a combination of Clutch+Transmission. The other ones use MLDonkey, which supports BitTorrent, eDonkey and other protocols. This software is written in Objective Caml, C and assembly. Porting Objective Caml is the major task for MLDonkey.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The user front-end usually is based upon web interface. If you are interested, you can use the custom software. Sancho is a good front-end software working with MLDonkey. You can access the P2P service in a Windows workstation just like running the eMule software in the native PC.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;UPnP/DLNA media server&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The UPnP architecture allows local peer-to-peer networking of PCs, networked appliances, and wireless devices. It is a distributed, open architecture based on established standards such as TCP/IP, UDP, HTTP and XML. The UPnP is a media independent protocol.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Digital Living Network Alliance is an international, cross-industry collaboration of consumer electronics, computing industry and mobile device companies.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The DLNA is an industrial standard, so more and more media players integrate UPnP/DLNA support, such as PowerDVD, WinDVD, Vista, PS3, VLC media player and famous MPlayer/GeeXbox.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In order to support UPnP/DLNA media server in NAS, you have to find libdlna, ushare for Linux.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;If you are going to setup your home entertainment network, you definitely need one or several NAS servers to share the media files. Switch on your front-end equipment, IPTV, PS3, Xbox, DMA, HTPC, enjoy yourself!&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Web Server&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Some RISC based commercial NAS claimed they are offering Apache+MySQL web server inside the NAS server. I am a little confused because I know a full-featured Apache+MySQL+PHP combination is hard to be cross compiled. Normally, the web server for an embedded system will use small footprint server like BOA. The LAMP combination is working perfectly on a PC based NAS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;FTP Server&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The FTP server and client have been integrated into Linux long time ago.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;IP Camera&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The USB camera is very cheap and widely used. Some of the NAS devices can use these low-cost USB cameras as video surveillance sensors and embedded the real-time video/audio stream in a web page, which can be accessed by authorized administrator members via DDNS. Porting USB camera requires some knowledge about the interface IC. You must identify the semiconductors suppliers and find the corresponding drivers. Please visit Video4Linux and Linux USB for the latest information about camera.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The IP camera is a better choice for video surveillance. It usually offers better video quality (SD/HD on higher frame rate), long range operation (Ethernet or WiFi), PTZ (Pan, Tilt and Zoom) controls, audio support, advanced video format (MJPEG, MPEG-4), night vision, PIR input and more. It is easy to integrate an IP camera with a NAS, because it is an 'IP' appliance.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;You can even merge video inputs from several cameras in one web page to monitor multiple sites in the same time. It requires web programming skills.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Hacking a Commercial NAS&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Hacking a commercial NAS is a good approach to learn the embedded Linux. There are too many resource web sites for hacking a commercial NAS. You can modify the firmware and add extra features for your own purposes. Although a commercial NAS has limited scalability, you still can enjoy yourself in hacking such a high-tech toy. Why not? Just buy a second-hand NAS from ebay and hack it.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;You can visit NAS-Central.org as the starting point. This wiki site will lead you to the specific brand, model and hacking blogs. You can follow it to know what has been done by other developers, what you can do and what you can not do.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8863566981847529146?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8863566981847529146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/hacking-network-attached-storage-nas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8863566981847529146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8863566981847529146'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/hacking-network-attached-storage-nas.html' title='Hacking a Network Attached Storage (NAS)'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-4620043383188498728</id><published>2010-05-19T04:14:00.001-07:00</published><updated>2010-05-19T04:14:48.626-07:00</updated><title type='text'>Radio Mobile - Free RF Design Software</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Radio Mobile is a free RF design software created by Roger Coudé.&lt;br /&gt;The latest version available of this writing is 9.3.8. The installer files can be downloaded freely from Radio Mobile’s &lt;a href="http://www.cplus.org/rmw/english1.html" rel="nofollow" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;web site&lt;/a&gt;. These are individual zipped files so you will have to go through a number of unzip procedures before you can finally install the application. I found an easier way to install Radio Mobile (&lt;a href="http://www.pizon.org/" rel="nofollow" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;here&lt;/a&gt;) where there is an installer file that will install everything into your computer. The application can be installed in PCs with Windows 95 OS or higher.&lt;br /&gt;After the installation, the next thing to do is to input into the application elevation data. The accepted formats include GTOPO30, SRTM and DTED that can all be freely downloaded. GTOPO30 is a digital elevation model for the world with 30-arc second resolution developed by the United States Geological Survey (USGS). SRTM and DTED are also elevation data that are both available from the the National Geospatial-Intelligence Agency (NGA).&lt;br /&gt;Providing elevation data to Radio Mobile can either be done automatically or manually. By default, it will automatically obtain from the internet elevation data if it is not found in your PC. You can also download the data into your local drive and let the Radio Mobile work from it when you are offline. There is a “use only local files” setting in the internet options of the application.&lt;br /&gt;When the elevation data is already available for the application, you can now generate the map of a desired area where you will plot your predicted RF coverage plot.&lt;br /&gt;One good feature of Radio Mobile I appreciated is the generated map can be merged with other map images like MapQuest and MapPoint. This provides important location data like country, city or street names and also enhances the overall look of the coverage plot.&lt;br /&gt;After the desired map is generated, you now have to input several data like RF equipment parameters, antenna data and even environmental data like ground conductivity and climate. When all required parameters are provided, the desired RF coverage plot can already be calculated. These calculations can be from simple amateur radio base station propagation coverages, to wi-fi networks or to more complex digital TV coverage predictions. Another very useful application of Radio Mobile is for point-to-point microwave link calculations. With this feature, one can see the path profile of the radio link and check on the Fresnel zone between transmit and receive points.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/Sample_Path_Profile.jpg" align="absmiddle" height="408" width="608" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;I have tried using Radio Mobile in verifying the actual coverage of our in-house analog trunked radio system. I also have used it in designing the initial phase of our new TETRA digital radio system and the first site of our planned digital TV system. I am currently writing an article on a sample work using Radio Mobile which I will post very soon.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-4620043383188498728?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/4620043383188498728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/radio-mobile-free-rf-design-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4620043383188498728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4620043383188498728'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/radio-mobile-free-rf-design-software.html' title='Radio Mobile - Free RF Design Software'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8130526132411509400</id><published>2010-05-19T04:13:00.001-07:00</published><updated>2010-05-19T04:13:43.395-07:00</updated><title type='text'>Touch Screen</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Touch Screen&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The touch screen technology is widely used in PDA, smart phone, PMP, ATM, information kiosk and many other types of equipment in industrial, medical and commercial environment. Actually the technology enabling these devices is not new, since it was invented by Dr. Samuel C. Hurst in 1971. But it becomes hotter after the release of popular iPhone and iPod touch. With new patents filed for the touch screen technology, Apple brings a new wave to this mature segment and more companies are involved in this revolution with improved interactive UI, ICs, assembly modules and software components.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Conventional Touch Screen&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The implementation of a touch screen includes resistive, capacitive, infrared, surface acoustic wave, optical imaging, acoustic pulse, and other emerging technologies. The kit usually is made up of a touch module, and a controller, which measures the touch events in frequency, voltage or current, encodes and transmits to the drivers running in host controller. Different touch screen technologies are suitable for different environments. The selection criteria are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;- Light Transmission&lt;/li&gt;&lt;li&gt;- Response Time&lt;/li&gt;&lt;li&gt;- Touch Accuracy&lt;/li&gt;&lt;li&gt;- Environment Requirement&lt;/li&gt;&lt;li&gt;- Lifecycle&lt;/li&gt;&lt;li&gt;- Surface Hardness&lt;/li&gt;&lt;li&gt;- Resolution&lt;/li&gt;&lt;li&gt;- Input Mode (Bare or gloved finger, styles, pen)&lt;/li&gt;&lt;li&gt;- Display Size (Small, Middle or Large Screen)&lt;/li&gt;&lt;li&gt;- Multi-touch&lt;img align="right" height="235" width="435" border="10" alt="HTC touchFLO" src="http://dev.emcelettronica.com/files/u4169/touchFLO.jpg" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;Currently most of the portable devices are using resistive touch screen modules, because this technology has perfect balance between low cost and required performance. Both stylus and finger operation are supported. With the resistive touch screen, most of the technical innovations take place on the GUI system in the host. For example, HTC S1 released a new UI called touchFLO. This new technology works efficiently with single-touch screen. For example, the clockwise and counterclockwise finger event on specific screen area will zoom in/out this part of picture or web page. Sometimes it is more convenient because the user just need one hand to hold, and the thumb of same hand to operate. The iPhone requires both hands to operate on-the-go anyway. Yes, even the user can use two fingers of one hand to operate, but he/she should use the other hand to hold it, unless the device can be installed somewhere. Besides, HTC S1 supports handwriting and virtual keyboard, iPhone uses virtual keyboard. Typing European characters on the virtual keyboard might be a good idea, but not for Asian languages. Some other human machine interactivity research organizations also invented another new symbolic operation UI system with single-touch screen. For example, by handwriting an "h" to represent home page, the computer will show up the index for whole system. This method is deployed in an Automotive PC platform (VIA x86 design), it is very effective and attractive. The driver can handwrite on the screen while looking at the road without staring at the screen and touching some buttons. Therefore this UI improved the safety on the road.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;I still remember the replacement of B/W LCD on mobile phones. The color LCD is more expensive and wasting more power, the engineers are arguing about if the idea of using color LCD in mobile phone is stupid or not. The sales of mobile phones with B/W LCD is dropping so quickly, now over 90% mobile phones are equipped with color LCD, in bigger size and dual LCD configuration. This story tells us that consumer electronics' product design is marker driven, instead of technology driven. So my conclusion is, even if single-touch screen is fully capable of every operation with some advantages, the multi-touch screen is a major trend of new touch-screen devices, because the consumers love it. Let us check it out and find resources to implement it by ourselves.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;img align="left" height="223" width="270" border="5" alt="iPhone and Meizu " src="http://dev.emcelettronica.com/files/u4169/meizu_one.jpg" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;If anyone is just trying to clone Apple's design, he will be disappointed. The multi-touch is a system design, not just a small improvement on touch screen itself. Apple's initiative can not be cloned and it is protected by more than 200 patents. I found that Mezu was going to launch its Mini-One on CeBit 2008, but finally it was enforced to be close down on that exhibition because of another MP3 infringement issue. And the Mezu Mini-One does not support multi-touch as well. I am surprised that Apple didn't comment on the design issue for Meizu's MiniOne officially, even they seem like twins. (Please check left picture. ) Ironically Meizu issued a design patent in China. A clone design asks to be protected from being cloned again? I really hope they can use their resource on other proper projects.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Multitouch&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Traditional resistive and capacitive can only support one touch hot area, i.e. one time to track one touch event. If two fingers are put on touch screen or touch pad, the result returns to host is the position of the last touch or somewhere between these fingers. In order to setup multiple touch hot areas, the designer must upgrade all of the three parts of the touch screen sub-system. That means innovation should take place on panel input modules, panel controller (ASIC or MCU) and device drivers in host, of course the application running the host should support multi-touch as well. The capability of touch screen controller limits the tracking number of touch events. I am not so sure about the application software support. The application software should track multi-touch events by themselves in some operations, for example, multiple objects should be tracked individually in a multi-user game. In another case, if the multi-touch can be translated into high-level zoom command, or rotate command, the regular software should be able to support multi-touch operation already. In that case, the device driver should support multi-touch event and translate into high-level commands. It is up to system architect to design the whole software stack.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;IBM and Logitech have already issued some patents for multi-touch technology. Apple's iPhone is first consumer products deployed multi-touch. So far Apple has filed two patents for multi-touch, one is self-capacitance, and the other is mutual capacitance. These technologies have a new name as projection capacitive. The multi-touch has already deployed in iPhone, iPod, Mac Book Air. The implementation is described on some patent search sites (Please check reference). More competitors like LG, Samsung, and Microsoft are going to release new models and new operation systems with improved touch screen modules and drivers. Even MTK, a well-known supplier for OEM mobile phones, is going to improve their reference design of touch screen and try to mimic the operation of iPhone. Besides projection capacitive touch, there are resistive and surface capacitive implementation for multi-touch.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Input Modules&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/iphone-8.jpg" alt="Mutual Capacitive" border="10" hspace="20" vspace="5" width="300" height="416" align="left" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/iphone-9.jpg" alt="Self Capacitive" border="10" hspace="20" vspace="5" width="300" height="410" align="left" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;To allow people to operate with multiple fingers, the iPhone uses a new arrangement of existing technology. It includes a layer of capacitive material, just like many other touch screens. However, the iPhone's capacitors are arranged according to a coordinate system. The coordinate system does not require very high precision, because it is finger based operation. But I have not idea about the detail accuracy of it. Anyway its accuracy can not support handwriting. Its circuitry can sense changes at each point along the grid. In other words, every point on the grid generates its own signal when touched and relays that signal to the iPhone's processor. This allows it to determine the location and movement on the capacitive material. It won't work if you use styles or wear non-conductive gloves.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In mutual capacitance, the capacitive circuitry requires two distinct layers of material. One houses driving lines, which carry current and other houses sensing lines, which detect the current at nodes. Self capacitance uses one layer of individual electrodes connected with capacitance sensing circuitry. Both of these possible setups send touch data as electrical impulses.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;After all, Apple's projection capacitive touch screen works like a big grid of keyboards. Each key is driven by row and column pluses, and encoded with its location and address. That working method and programming skills are very common in microcontrollers. The improvement are materials, these keys are almost transparent (Apple calls them transparent electrodes) and on a single film (maybe ITO film or ITO glass) can be produced by advanced process. Because the surface could be glass, so you will find iPhone's glass is quite hard and anti-scratch. According to Unwired View, iPhone also use force-sensing mechanism to filter the touch events by accident.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img align="left" height="205" width="309" border="5" alt="AUO in cell multi-touch" src="http://dev.emcelettronica.com/files/u4169/auo-incell.jpg" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Actually Apple's iPhone only works dual touch event, it can support more events if Apple improves the capability of the controller, driver and application software.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;Because its nature similarity with LCD drivers, some LCD panel manufacturers are integrating these feature into LCD modules. AUO released in-cell multi-touch LCD modules (480*272) on Oct, 2007. More and more LCD with single-/multi-couth screen will be available. I personally think AUO’s approach maybe more competitive because of the overall BOM cost and performance. Neither AUO in-cell and Apple projection capacitive multi-touch screen have large size LCD deployment, because capacitive is very sensitive to EMC noise, while large size HDTV LCD itself is a big noise generator!&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Controllers&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Because capacitive touch screen is very sensitive with environment, even with the innovation on input module, multi-touch requires more improvement on controller to work properly. Maybe that is another reason why Apple keeps the method back cover on iPhone/iPod?&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/iphone-10.gif" alt="Touch screen pre-processing" border="10" hspace="10" vspace="10" width="400" height="330" align="left" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;According to report from howtostuffs.com, the iPhone's processor and software are central to correctly interpreting input from the touch-screen. There are many processors in iPhone, Infineon GSM processor, Samsung ARM11 as the application processor, and a dedicated screen controller BCM5974 from Broadcom. I can not find any information from Broadcom site, I guess it is a custom chip for Apple. So I checked other products, I guess this chip is a DAC as touch screen digitizer. If so, then the DAC is used to sample the grid instead of switching method. It also means ARM11 acts as the processing for multi-touch. The processor uses software to interpret raw data as commands and gestures.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Signals travel from the touch screen to the processor as electrical impulses.&lt;/li&gt;&lt;li&gt;The processor uses software to analyze the data and determine the features of each touch. This includes size, shape and location of the affected area on the screen. If necessary, the processor arranges touches with similar features into groups. If you move your finger, the processor calculates the difference between the starting point and ending point of your touch.&lt;/li&gt;&lt;li&gt;The processor uses its gesture-interpretation software to determine which gesture you made. It combines your physical movement with information about which application you were using and what the application was doing when you touched the screen.&lt;/li&gt;&lt;li&gt;The processor relays your instructions to the program in use. If necessary, it also sends commands to the iPhone's screen and other hardware. If the raw data doesn't match any applicable gestures or commands, the iPhone disregards it as an extraneous touch.&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/iphone-12_0.gif" alt="Touch position and gesture" border="10" hspace="10" vspace="10" width="300" height="450" align="left" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;There are some other suppliers for capacitive touch technology. The implementation of controller includes ASIC and MCU based. ASIC is very low cost for mass-production, while MCU has the advantage of custom design but its price is higher. The following vendors are delivering touch solutions for markets. Some of them have already supported multi-touch. More vendors are coming to develop new parts to support. Mentioned vendors have their own patents on touch technology.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Synaptics is a leading worldwide developer of custom-designed user interface solutions for mobile computing, communications and entertainment devices. Synaptics is focusing on touch pad solutions, and offer ASIC with I2C/SMBus.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Taiwan ELAN Microelectoncis Company (EMC) also a patent with trademark of eFinger. It claims that patent is competitive on touch screen application. But it requires registration on specification and has an open lawsuit with Synaptics.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Cypress offers CapSense in many applications. For example, the keypad part of V3/V8 from Motorola, LG chocolate mobile phones. Cypress CapSense is based upon its PSoC mixed signal array with embedded RISC M8 microcontroller. It is very easy to use. The new PSoC CapSense touch screen solution also offers designers the ability to implement multiple additional functions beyond touch screens. The same devices can implement capacitive buttons and sliders simultaneously, replacing their mechanical counterparts, as well as proximity sensing. Engineers can also take advantage of the PSoC mixed signal array to implement functions beyond CapSense. Such functions include, driving LEDs, backlight control, motor control, power management, I/O expansion, accelerometers and ambient light sensors. These functions, in conjunction with flexible communication (I2C and SPI), allow for unparalleled system integration. Cypress's CapSense touch screen solution is available using projected capacitance and surface capacitance sensing techniques.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Leadis is dedicated to creating compelling touch solutions focused on a strategy of Innovation and Integration. Leadis' line of PureTouch (TM) capacitive touch controller solutions will begin sampling in the first half of 2008.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;ATLab is a Korean company, co-operates with ST to offer touch screen touch ICs for capacitive technology.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Quantum Research Group, offers QProx(TM) touch control and sensor ICs. As same as Cypress, its solution offers more features for QSlide and QWheel. Atmel acquired Quantum already.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Thanks to Apple, more and more players are trying to compete on this market.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Other Suppliers&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;ST has two lines for touch pads, one is licensed from Quantum (MCU based), the other is licensed from ATLab (ASIC based). TI is trying to promote its MSP430 in this market. NXP also has its companion chip for PDA with touch screen DAC inside. Some other vendors such as Microchip and Maxim have similar product lines.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Driver and Application Software&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;I am not quite sure about how Apple implement these, I would rather to use software to refer to both driver and application software part. Apple also filed a complementary patent called "multi-finger gesture" for presentation of the finger movement. But that part requires more know-how on system software, I am not going to discuss here. Anyone who is interested in please visit some professional sites of MIT or NYU.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Latest Development for Alternative UI&lt;/strong&gt;&lt;/p&gt;&lt;div style="float: left; padding-right: 5px; "&gt;&lt;a href="http://www.microsoft.com/surface/" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://www.thumbalizr.com/api/?url=http://www.microsoft.com/surface/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Microsoft is developing surface computer, which can track up to 52 touches.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Besides multi-touch, some more topics regarding touch screen is rising on horizontal. They are photo sensor in pixel, polymer waveguide, distributed light, strain gauge, dual-force touch, laser-point activated touch and 3D touch.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;strong&gt;Patent Issues&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Most the multi-touch related patents are held in 3M, Nitto Denko, Oike-Kogyo, Dupont, Apple, IBM for materials and panels, but more Taiwanese, Korean industries are trying to file their own patents on the touch panels. As a system developer, we just make sure our products will not infringe these patents. It is tricky for those mobile phones manufacturers who are trying to clone Apple design on their own products.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8130526132411509400?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8130526132411509400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/touch-screen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8130526132411509400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8130526132411509400'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/touch-screen.html' title='Touch Screen'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-4691693813584453985</id><published>2010-05-19T04:12:00.001-07:00</published><updated>2010-05-19T04:12:26.330-07:00</updated><title type='text'>Memory Cache - Overview</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;Memory Cache - Overview&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;1.General Aspects&lt;/b&gt;&lt;br /&gt;The time access for cache is at least 10 times smaller than main memory. Because it has a very expensive technology, the size is limited. To achieve high performance the addresses need to be located most of the time in cache. The terminology used for cache efficiency is “Hit Rate” (Hit Rate - represents the rapport between the number of addresses accessed from cache and the total number of addresses accessed during that time). The antonym for “Hit Rate” is named “Miss Rate” which can be determined by &lt;b&gt;Miss Rate = 1 – Hit Rate&lt;/b&gt; formulas.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/data-transfer.jpg" alt="Data Transfer" height="137" width="597" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;Fig.1 Data Transfer&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/speed-access.jpg" alt="Speed Access" height="89" width="604" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;Fig.2 Speed Access&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;2. How to Evaluate the Cache Performance?&lt;/b&gt;&lt;br /&gt;Access -&gt; read/write operation&lt;br /&gt;Hit -&gt; data was found in Cache&lt;br /&gt;Miss -&gt; data wasn’t found in Cache; accessed from a slower memory&lt;br /&gt;Miss_rate = #misses / #accesses; Hit_rate = #hits / #accesses&lt;br /&gt;Example:&lt;br /&gt;Taccess(cache) = 1ns, Taccess(main memory)=10ns,&lt;br /&gt;Hit_Rate=90% (from 100 accesses, 90 will be from cache)&lt;br /&gt;Taccess (with cache) = 90*1 + 10*1 = 100ns&lt;br /&gt;Taccess(without cache) = 100*10 = 1000ns&lt;br /&gt;Speed up = 100/10 = 10&lt;br /&gt;Increase Hit Rate -&gt; Improve Cache Performance -&gt; Lower Power Consumption -&gt; Improve Speed Execution.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;3.Type of Cache Misses&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Compulsory miss&lt;/b&gt; – initially the cache memory is empty and the first access is always a miss. The program needs to run some cycles until the cache will be full and this type of misses will no more occur.&lt;br /&gt;&lt;b&gt;Conflict miss&lt;/b&gt; – this type appears only for direct-map caches and usually is because the same data is found in many places in cache.&lt;br /&gt;&lt;b&gt;Capacity miss&lt;/b&gt; – occurs because the cache is full and need to make room for current data by eliminating another data from cache; most cases an old data.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/cpu-die.jpg" alt="CPU DIE" height="258" width="256" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;Fig.3 CPU Die&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;4.Cache Architectures&lt;/b&gt;&lt;br /&gt;Cache granularity is given by “line” which has 4 parts:&lt;br /&gt;- &lt;b&gt;Valid Bit:&lt;/b&gt; is set to 1 when a valid data is stored in cache.&lt;br /&gt;- &lt;b&gt;Dirty Bit:&lt;/b&gt; is set to 1 when data is changed and is not updated to main memory in the same time.&lt;br /&gt;- &lt;b&gt;Tag:&lt;/b&gt; this field tells which address is in that line.&lt;br /&gt;- &lt;b&gt;Data:&lt;/b&gt; the data fetched from main memory.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/data-block.jpg" alt="Data Block" height="174" width="384" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;Fig.4 Data Block&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Direct Mapped&lt;/b&gt; – each block from main memory is mapped only to a unique cache block, no matter if that block is empty or not. This model of cache organization doesn’t require a replacement policy.&lt;br /&gt;&lt;b&gt;Fully Associative&lt;/b&gt; – each block from main memory can be mapped to any of cache blocks. If the cache is full then a replacement policy need to decide which data will be invalidated from cache for making room of this new data block.&lt;br /&gt;&lt;b&gt;Set Associative&lt;/b&gt; – the cache is split into many sets. The new data can be mapped only to the blocks of a certain set, determined by some bits from address field. In practice is used mostly because of a very efficient ratio between implementation and efficiency.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;5. Cache Management&lt;/b&gt;&lt;br /&gt;Cache Memory has a small size compared to main memory of any system. Knowing that the time access from cache is least 10 times smaller than external memory, fetching data from cache is a big advantage. The process of eliminating a data from cache for making room of a new one is called “Cache Replacement Algorithm”.&lt;br /&gt;Today there are a lot of these types of algorithms that are implemented in cache controller. Some of them are:&lt;br /&gt;- LRU (Least Recently Used) – Replace the data that has not been used for the longest time. LRU is implemented by a linked list.&lt;br /&gt;- LFU (Least Frequently Used) – Every line of cache has a counter which is incremented every time that data is accessed from cache.&lt;br /&gt;- FIFO (First In First Out) – It’s very simple to implement, but has a problem when physical memory is bigger (Belady’s Anomaly).&lt;br /&gt;- ARC (Adaptive Replacement Cache) – combine the LRU and LFU solutions and dynamically adjust between them.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;6.Cache Optimization&lt;/b&gt;&lt;br /&gt;Using the algorithm for cache management performances can be meaningfully increased by using the advantages of 2 more principles:&lt;br /&gt;a. Spatial Locality – The requested data from cache is located near the previous data used in physical memory.&lt;br /&gt;b. Temporal Locality – The requested data from cache was recently used or reused.&lt;br /&gt;Some solutions very often used for these 2 methods are prefetching, loop blocking and fusion, array padding and merging.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-4691693813584453985?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/4691693813584453985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/memory-cache-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4691693813584453985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4691693813584453985'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/memory-cache-overview.html' title='Memory Cache - Overview'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-1209409516117654390</id><published>2010-05-19T04:11:00.001-07:00</published><updated>2010-05-19T04:11:34.157-07:00</updated><title type='text'>What a Microcontroller Bootloader Is and How It Works?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;What a Microcontroller Bootloader Is and How It Works?&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Generally, when you want to program a microcontroller, you need a programmer for that particular microcontroller. Apart from being expensive, it might have other disadvantages, like long programming times or too many interconnections between the micro and the programmer itself; some programmers are not capable of programming in circuit. Sometimes the micro is not available while mounted in the end product, as it might be inside a metal or plastic housing, with only some standard communications interfaces being available on a connector.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Many of these problems are addressed by a bootloader. For a hobby, sometimes it seems quite expensive to spend tens of euros (and sometimes hundreds of euros) for such a device. In university laboratories, it might not be practical to get a programmer for each working bench, and the best solution is to provide the students with microcontroller samples which have already been programmed once and which have the Bootloader in the program memory. In the automotive industry, many Electronic Control Units are encapsulated in housings leaving very few pins accessible, but among these pins there generally is a CAN interface available, making CAN based Bootloaders very popular in this environment.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;So, the Bootloader has to be programmed in the program memory of the microcontroller just once, using a conventional programmer. After this, the microcontroller can be programmed without a programmer. Once in the microcontroller, the bootloader is such programmed that each time after reset it starts running like any conventional program. What it does however is different from a regular program. First of all, depending on what type of bootloader it is, it starts “listening” for incoming bytes via a specific interface. For instance, a UART bootloader will listen to the UART buffer of the micro, checking for incoming bytes. If the bytes start arriving, the bootloader will grab them and write them in the program memory in the sequence it receives them and at predefined locations. Once all bytes have been received, the bootloader executes a jump at the start of the memory zone it has received and then the “normal” program starts running.&lt;br /&gt;This is how a normal program would be programmed in the 8 Kbyte memory of a micro:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/8_Kbyte_memory_micro.png" alt="8 Kbyte memory of a micro" width="260" height="378" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;But in case you would want to use a bootloader, you would first need to program it instead of the regular program. So, as a first step, the bootloader gets programmed in the program memory. A good location for the bootloader is the end of the memory space, but a little part of it will always have to be at the first address location, as the bootloader will have to start running when the micro comes out of reset:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/micro_comes_out_reset.png" alt="micro comes out of reset" width="269" height="379" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Once the bootloader is in place, and the micro comes out of reset, the bootloader will start listening to one of the micro interfaces (like UART, SPI, I2C, CAN etc) for incoming bytes. Sometimes, “listening” might not be the proper way to describe this, as the bootloader might need to generate some clock pulses on the SPI clock line, or it would have to initiate the I2C protocol. If data does come through in the format expected by the bootloader, it starts writing the incoming bytes in the program memory. However, due to the fact that a few locations at the reset vector are occupied by the bootloader code itself, the data of the incoming program that would normally be written there will have to be relocated at a known address (EFFFh in the given example):&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/EFFFh.png" alt="EFFFh" width="269" height="379" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Once the whole incoming program has been written to the flash program memory, the bootloader will execute a jump at the known address of EFFFh, and the program that was sent to the micro will start running. In case no data will came through the intended interface, the bootloader will wait for a while, and then execute the jump to the known address anyway, based on the supposition that the user just wants to run a program that was already burned in the program memory at a previous stage.&lt;br /&gt;So the general steps in a working bootloader are:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/steps__working_bootloader_.png" alt="steps in a working bootloader " width="537" height="350" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Step 1 – right after reset, the bootloader takes over and executes a jump to the memory area where its own code exists. The code existing there starts to listen the chosen external interface for incoming data.&lt;/li&gt;&lt;li&gt;Step 2 – the incoming data is written in the program memory as it would be written by a programmer, except for the first few bytes, which would normally be burned at the reset vector.&lt;/li&gt;&lt;li&gt;Step 3 – once the entire incoming data has been written, the bootloader executes a jump at the first instructions of the regular program.&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The above example is only one of the ways in which a bootloader may function. There are also other dedicated ways, in which the micro, for instance, might have a dedicated area in the program memory for a bootloader. The PIC18F52 (&lt;a href="http://datasheet.emcelettronica.com/microchip/microchip-2" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;datasheet&lt;/a&gt;) is only such an example where a bootloader will be written at the beginning of the program memory:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/ootloader_written__beginning__program_memory.png" alt="bootloader will be written at the beginning of the program memory" width="185" height="322" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Of course, in such a case, not only the reset vector of the regular program will have to be mapped, but all the interrupt vectors. This is easily done on a micro which only has two interrupt vectors (one for high priority, another for low priority interrupts), but it might be not so handy on other micros, where the interrupt vectors for each interrupt source have different addresses (like on the good old 8051 architecture).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Now let’s say a word about the type of bootloaders.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The most common one used to be the UART bootloader. This meant that after each reset the micro would start to listen to the UART interface for the incoming data. They are still widely used today as it is a common interface for many microcontrollers. This type of bootloader basically removes the need for a programmer. You only need a PC software (cheap and easy to make/find) and a serial cable, provided the UART interface is used by the micro anyway. Gradually, after the appearance of USB interfaces on micros, the USB bootloader came into existence. It performs the same functions and is pretty handy to use.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Another more special type of bootloader is the SPI/I2C bootloader. Basically, the way it works is similar to any bootloader, but instead of listening to UART/USB it tries to read data from an attached EEPROM memory with an I2C or SPI interface. This bootloader is designed for allowing easy upgrade of software in the field. You could attach the SPI memory in a socket, and a firmware change might mean as little as changing an IC in a socket. Of course in order to do this, you need to have physical access to the EEPROM in question.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The CAN bootloader is extensively used in the automotive industry. Most of the devices to be found in a car have a CAN port nowadays, which is accessible at two pins on a connector. Due to this fact, bootloaders that work with the CAN interface of the micro have been developed, and therefore you may upgrade the firmware of such a device without even opening its housing or without even taking it out of the circuit, due to the networking prone nature of CAN. Thus, it allows in field upgrades of software for cars and even small corrections to cover bugs on the cars that have been sold like that. So next time you take your car to an “authorized” garage think twice about it when you see the technician plugging a “tester” into your car. He might actually be rewriting the software fixing bugs you never even knew existed…&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-1209409516117654390?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/1209409516117654390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/what-microcontroller-bootloader-is-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1209409516117654390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1209409516117654390'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/what-microcontroller-bootloader-is-and.html' title='What a Microcontroller Bootloader Is and How It Works?'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8817354257680614544</id><published>2010-05-19T04:10:00.001-07:00</published><updated>2010-05-19T04:10:56.085-07:00</updated><title type='text'>OLED TV – General Survey</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;OLED TV – General Survey&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;OLED TV (Organic Light-Emitting Diodes TV) a sci-fi gadget that becomes reality. A very large screen high-definition TV at less than 1/2 cm thickness? A TV monitor that can be rolled up and put into your bag after use? A display device weaved in the sleeves of your jacket? Sounds like sci-fi? Not anymore in a very near future.&lt;br /&gt;All of these can be possible with the development of a display technology called OLED (Organic Light-Emitting Diodes). Even today, this technology is actually being already used in a number of devices like mobile phones, PDAs, MP3 players, car radios digital cameras and just recently TV displays.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;History:&lt;/b&gt;&lt;br /&gt;Experiments on organic materials exhibiting electro-luminescence were conducted as early as the 1950s. Low conductivity of the materials used in these early works, however, produced limited light output preventing their commercial use. A major breakthrough was made in the 1980s by researchers at Eastman Kodak by using a diode device producing light emissions from organic materials sandwiched between anode and cathode layers. This was the first time the term “OLED” was used and this became the basis for succeeding research and development in organic-based display technology. In 1998, Kodak in collaboration with Sanyo showed the first colored OLED Display. The commercial deployment of this technology started in 2000 when LG Electronics developed organic displays for its mobile gadgets. This was followed by attempts to adopt the technology for HDTV displays. This culminated in the offering of the world's first OLED TV, the Sony XEL-1 (11-inch) on the market in November of 2007.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Technology explained:&lt;/b&gt;&lt;br /&gt;Organic Light Emitting Diode (OLED), also known as Light Emitting Polymer (LEP) or Organic Electro Luminescence (OEL), is a display technology based on organic compounds that emit light when a current passes through them. They therefore require no backlighting, unlike LCD, resulting to lesser power consumption and making it possible to build very thin OLED displays. The display is made up of 5 major parts:&lt;br /&gt;1. Substrate - the glass or screen that supports the OLED.&lt;br /&gt;2. Anode - removes electrons when a current flows through the device.&lt;br /&gt;3. Conducting layer - made of organic polymers that transport "holes" from the anode.&lt;br /&gt;4. Emissive layer - also made of organic polymers that transport electrons from the cathode.&lt;br /&gt;5. Cathode - injects electrons when a current flows through the device.&lt;br /&gt;When voltage is applied across the OLED, the anode becomes positive with respect to the cathode resulting to flow of electrons from cathode to anode. The cathode gives electrons to the emissive layer and the anode withdraws electrons from the conductive layer (or creates electron holes in the conductive layer). Then the holes jump to the emissive layer and recombine with the electrons. When an electron finds an electron hole, the electron fills the hole and gives up energy in the form of a photon.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u4/Organic_Light-Emitting_Diodes.jpg" alt="Organic Light-Emitting Diodes" height="300" width="285" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Types:&lt;/b&gt;&lt;br /&gt;1. Passive-matrix OLED (PMOLED) – consists of strips of cathode, organic layers and strips of anode. The anode strips are arranged perpendicular to the cathode strips and their intersections make up the light pixels where light is emitted. Common applications are for mobile phones, PDAs and MP3 players.&lt;br /&gt;2. Active-matrix OLED (AMOLED) – consists of full layers of cathode, organic molecules and anode (with thin film of TFT array). This type is typically used for computer monitors and flat-panel TV displays.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Other classifications:&lt;br /&gt;1. Transparent OLED - the substrate, cathode and anode materials are all transparent so this type is suited for heads-up displays.&lt;br /&gt;2. Top-emitting OLED - the substrate is either opaque or reflective so this is the best to make smart cards.&lt;br /&gt;3. Foldable OLED – the substrate is made of flexible metallic or plastic sheets. Foldable OLEDs are very lightweight and durable. Their potential use is for attachment to survival, military or space clothing with integrated computers or communication devices.&lt;br /&gt;4. White OLED – they emit very bright white and are energy efficient. They have the potential of replacing fluorescent lights used in homes and offices and they can help reduce energy costs for lighting.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Advantages:&lt;/b&gt;&lt;br /&gt;1. Do not require backlighting resulting to lower power consumption.&lt;br /&gt;2. Absence of backlight permits manufacturing of very thin displays.&lt;br /&gt;3. Can be printed to any suitable substrate so easier manufacturing process than LCD and plasma displays.&lt;br /&gt;4. Better color, black and brightness performance because light is produced directly from the OLED organic materials.&lt;br /&gt;5. Has faster response time than LCD so suited for fast moving videos.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Disadvantages:&lt;/b&gt;&lt;br /&gt;1. The the main disadvantage of OLED is the limited lifetime of the organic materials compared to other display technologies like LCD and plasma. This problem, however, is being addressed by the manufacturers with the development of techniques to more efficiently deliver light from the polymers to the screen.&lt;br /&gt;2. Water can easily damage OLED displays.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Applications:&lt;/b&gt;&lt;br /&gt;At present, OLED technology is commercially used in portable devices such as mobile phones, PDAs, MP3 players, car radios and digital cameras. The first popular application for TV display is the Sony XEL-1 (11 inch screen size/ 3mm thick) HDTV monitor. It became available in the Japan market in November, 2007. Sony and other manufacturers are promising larger screen sizes in the next few months or years to come. Perhaps the future killer app for OLED is flexible displays. Imagine a future where the newspaper and mobile TV are integrated into one device. The news on the device is continuously updated while you’re on the move and you get the added convenience of folding up the gadget and putting it in your bag after use.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8817354257680614544?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8817354257680614544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/oled-tv-general-survey.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8817354257680614544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8817354257680614544'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/oled-tv-general-survey.html' title='OLED TV – General Survey'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-5961343937516041943</id><published>2010-05-19T04:08:00.000-07:00</published><updated>2010-05-19T04:10:08.535-07:00</updated><title type='text'>GPS receiver design</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GNSS (Global Navigation Satellite System) is a common name for all of the satellite based positioning systems, which are GPS (Global Positioning System) from US, Galileo from EU, GLONASS from Russia, and CNSS (Compass Navigation Satellite System) from China. GPS is the first and most popular one among these systems.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In US, FCC ordered all the network operators to follow E911 act(Enhanced 911) to offer the physical address of calling party who is calling 911 emergency call. More and more cellular phones have armed with GPS feature. In the same time, the navigation devices are popular due to fast growing of private cars and mobile phones in the emerging countries. Thanks to Google, more and more consumers can easily connect their GPS devices to the Google web services for navigation, virtual sight viewing or satisfying their curiosity. All of these services are available free of charge.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Google's Inspiration&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/gmap.gif" alt="Google Map" align="left" border="5" height="284" hspace="10" vspace="10" width="400" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;Google is a great web innovator. Everybody knows about Google Map and Google Earth. And its competitors like Microsoft and Yahoo have to catch up. However Google is not the inventor of the web GIS. Actually web GIS has been available for a long time. Never the less, Google promotes the web GIS with its great influence in the Internet, and furthermore deliveries the free services in a quick and elegant way (AJAX). More and more companies and developers have identified the business opportunities by integrating the existing navigation technologies and web GIS. The new successful stories spread the world and gain the attentions of the venture capitals. As a result, the GPS ecosystem becomes highly competitive and exciting.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Competitive Market&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;A successful GPS application is made up of GPS terminals, map data services and service centers. That means the GPS applications are blending businesses involve Internet, mobile terminal, mobile network, automotives, and consumer electronics. More and more industries are looking for the new business opportunities in the navigation and location aware services via merging and acquisitions. It is a clear trend that the map data and services are the key factors of a business success. As usual, the silicon suppliers and device manufacturers have to fight for the market share and making devices cheaper. The startup companies must release products with unique features. Some suppliers offer dual mode or tri-mode satellite positioning chipsets for GPS, Galileo and CNSS. Some independent RFIC vendors team up with the software suppliers to promote the software GPS solutions in reduced BOM cost. Some other vendors are promoting the one chip RFIC for all RF features including Bluetooth, FM radio and GPS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;GPS Receiver Architecture&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GPS works by making one way range measurements from the receiver to the satellites. In order to arrive at a position fix we must know precisely where the satellites are and how far we are from them. These data are available to the receiver by reading the data message from each satellite which provides a precise description of the satellite orbit and timing information which is used to determine when the signal was transmitted by the satellite. Each satellite transmits on 2 frequencies in the L band (L1=1575.42 MHz and L2=1227.6 MHz). Each satellite transmits a unique CDMA (Code Division Multiple Access) code on these frequencies. On top of this the signal is modulated with a 50 Hz data message which provides precise timing information and orbital parameters. Since the receiver knows which sequence is assigned to each satellite it knows what satellite the data is coming from. The receiver creates a copy of the sequence and correlates or integrates the received signal multiplied by this copy over a period of time (in our case 1 ms). The particular sequence transmitted by each satellite has been chosen to reduce the chance that a receiver will track a satellite transmitting a different PRN sequence. For more detail on correlators see the Zarlink chipset documentation or some of the other references.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/GPSBlock.jpg" alt="GPS functional block" align="left" border="4" height="190" hspace="10" vspace="10" width="445" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;The attached figure is a traditional GPS receiver architect (from Zarlink). It is made up of antenna, RF/IF section and a base band processing unit, which usually has correlators and an embedded processor. The host processor talks to the embedded processor in an industrial standard protocol called NMEA (National Marine Electronics Association) or optional proprietary protocols. The physical links between the processors might be a standard UART, USB or Bluetooth. The communication over USB and Bluetooth has to simulate a virtual serial port to talk with high level application software. The default baud rate of NMEA is 4800bps, the higher rate doesn't make sense.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Antenna&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/sarantel_small.jpg" alt="Sarantel GPS Helix Antenna" align="right" border="0" height="145" hspace="10" vspace="10" width="268" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;Because of miniaturization and multi-functional requirements, the designer faces to more and more challenges in antenna design. These factors include human interference, noises from embedded processors and external interferences. It is better to copy the reference design from the application notes for an inexperienced engineer. Never the less, GPS antenna design is still easier than the mobile phone antenna design. We know, the latest mobile phone has to work on 800MHz, 900MHz and 1800MHz with PA and faces to the big noises inside.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The most commonly used antennas in GPS are the Helix and the patch antenna. Patch antenna has strong direction selectivity, which is used in most of the external GPS mice. The Helix antenna is much suitable for handheld GPS, which offers broader antenna angle, and it works better than patch antenna when it is close to human.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There are some off-the-shelf antennas available in the market. Most of them are external antennas, which offer better performance.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Sarantel offers GPS antenna in full Balun design, which offers 360 degree antenna reception and highly frequency selectivity, and most of the noises can be eliminated. This company also offers the bulk ceramic antenna as the smallest antenna in the world.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Mr. Mark Kesauer offers an inexpensive external GPS antenna design on Circuit Cellar. The PDF document is available on &lt;a href="http://www.arrl.org/tis/info/pdf/0210036.pdf" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;here&lt;/a&gt;. This design uses commonly available components and materials.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;RFIC&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The RF parts of a GPS from different suppliers are slightly different but most of these ICs are sharing same concept. The RF section includes LNA, filter, PLL and BPSK demodulator. Maxim’s MAX2769 demonstrates the general RF IC for GPS receiver.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The RF front-end of a GPS receiver first amplifies the weak incoming signal with a low-noise amplifier (LNA), and then downconverts the signal to a low intermediate frequency (IF) of approximately 4MHz. This downconversion is accomplished by mixing the input RF signal with the local oscillator signal using one or two mixers. The resulting analog IF signal is converted to a digital IF signal by the analog-to-digital converter (ADC).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The MAX2769 integrates all these functions (LNA, mixer, and ADC), thus significantly reducing the development time for applications. The device offers a choice of two LNAs: one LNA features a very-low, 0.9dB noise figure, 19dB of gain, and -1dBm IP3, for use with passive antennas; the other LNA has a 1.5dB noise figure with slightly lower gain and power consumption, and a slightly higher IP3, for use with an active antenna.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There is a provision for external filtering at RF after the amplifier. The signal is then downconverted directly using the integrated 20-bit, sigma-delta, fractional-N frequency synthesizer together with a 15-bit integer divider to achieve virtually any desired IF between zero and 12MHz. A wide selection of possible IF filtering choices accommodates different schemes, such as those of Galileo.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The overall gain from RF input to IF output can be tuned or automatically controlled over a 60dB to 115dB range. The output can be chosen as analog, CMOS, or limited differential. The internal ADC has a selectable output of one to three bits. The integrated reference oscillator enables operation with either a crystal or a temperature-compensated crystal oscillator (TCXO), and any input reference frequency from 8MHz to 44MHz can be used.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Correlators&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The correlators of GPS are the essential parts of the whole system of bit synchronization and decoding. The correlators will feed the raw digit output to the embedded processor to acquire, confirm, pull-in, track the satellites, and translate into NMEA protocol, which the host controller can understand.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The correlators can be implemented in hardware and software. Recently, the number of correlators increases dramatically. The early product from Zarlink has 12 channel correlators. The newer SiRF-II has 1920 correlators inside, and the latest SiRF-III has over equivalent 200K correlators to reduce the TTFF. MediaTek (MTK) Taiwan also released a low cost GPS chip, which has 32 channel correlators inside. I use a MTK based GPS for my own testing purpose. It works fine, although I still expect more accuracy from the device. However, its performance is good enough as a consumer class GPS receiver.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Some open source projects released the FPGA based correlators. On the other hand, the correlators can be implemented in a FFT based software algorithm, which is referred as software GPS and cited in an application note from Maxim.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Embedded Processor&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The silicon suppliers are trying to promote their own platforms in GPS. The task for the embedded processor is calculation and tracking the different satellites and interfacing with host processor in NMEA. If you check the attached NMEA document, you will realize that the embedded processor has to deal with so many parameters in detail. The requirements for the embedded processors are big enough memory address space and sufficient processing power for intensive calculation. The ARM7TDMI is a 32bit core, which offers sufficient memory space and processing power. The peripherals included UART, USB and Bluetooth have been available for ARM for a long time. As a result, the latest GPS chips from different suppliers have the identical trend to select ARM7TDMI as the embedded processor.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There are some key KPIs for the GPS, which might be related to the correlators and software in the embedded processor.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Cold Start: A cold start results when there is no valid Almanac or Ephemeris information available for the satellite constellation in SRAM, or when the time and/or position information is NOT known (i.e. starts at 0 in both cases). Also a cold start will be initiated if an Almanac is valid, but a fix cannot be achieved within 10 minutes of power-up. This could occur if the receiver position has moved significantly since it was last powered-up, but the position change and time are NOT initialized by the user&lt;/li&gt;&lt;li&gt;Warm Start: A warm start results when there is a valid Almanac, and the initial time and position are known in SRAM, but the ephemeris is NOT valid (i.e. more than 4 - 6 hours old).&lt;/li&gt;&lt;li&gt;Hot Start: A hot start results when there is a valid Almanac, valid ephemeris (i.e. less than 4 - 6 hours old), and when accurate time and position information are also known in SRAM (position error less than 100km, time error less than 5 minutes).&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;Software GPS&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;If the hardware can be implemented in software, the total cost of a GPS can be reduced. Different suppliers have different approaches. One solution is merging the embedded processor to the host processor, so the job is done in the host. In this solution, the basic hardware blocks such as correlators are still kept. Some companies call this approach as accelerated software GPS. The other solution is taking the digitalized signal from IF, and implements the correlators and decoders in software. We can call it as full software GPS. The software GPS is only available in commercial licenses on specific chip in linkable library. Sometime the software GPS license might be more expensive than a low cost IC.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;SiRF has acquired the Centrality Atlas, who offers SoC for GPS. Its Atlas is a software GPS product, running on a 300MHz ARM microprocessor and 200MHz DSP. This chip is the best seller in automotive navigator. It offers the comparable performance with SiRF-III, with lower price and media player features.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;NXP software also offers Spot GPS software for the host application processors. The Spot GPS Software is a commercial software package in the form of ANSI C. It is easy to be deployed since most of the latest smart phones have a 200MHz, even 500MHz processor inside.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There is also an open source GPS project called GPS world, which uses ATMEGA32 for back-end processing. But this project is not a complete software GPS solution, because it was built upon a hardware correlators IC from Zarlink. However if you are developing the firmware of a GPS receiver, it could be the base for your development. In the reference of open source projects, you can find other software GPS designs.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Modules or DIY&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/200783017285747.jpg" alt="GPS module" align="right" border="0" height="200" hspace="10" vspace="10" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;Because GPS is quite sensitive to the environment, inexperienced designs will ruin the whole project. According to the field report, the GPS module has quite high failure rate in production site. Some mobile phone manufacturers tried to design the GPS by themselves, finally they found their GPS phone design is totally a fiasco.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The module includes everything and assembly in a can module. The size is as small as a coin. There are many professional GPS module suppliers. LeadTek, Holux and other suppliers are offering SiRF and MTK based solution worldwide.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Application Software&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;From the point of system software development, the software engineer can consider GPS unit as a standard serial port. No matter which OS is selected, the serial port is always available, either in a real RS232 or simulated serial port on USB and Bluetooth. Any person who has experience of developing UART can develop the GPS application software in NMEA protocol as well.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Finally, the high level application software will combine the map data and coordinates from GPS and present to the users.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u4169/Gta02a5_pcba_cs1.png" alt="Openmoko" align="left" border="0" height="277" hspace="10" vspace="10" width="425" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;There is an open source project called Openmoko, which is sponsored by FIC Taiwan. This project is basically an ARM920T (S3C2440) microprocessor based mobile phone. The GSM/GPRS module and GPS module are connected to the serial ports for ARM920. The phone is working like a desktop PC with GPRS modem and GPS receiver. Anyway, it is a good project which you can start up your own GPS terminals.&lt;br /&gt;The connected GPS project Dash Express is a derivated project from Openmoko.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There are also many open source projects available. You always can find the projects in your favorite languages, Java, Python, C++, .NET and even in web programming languages&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-5961343937516041943?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/5961343937516041943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gps-receiver-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5961343937516041943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5961343937516041943'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gps-receiver-design.html' title='GPS receiver design'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-4032330053358963267</id><published>2010-05-19T04:07:00.001-07:00</published><updated>2010-05-19T04:07:35.981-07:00</updated><title type='text'>Portable Ubuntu for Windows</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;What &lt;strong&gt;Portable Ubuntu for Windows&lt;/strong&gt; does mean? Portable Ubuntu for Windows is a compact yet complete Ubuntu system that can be executed directly in Windows as if it were a regular software application designed for that operating system. &lt;strong&gt;Ubuntu&lt;/strong&gt; is today one of the most popular Linux distributions: it is immediate, easy to use, has a cute aspect and is widely used all over the world.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The term portable has recently increased its popularity due to the fact that today hundred-megabyte applications can be easily ported and maintained on low-cost high capacity USB mass storage (typically pendrive or thumb drive).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Portable applications are useful since they allow us to use our favorite Linux tools and programs also when moving on machines that have Windows as operating system. Portable Ubuntu for Windows is based on a previous project called andLinux, and the system is built with the Colinux Kernel, Xming X server and Pulse Audio server for Windows; it has the popular orange-colored look with the GNOME-based desktop environment exactly as the original Linux distribution. Xming is a X server version specifically targeted for Windows. Pulse Audio is an audio server for Win32 and Posix systems which acts as an interface between the application and the native Windows audio system. Colinux Kernel is one of the several Linux kernel portings under Windows; it allows to execute the Linux kernel as a stand-alone process with a separate address space, and cooperating with the Windows operating system when all the low-level operations have to be executed.&lt;br /&gt;The following picture gives you an idea of how Portable Ubuntu looks like when is run on a Windows machine.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u9973/portub_01.jpg" height="369" width="492" alt="Portable Ubuntu for Windows" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Let’s now go through the step-by-step procedure that let you prepare and install on a thumb drive, pendrive, or just in a directory of your hard disk the Portable Ubuntu. Be aware that the current version of Portable Ubuntu requires about 1.85 Gb of free space: I used a 2 Gb USB pendrive and it works fine.&lt;/p&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;How to set-up Portable Ubuntu for Windows&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The first operation to be performed is to download from this &lt;a href="http://downloads.sourceforge.net/portableubuntu/Portable_Ubuntu.exe?modtime=1221687705&amp;amp;big_mirror=0" target="_&amp;quot;blank&amp;quot;" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;site&lt;/a&gt; the already available and eventually upgraded version of Portable Ubuntu. The file shall have this name: Portable_Ubuntu.exe, and its size is approximately 450 Kb.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Once you have downloaded the file, execute it (it is a self-extracting application). You will be asked only where to copy the Portable Ubuntu files (choose among local hard disk or removable mass storage units). If you plan to install it on a USB pendrive, maybe it could be better to perform the extraction on the hard disk and then copy the entire directory tree (named Portable_Ubuntu) on the removable device: that will allow to save some time.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;After that, just run the batch file run_portable_ubuntu.bat in the Portable_Ubuntu directory: that’s it!&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Ubuntu will be started and the typical menu bar will appear on the top side of your screen, as visible in the next pictures.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u9973/portub_02.jpg" height="259" width="303" alt="Portable Ubuntu for Windows" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u9973/portup_03.jpg" height="300" width="400" alt="Portable Ubuntu for Windows" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;Portable Ubuntu for Windows - Characteristics&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Portable Ubuntu for Windows presents these remarkable characteristics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It actually works, at least in most cases and on most PCs. I have tried it on my laptop (Intel dual core with 2 Gb of RAM) and it is really impressive&lt;/li&gt;&lt;li&gt;It is portable and can be copied to a pendrive with at least 2 Gb of free space&lt;/li&gt;&lt;li&gt;It has full access to Windows file system, and can read and/or write Windows files (just point to the /mnt/C folder to see the Windows file system)&lt;/li&gt;&lt;li&gt;It is executed by Windows as a stand-alone application and works also with dual-monitor systems&lt;/li&gt;&lt;li&gt;It is possible to upgrade the application by installing new packages through the Synaptic tool. If you plan to do that, consider that the default user created in Portable Ubuntu is pubuntu, and the password is 123456&lt;/li&gt;&lt;li&gt;It helps people with little or no experience with Linux installation to have a working and ready-to-use Linux environment, getting them closer to the fascinating and ever full of new ideas and creativity world of open-source software. By the way, Ubuntu has always been popular right because it is easy to install and to maintain, at least compared to other Linux distros, and it was pretty soon available with a DVD bootable version that did not require any installation at all&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;Conclusions&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Portable Ubuntu for Windows is a nice tool because it allows to use a Linux distribution on several machines just moving a small, light, and portable USB mass storage device. Moreover, it can be kept updated without affecting the system on which it is executed. Some “pure” Linux users, however, storch their noses when talking about this or similar projects: they say that a portable Linux distro hosted on a Windows-based machine is not comparable to a real native Linux distribution. Well, probably they are right, but this project will surely bring new users to get closer to Linux and to the open-source world.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-4032330053358963267?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/4032330053358963267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/portable-ubuntu-for-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4032330053358963267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4032330053358963267'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/portable-ubuntu-for-windows.html' title='Portable Ubuntu for Windows'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-1074207628433473324</id><published>2010-05-19T04:06:00.001-07:00</published><updated>2010-05-19T04:06:59.225-07:00</updated><title type='text'>Serial Port Communication in Excel (VBA)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;Introduction to Serial Port Communication in VBA&lt;/h2&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The purpose of this article is to demonstrate how you can perform serial port communication in the VBA (Visual Basic Applications - script editor included in any typical Microsoft Excel distribution) but without using the MSComm control or any other third party add-on or ActiveX. The great advantage of this method, which uses API functions to call the serial port directly, is that you do not really need to install anything on your PC, apart from the Excel itself (which, let’s admit it, already exists on most PCs). Other methods always require the installation of an ActiveX, or at least the registration of an “.ocx” file, like for instance the MSComm control. Even the method of programming in C#, which I have suggested in a different article (&lt;a href="http://dev.emcelettronica.com/serial-port-communication-c" title="Serial Port Communication in C#" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Serial Port Communication in C#&lt;/a&gt;) needs the installation of the .NET Framework and of the C# compiler itself. It is assumed that the reader would have some basic knowledge of programming (but really basic, not even intermediate)&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In order to get access to the VBA script editor, you first need to make the corresponding buttons available on the Excel toolbars (they are not there by default). Once you have started your Excel, choose from the top menu: View -&gt; Toolbars -&gt; Visual Basic. This will make visible another small toolbar, with the following buttons:&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0075.png" width="286" height="176" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;These buttons will enable you to launch the editor in which you will be able to write the Visual Basic Code and will also allow you to directly create windows-style controls like textboxes, push buttons, labels, radio buttons, checkboxes etc. In order to make these&lt;br /&gt;available on the main toolbar, you need to activate the &lt;i&gt;Control Toolbox &lt;/i&gt;button, from the small toolbar activated at the previous step. This will, in turn, make available a number of new other buttons that will allow you to build the mentioned controls:&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0076.png" width="499" height="160" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;As a goal for this article, I would intend to demonstrate how you open the serial port, how you write a few bytes, how you read some bytes, and then how you close the serial port. In order to do all these, you will need to create four windows-style buttons, each of them performing one of the tasks that I have enumerated before.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Click on the &lt;i&gt;Command Button&lt;/i&gt; control from the recently activated toolbar, and then draw 4 similar buttons anywhere on the surface of your excel worksheet (it will be a challenge to draw them all of the same size!):&lt;/p&gt;&lt;div align="center"&gt;&lt;img alt="excel" src="http://dev.emcelettronica.com/files/u7555/Fig0077.png" width="379" height="232" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Once you did that, click on the &lt;i&gt;Visual Basic Editor &lt;/i&gt;button from the toolbar that you activated in the very first place.&lt;/p&gt;&lt;div align="center"&gt;&lt;img alt="vba" src="http://dev.emcelettronica.com/files/u7555/Fig0078.png" width="315" height="217" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;This will open the environment in which you can write the code for the Visual Basic scripts that will perform the operations you wanted. Once there, make sure that you double click on the &lt;i&gt;Sheet1(Sheet1)&lt;/i&gt; entry in the top left project tree window:&lt;/p&gt;&lt;div align="center"&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0079.png" width="262" height="318" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The effect of this action will be the opening in the main window of this environment of the actual sheet in which you will write the VB code. Once you reached this stage, copy paste the code below in there. This Visual Basic Code “defines” the constants, structures and&lt;br /&gt;API functions that you will use later to perform the intended operations. The comments in the code are self explanatory.The article continues after the end of this code, please scroll all the way down.&lt;/p&gt;&lt;h2 style="margin-bottom: 0.5em; line-height: 21px; font-size: 1.2em; "&gt;Serial Port Communication Script&lt;/h2&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;Option Explicit  '-------------------------------------------------------------------------------  ' ' This VB module is a collection of routines to perform serial port I/O without ' using the Microsoft Comm Control component.  This module uses the Windows API ' to perform the overlapped I/O operations necessary for serial communications. ' ' The routine can handle up to 4 serial ports which are identified with a ' Port ID. ' ' All routines (with the exception of CommRead and CommWrite) return an error ' code or 0 if no error occurs.  The routine CommGetError can be used to get ' the complete error message. '-------------------------------------------------------------------------------  '------------------------------------------------------------------------------- ' Public Constants '-------------------------------------------------------------------------------  ' Output Control Lines (CommSetLine) Const LINE_BREAK = 1 Const LINE_DTR = 2 Const LINE_RTS = 3  ' Input Control Lines  (CommGetLine) Const LINE_CTS = &amp;amp;H10&amp;amp; Const LINE_DSR = &amp;amp;H20&amp;amp; Const LINE_RING = &amp;amp;H40&amp;amp; Const LINE_RLSD = &amp;amp;H80&amp;amp; Const LINE_CD = &amp;amp;H80&amp;amp;  '------------------------------------------------------------------------------- ' System Constants '------------------------------------------------------------------------------- Private Const ERROR_IO_INCOMPLETE = 996&amp;amp; Private Const ERROR_IO_PENDING = 997 Private Const GENERIC_READ = &amp;amp;H80000000 Private Const GENERIC_WRITE = &amp;amp;H40000000 Private Const FILE_ATTRIBUTE_NORMAL = &amp;amp;H80 Private Const FILE_FLAG_OVERLAPPED = &amp;amp;H40000000 Private Const FORMAT_MESSAGE_FROM_SYSTEM = &amp;amp;H1000 Private Const OPEN_EXISTING = 3  ' COMM Functions Private Const MS_CTS_ON = &amp;amp;H10&amp;amp; Private Const MS_DSR_ON = &amp;amp;H20&amp;amp; Private Const MS_RING_ON = &amp;amp;H40&amp;amp; Private Const MS_RLSD_ON = &amp;amp;H80&amp;amp; Private Const PURGE_RXABORT = &amp;amp;H2 Private Const PURGE_RXCLEAR = &amp;amp;H8 Private Const PURGE_TXABORT = &amp;amp;H1 Private Const PURGE_TXCLEAR = &amp;amp;H4  ' COMM Escape Functions Private Const CLRBREAK = 9 Private Const CLRDTR = 6 Private Const CLRRTS = 4 Private Const SETBREAK = 8 Private Const SETDTR = 5 Private Const SETRTS = 3  '------------------------------------------------------------------------------- ' System Structures '------------------------------------------------------------------------------- Private Type COMSTAT         fBitFields As Long ' See Comment in Win32API.Txt         cbInQue As Long         cbOutQue As Long End Type  Private Type COMMTIMEOUTS         ReadIntervalTimeout As Long         ReadTotalTimeoutMultiplier As Long         ReadTotalTimeoutConstant As Long         WriteTotalTimeoutMultiplier As Long         WriteTotalTimeoutConstant As Long End Type  ' ' The DCB structure defines the control setting for a serial ' communications device. ' Private Type DCB         DCBlength As Long         BaudRate As Long         fBitFields As Long ' See Comments in Win32API.Txt         wReserved As Integer         XonLim As Integer         XoffLim As Integer         ByteSize As Byte         Parity As Byte         StopBits As Byte         XonChar As Byte         XoffChar As Byte         ErrorChar As Byte         EofChar As Byte         EvtChar As Byte         wReserved1 As Integer 'Reserved; Do Not Use End Type  Private Type OVERLAPPED         Internal As Long         InternalHigh As Long         offset As Long         OffsetHigh As Long         hEvent As Long End Type  Private Type SECURITY_ATTRIBUTES         nLength As Long         lpSecurityDescriptor As Long         bInheritHandle As Long End Type  '------------------------------------------------------------------------------- ' System Functions '------------------------------------------------------------------------------- ' ' Fills a specified DCB structure with values specified in ' a device-control string. ' Private Declare Function BuildCommDCB Lib "kernel32" Alias "BuildCommDCBA" _     (ByVal lpDef As String, lpDCB As DCB) As Long ' ' Retrieves information about a communications error and reports ' the current status of a communications device. The function is ' called when a communications error occurs, and it clears the ' device's error flag to enable additional input and output ' (I/O) operations. ' Private Declare Function ClearCommError Lib "kernel32" _     (ByVal hFile As Long, lpErrors As Long, lpStat As COMSTAT) As Long ' ' Closes an open communications device or file handle. ' Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long ' ' Creates or opens a communications resource and returns a handle ' that can be used to access the resource. ' Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _     (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _     ByVal dwShareMode As Long, lpSecurityAttributes As Any, _     ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _     ByVal hTemplateFile As Long) As Long ' ' Directs a specified communications device to perform a function. ' Private Declare Function EscapeCommFunction Lib "kernel32" _     (ByVal nCid As Long, ByVal nFunc As Long) As Long ' ' Formats a message string such as an error string returned ' by anoher function. ' Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" _     (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, _     ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, _     Arguments As Long) As Long ' ' Retrieves modem control-register values. ' Private Declare Function GetCommModemStatus Lib "kernel32" _     (ByVal hFile As Long, lpModemStat As Long) As Long ' ' Retrieves the current control settings for a specified ' communications device. ' Private Declare Function GetCommState Lib "kernel32" _     (ByVal nCid As Long, lpDCB As DCB) As Long ' ' Retrieves the calling thread's last-error code value. ' Private Declare Function GetLastError Lib "kernel32" () As Long ' ' Retrieves the results of an overlapped operation on the ' specified file, named pipe, or communications device. ' Private Declare Function GetOverlappedResult Lib "kernel32" _     (ByVal hFile As Long, lpOverlapped As OVERLAPPED, _     lpNumberOfBytesTransferred As Long, ByVal bWait As Long) As Long ' ' Discards all characters from the output or input buffer of a ' specified communications resource. It can also terminate ' pending read or write operations on the resource. ' Private Declare Function PurgeComm Lib "kernel32" _     (ByVal hFile As Long, ByVal dwFlags As Long) As Long ' ' Reads data from a file, starting at the position indicated by the ' file pointer. After the read operation has been completed, the ' file pointer is adjusted by the number of bytes actually read, ' unless the file handle is created with the overlapped attribute. ' If the file handle is created for overlapped input and output ' (I/O), the application must adjust the position of the file pointer ' after the read operation. ' Private Declare Function ReadFile Lib "kernel32" _     (ByVal hFile As Long, ByVal lpBuffer As String, _     ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, _     lpOverlapped As OVERLAPPED) As Long ' ' Configures a communications device according to the specifications ' in a device-control block (a DCB structure). The function ' reinitializes all hardware and control settings, but it does not ' empty output or input queues. ' Private Declare Function SetCommState Lib "kernel32" _     (ByVal hCommDev As Long, lpDCB As DCB) As Long ' ' Sets the time-out parameters for all read and write operations on a ' specified communications device. ' Private Declare Function SetCommTimeouts Lib "kernel32" _     (ByVal hFile As Long, lpCommTimeouts As COMMTIMEOUTS) As Long ' ' Initializes the communications parameters for a specified ' communications device. ' Private Declare Function SetupComm Lib "kernel32" _     (ByVal hFile As Long, ByVal dwInQueue As Long, ByVal dwOutQueue As Long) As Long ' ' Writes data to a file and is designed for both synchronous and a ' synchronous operation. The function starts writing data to the file ' at the position indicated by the file pointer. After the write ' operation has been completed, the file pointer is adjusted by the ' number of bytes actually written, except when the file is opened with ' FILE_FLAG_OVERLAPPED. If the file handle was created for overlapped ' input and output (I/O), the application must adjust the position of ' the file pointer after the write operation is finished. ' Private Declare Function WriteFile Lib "kernel32" _     (ByVal hFile As Long, ByVal lpBuffer As String, _     ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, _     lpOverlapped As OVERLAPPED) As Long   Private Declare Sub AppSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) '------------------------------------------------------------------------------- ' Program Constants '-------------------------------------------------------------------------------  Private Const MAX_PORTS = 4  '------------------------------------------------------------------------------- ' Program Structures '-------------------------------------------------------------------------------  Private Type COMM_ERROR     lngErrorCode As Long     strFunction As String     strErrorMessage As String End Type  Private Type COMM_PORT     lngHandle As Long     blnPortOpen As Boolean     udtDCB As DCB End Type     '------------------------------------------------------------------------------- ' Program Storage '-------------------------------------------------------------------------------  Private udtCommOverlap As OVERLAPPED Private udtCommError As COMM_ERROR Private udtPorts(1 To MAX_PORTS) As COMM_PORT '------------------------------------------------------------------------------- ' GetSystemMessage - Gets system error text for the specified error code. '------------------------------------------------------------------------------- Public Function GetSystemMessage(lngErrorCode As Long) As String Dim intPos As Integer Dim strMessage As String, strMsgBuff As String * 256      Call FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, lngErrorCode, 0, strMsgBuff, 255, 0)      intPos = InStr(1, strMsgBuff, vbNullChar)     If intPos &gt; 0 Then         strMessage = Trim$(Left$(strMsgBuff, intPos - 1))     Else         strMessage = Trim$(strMsgBuff)     End If          GetSystemMessage = strMessage      End Function Public Function PauseApp(PauseInSeconds As Long)          Call AppSleep(PauseInSeconds * 1000)      End Function  '------------------------------------------------------------------------------- ' CommOpen - Opens/Initializes serial port. ' ' ' Parameters: '   intPortID   - Port ID used when port was opened. '   strPort     - COM port name. (COM1, COM2, COM3, COM4) '   strSettings - Communication settings. '                 Example: "baud=9600 parity=N data=8 stop=1" ' ' Returns: '   Error Code  - 0 = No Error. ' '------------------------------------------------------------------------------- Public Function CommOpen(intPortID As Integer, strPort As String, _     strSettings As String) As Long      Dim lngStatus       As Long Dim udtCommTimeOuts As COMMTIMEOUTS      On Error GoTo Routine_Error          ' See if port already in use.     If udtPorts(intPortID).blnPortOpen Then         lngStatus = -1         With udtCommError             .lngErrorCode = lngStatus             .strFunction = "CommOpen"             .strErrorMessage = "Port in use."         End With                  GoTo Routine_Exit     End If      ' Open serial port.     udtPorts(intPortID).lngHandle = CreateFile(strPort, GENERIC_READ Or _         GENERIC_WRITE, 0, ByVal 0&amp;amp;, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)      If udtPorts(intPortID).lngHandle = -1 Then         lngStatus = SetCommError("CommOpen (CreateFile)")         GoTo Routine_Exit     End If      udtPorts(intPortID).blnPortOpen = True      ' Setup device buffers (1K each).     lngStatus = SetupComm(udtPorts(intPortID).lngHandle, 1024, 1024)          If lngStatus = 0 Then         lngStatus = SetCommError("CommOpen (SetupComm)")         GoTo Routine_Exit     End If      ' Purge buffers.     lngStatus = PurgeComm(udtPorts(intPortID).lngHandle, PURGE_TXABORT Or _         PURGE_RXABORT Or PURGE_TXCLEAR Or PURGE_RXCLEAR)      If lngStatus = 0 Then         lngStatus = SetCommError("CommOpen (PurgeComm)")         GoTo Routine_Exit     End If      ' Set serial port timeouts.     With udtCommTimeOuts         .ReadIntervalTimeout = -1         .ReadTotalTimeoutMultiplier = 0         .ReadTotalTimeoutConstant = 1000         .WriteTotalTimeoutMultiplier = 0         .WriteTotalTimeoutMultiplier = 1000     End With      lngStatus = SetCommTimeouts(udtPorts(intPortID).lngHandle, udtCommTimeOuts)      If lngStatus = 0 Then         lngStatus = SetCommError("CommOpen (SetCommTimeouts)")         GoTo Routine_Exit     End If      ' Get the current state (DCB).     lngStatus = GetCommState(udtPorts(intPortID).lngHandle, _         udtPorts(intPortID).udtDCB)      If lngStatus = 0 Then         lngStatus = SetCommError("CommOpen (GetCommState)")         GoTo Routine_Exit     End If      ' Modify the DCB to reflect the desired settings.     lngStatus = BuildCommDCB(strSettings, udtPorts(intPortID).udtDCB)      If lngStatus = 0 Then         lngStatus = SetCommError("CommOpen (BuildCommDCB)")         GoTo Routine_Exit     End If      ' Set the new state.     lngStatus = SetCommState(udtPorts(intPortID).lngHandle, _         udtPorts(intPortID).udtDCB)      If lngStatus = 0 Then         lngStatus = SetCommError("CommOpen (SetCommState)")         GoTo Routine_Exit     End If      lngStatus = 0  Routine_Exit:     CommOpen = lngStatus     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommOpen"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function   Private Function SetCommError(strFunction As String) As Long          With udtCommError         .lngErrorCode = Err.LastDllError         .strFunction = strFunction         .strErrorMessage = GetSystemMessage(.lngErrorCode)         SetCommError = .lngErrorCode     End With      End Function  Private Function SetCommErrorEx(strFunction As String, lngHnd As Long) As Long Dim lngErrorFlags As Long Dim udtCommStat As COMSTAT          With udtCommError         .lngErrorCode = GetLastError         .strFunction = strFunction         .strErrorMessage = GetSystemMessage(.lngErrorCode)              Call ClearCommError(lngHnd, lngErrorFlags, udtCommStat)              .strErrorMessage = .strErrorMessage &amp;amp; "  COMM Error Flags = " &amp;amp; _                 Hex$(lngErrorFlags)                  SetCommErrorEx = .lngErrorCode     End With      End Function  '------------------------------------------------------------------------------- ' CommSet - Modifies the serial port settings. ' ' Parameters: '   intPortID   - Port ID used when port was opened. '   strSettings - Communication settings. '                 Example: "baud=9600 parity=N data=8 stop=1" ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommSet(intPortID As Integer, strSettings As String) As Long      Dim lngStatus As Long          On Error GoTo Routine_Error      lngStatus = GetCommState(udtPorts(intPortID).lngHandle, _         udtPorts(intPortID).udtDCB)      If lngStatus = 0 Then         lngStatus = SetCommError("CommSet (GetCommState)")         GoTo Routine_Exit     End If      lngStatus = BuildCommDCB(strSettings, udtPorts(intPortID).udtDCB)      If lngStatus = 0 Then         lngStatus = SetCommError("CommSet (BuildCommDCB)")         GoTo Routine_Exit     End If      lngStatus = SetCommState(udtPorts(intPortID).lngHandle, _         udtPorts(intPortID).udtDCB)      If lngStatus = 0 Then         lngStatus = SetCommError("CommSet (SetCommState)")         GoTo Routine_Exit     End If      lngStatus = 0  Routine_Exit:     CommSet = lngStatus     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommSet"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function  '------------------------------------------------------------------------------- ' CommClose - Close the serial port. ' ' Parameters: '   intPortID   - Port ID used when port was opened. ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommClose(intPortID As Integer) As Long      Dim lngStatus As Long          On Error GoTo Routine_Error      If udtPorts(intPortID).blnPortOpen Then         lngStatus = CloseHandle(udtPorts(intPortID).lngHandle)              If lngStatus = 0 Then             lngStatus = SetCommError("CommClose (CloseHandle)")             GoTo Routine_Exit         End If              udtPorts(intPortID).blnPortOpen = False     End If      lngStatus = 0  Routine_Exit:     CommClose = lngStatus     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommClose"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function  '------------------------------------------------------------------------------- ' CommFlush - Flush the send and receive serial port buffers. ' ' Parameters: '   intPortID   - Port ID used when port was opened. ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommFlush(intPortID As Integer) As Long      Dim lngStatus As Long          On Error GoTo Routine_Error      lngStatus = PurgeComm(udtPorts(intPortID).lngHandle, PURGE_TXABORT Or _         PURGE_RXABORT Or PURGE_TXCLEAR Or PURGE_RXCLEAR)      If lngStatus = 0 Then         lngStatus = SetCommError("CommFlush (PurgeComm)")         GoTo Routine_Exit     End If      lngStatus = 0  Routine_Exit:     CommFlush = lngStatus     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommFlush"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function  '------------------------------------------------------------------------------- ' CommRead - Read serial port input buffer. ' ' Parameters: '   intPortID   - Port ID used when port was opened. '   strData     - Data buffer. '   lngSize     - Maximum number of bytes to be read. ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommRead(intPortID As Integer, strData As String, _     lngSize As Long) As Long  Dim lngStatus As Long Dim lngRdSize As Long, lngBytesRead As Long Dim lngRdStatus As Long, strRdBuffer As String * 1024 Dim lngErrorFlags As Long, udtCommStat As COMSTAT          On Error GoTo Routine_Error      strData = ""     lngBytesRead = 0     DoEvents          ' Clear any previous errors and get current status.     lngStatus = ClearCommError(udtPorts(intPortID).lngHandle, lngErrorFlags, _         udtCommStat)      If lngStatus = 0 Then         lngBytesRead = -1         lngStatus = SetCommError("CommRead (ClearCommError)")         GoTo Routine_Exit     End If              If udtCommStat.cbInQue &gt; 0 Then         If udtCommStat.cbInQue &gt; lngSize Then             lngRdSize = udtCommStat.cbInQue         Else             lngRdSize = lngSize         End If     Else         lngRdSize = 0     End If      If lngRdSize Then         lngRdStatus = ReadFile(udtPorts(intPortID).lngHandle, strRdBuffer, _             lngRdSize, lngBytesRead, udtCommOverlap)          If lngRdStatus = 0 Then             lngStatus = GetLastError             If lngStatus = ERROR_IO_PENDING Then                 ' Wait for read to complete.                 ' This function will timeout according to the                 ' COMMTIMEOUTS.ReadTotalTimeoutConstant variable.                 ' Every time it times out, check for port errors.                  ' Loop until operation is complete.                 While GetOverlappedResult(udtPorts(intPortID).lngHandle, _                     udtCommOverlap, lngBytesRead, True) = 0                                                          lngStatus = GetLastError                                                              If lngStatus &lt;&gt; ERROR_IO_INCOMPLETE Then                         lngBytesRead = -1                         lngStatus = SetCommErrorEx( _                             "CommRead (GetOverlappedResult)", _                             udtPorts(intPortID).lngHandle)                         GoTo Routine_Exit                     End If                 Wend             Else                 ' Some other error occurred.                 lngBytesRead = -1                 lngStatus = SetCommErrorEx("CommRead (ReadFile)", _                     udtPorts(intPortID).lngHandle)                 GoTo Routine_Exit                          End If         End If              strData = Left$(strRdBuffer, lngBytesRead)     End If  Routine_Exit:     CommRead = lngBytesRead     Exit Function  Routine_Error:     lngBytesRead = -1     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommRead"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function  '------------------------------------------------------------------------------- ' CommWrite - Output data to the serial port. ' ' Parameters: '   intPortID   - Port ID used when port was opened. '   strData     - Data to be transmitted. ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommWrite(intPortID As Integer, strData As String) As Long      Dim i As Integer Dim lngStatus As Long, lngSize As Long Dim lngWrSize As Long, lngWrStatus As Long          On Error GoTo Routine_Error          ' Get the length of the data.     lngSize = Len(strData)      ' Output the data.     lngWrStatus = WriteFile(udtPorts(intPortID).lngHandle, strData, lngSize, _         lngWrSize, udtCommOverlap)      ' Note that normally the following code will not execute because the driver     ' caches write operations. Small I/O requests (up to several thousand bytes)     ' will normally be accepted immediately and WriteFile will return true even     ' though an overlapped operation was specified.              DoEvents          If lngWrStatus = 0 Then         lngStatus = GetLastError         If lngStatus = 0 Then             GoTo Routine_Exit         ElseIf lngStatus = ERROR_IO_PENDING Then             ' We should wait for the completion of the write operation so we know             ' if it worked or not.             '             ' This is only one way to do this. It might be beneficial to place the             ' writing operation in a separate thread so that blocking on completion             ' will not negatively affect the responsiveness of the UI.             '             ' If the write takes long enough to complete, this function will timeout             ' according to the CommTimeOuts.WriteTotalTimeoutConstant variable.             ' At that time we can check for errors and then wait some more.              ' Loop until operation is complete.             While GetOverlappedResult(udtPorts(intPortID).lngHandle, _                 udtCommOverlap, lngWrSize, True) = 0                                                  lngStatus = GetLastError                                                      If lngStatus &lt;&gt; ERROR_IO_INCOMPLETE Then                     lngStatus = SetCommErrorEx( _                         "CommWrite (GetOverlappedResult)", _                         udtPorts(intPortID).lngHandle)                     GoTo Routine_Exit                 End If             Wend         Else             ' Some other error occurred.             lngWrSize = -1                                  lngStatus = SetCommErrorEx("CommWrite (WriteFile)", _                 udtPorts(intPortID).lngHandle)             GoTo Routine_Exit                  End If     End If          For i = 1 To 10         DoEvents     Next      Routine_Exit:     CommWrite = lngWrSize     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommWrite"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function  '------------------------------------------------------------------------------- ' CommGetLine - Get the state of selected serial port control lines. ' ' Parameters: '   intPortID   - Port ID used when port was opened. '   intLine     - Serial port line. CTS, DSR, RING, RLSD (CD) '   blnState    - Returns state of line (Cleared or Set). ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommGetLine(intPortID As Integer, intLine As Integer, _    blnState As Boolean) As Long      Dim lngStatus As Long Dim lngComStatus As Long, lngModemStatus As Long          On Error GoTo Routine_Error      lngStatus = GetCommModemStatus(udtPorts(intPortID).lngHandle, lngModemStatus)      If lngStatus = 0 Then         lngStatus = SetCommError("CommReadCD (GetCommModemStatus)")         GoTo Routine_Exit     End If      If (lngModemStatus And intLine) Then         blnState = True     Else         blnState = False     End If              lngStatus = 0          Routine_Exit:     CommGetLine = lngStatus     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommReadCD"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function  '------------------------------------------------------------------------------- ' CommSetLine - Set the state of selected serial port control lines. ' ' Parameters: '   intPortID   - Port ID used when port was opened. '   intLine     - Serial port line. BREAK, DTR, RTS '                 Note: BREAK actually sets or clears a "break" condition on '                 the transmit data line. '   blnState    - Sets the state of line (Cleared or Set). ' ' Returns: '   Error Code  - 0 = No Error. '------------------------------------------------------------------------------- Public Function CommSetLine(intPortID As Integer, intLine As Integer, _    blnState As Boolean) As Long     Dim lngStatus As Long Dim lngNewState As Long          On Error GoTo Routine_Error          If intLine = LINE_BREAK Then         If blnState Then             lngNewState = SETBREAK         Else             lngNewState = CLRBREAK         End If          ElseIf intLine = LINE_DTR Then         If blnState Then             lngNewState = SETDTR         Else             lngNewState = CLRDTR         End If          ElseIf intLine = LINE_RTS Then         If blnState Then             lngNewState = SETRTS         Else             lngNewState = CLRRTS         End If     End If      lngStatus = EscapeCommFunction(udtPorts(intPortID).lngHandle, lngNewState)      If lngStatus = 0 Then         lngStatus = SetCommError("CommSetLine (EscapeCommFunction)")         GoTo Routine_Exit     End If      lngStatus = 0          Routine_Exit:     CommSetLine = lngStatus     Exit Function  Routine_Error:     lngStatus = Err.Number     With udtCommError         .lngErrorCode = lngStatus         .strFunction = "CommSetLine"         .strErrorMessage = Err.Description     End With     Resume Routine_Exit End Function    '------------------------------------------------------------------------------- ' CommGetError - Get the last serial port error message. ' ' Parameters: '   strMessage  - Error message from last serial port error. ' ' Returns: '   Error Code  - Last serial port error code. '------------------------------------------------------------------------------- Public Function CommGetError(strMessage As String) As Long          With udtCommError         CommGetError = .lngErrorCode         strMessage = "Error (" &amp;amp; CStr(.lngErrorCode) &amp;amp; "): " &amp;amp; .strFunction &amp;amp; _             " - " &amp;amp; .strErrorMessage     End With      End Function  &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;I know the code looks lengthy and elaborate, but you need not to worry about that. It actually implements many more functions than you really need to use. Some of them, for instance, are used to set high/low the control lines of the serial port (DTR, RTS) or to read the state of the other control lines (CTS, DSR). The actual functions to write/read the serial port, which are defined above too, do call some of the other functions defined, but this is not important for the end user of the code. And if you made it so far…you have half of the job done!&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;Make sure you save the file (by clicking the common “Save” button) and then go back to the excel worksheet, where the 4 buttons that you have drawin are waiting for you to do something with them!&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;First of all, make sure that the “Design Mode” button is activated in the second toolbar that you added throughout this process:&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="center" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: center; "&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0080.png" width="472" height="172" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;Now you can give appropriate names to each of the four buttons you have created before. In order to do this, right-click on the first of these buttons, and from the pop-up menu, choose the&lt;br /&gt;&lt;i&gt;Properties&lt;/i&gt; option:&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="center" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: center; "&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0081.png" width="277" height="254" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;A window will open with all the properties of the button object. Change the &lt;i&gt;Caption&lt;/i&gt; property to “Initialise”, and then close the window. This will change the label on the first button to this very text:&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="center" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: center; "&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0082.png" width="448" height="256" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;Once you do this for the first button, repeat the operation and change the labels on the other three buttons&lt;br /&gt;to “Write”, “Read” and “Close”.&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;Now it is time to start adding code to your buttons. In order to do this, click on the first button you created, and from the pop-up menu, choose the&lt;i&gt;View Code&lt;/i&gt; option:&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="center" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: center; "&gt;&lt;img src="http://dev.emcelettronica.com/files/u7555/Fig0083.png" width="248" height="245" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;This will open again the scripting environment, adding a new function to the code; it will mark the&lt;br /&gt;beginning of the function:&lt;/p&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;Private Sub CommandButton1_Click()  End Sub &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;This is the place where you will write the code to initialize the serial port. For this, we will be using the CommOpen function, defined above, which takes as parameters the ID of the COM port you want to open (COM1, COM2 etc) and a few strings that define the baud rate, the parity and the number of data and stop bits. The code for realizing this is:&lt;/p&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;Private Sub CommandButton1_Click()     Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4     Dim lngStatus As Long            intPortID = 1      ' Open COM port     lngStatus = CommOpen(intPortID, "COM" &amp;amp; CStr(intPortID), _         "baud=9600 parity=N data=8 stop=1") End Sub &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;It opens COM1, at a baud rate of 9600, no parity, 8 data bits and one stop bit. The number of the COM port is specified by the value assigned to the &lt;i&gt;intPortID&lt;/i&gt; variable. The &lt;i&gt;lngStatus&lt;/i&gt; variable will contain the value returned by the CommOpen function, and will indicate if the port was successfully open or if any error was encountered.&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;Once you completed this function, go back to the excel sheet, and by the same process of right-clicking and choosing the &lt;i&gt;View Code&lt;/i&gt; option, create the function for the second button, the one with the “Write” label written on it. The code for this function should be as follows:&lt;/p&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;Private Sub CommandButton2_Click()      Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4     Dim lngStatus As Long     Dim strData   As String       intPortID = 1     strData = "*IDN?;"          'Writa data     lngStatus = CommWrite(intPortID, strData)    End Sub  &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;This actually calls the CommWrite function, which takes two parameters: the number of the COM port to write to (it has to be the same like for the one you have opened with the previous CommOpen function) and a string of characters that will be sent to the serial port. In this case, the&lt;i&gt;intPortID&lt;/i&gt; variable specifies that we deal with COM1, and the data to be sent is stored in the strData variable (the string looks funny because it is a command string for a programmable power supply we have in the lab; it basically interrogates the power supply regarding its unique identification number)&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;Again, the &lt;i&gt;lngStatus&lt;/i&gt; variable will indicate if the write was successful, or if&lt;br /&gt;an error occurred.&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" align="justify" style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); text-align: justify; "&gt;In the same way, create and add the code for the third button:&lt;/p&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;Private Sub CommandButton3_Click()      Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4     Dim lngStatus As Long     Dim strData   As String        intPortID = 1     lngStatus = CommRead(intPortID, strData, 10)  End Sub &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;This will try to read 10 characters from COM1 and store them in the strData variable. Once the data is stored you can do whatever you want with it: put it in a table, write it in a cell from the sheet put it through another VB algorithm etc.&lt;/p&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;Private Sub CommandButton4_Click()     Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4                     intPortID = 1     Call CommClose(intPortID)      End Sub &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The next logical step is to close the serial port, for this, you should use the fourth button you have created previously in order to create the function:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Remember that the VBA in Excel is rather an interpreter than a compiler. What this means is that once you have written the code, you do not need to compile it, you just need to execute the scripts. In order to do this, make sure the “Design Mode” button is now inactive in the second toolbar that you added throughout this process:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Once this is achieved, you may go ahead and click on the buttons that you have created; each time you press a button, the code from the corresponding function will be executed. You should obviously click the buttons in the order we have discussed. First initialize the port, and then write something to the port. If you have a device connected to the serial port of your PC, then you might attempt to read 10 characters from it, if not, then just go ahead and close the port.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Please bear in mind that I did not write this code myself. It is freely available on the internet if you have the time and patience to dig it up (well, hopefully we brought it closer to you by this article). I am not a professional programmer myself, so I cannot theoretically explain every detail of the code. However, I did make a test excel file and I successfully tested it by communicating with a TTI programmable power supply.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In my opinion, this serial port communication method has some advantages: there is no need to install anything on your PC, and sometimes, the data you read from the serial port is meant to be integrated in tables or graphs (very easy to do this in excel). The trade-offs are, however, present: no real compiler, so slow execution speed, and no…ease of programming like in C#, for instance.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In &lt;a href="http://dev.emcelettronica.com/download" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Download&lt;/a&gt; section, you may find a file that should have resulted from thoroughly following the steps in this article.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-1074207628433473324?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/1074207628433473324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/serial-port-communication-in-excel-vba.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1074207628433473324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/1074207628433473324'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/serial-port-communication-in-excel-vba.html' title='Serial Port Communication in Excel (VBA)'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-5999190177317328878</id><published>2010-05-19T04:01:00.002-07:00</published><updated>2010-05-19T04:03:15.797-07:00</updated><title type='text'>Microcontrollers USB-Stick Tool</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Texas Instruments&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://focus.ti.com/docs/toolsw/folders/print/ez430-f2013.html" title="msp430" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ez430-f2013.jpg" alt="Msp430" align="left" height="87" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;eZ430– TI’s newest development tool includes all the necessary hardware and software in a portable USB stick enclosure. The eZ430 tools includes a free IDE, providing full emulation with the option of designing a stand-alone system or detaching the removable target board to integrate into an existing design.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/various/farnell.ico" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; &lt;a href="http://it.farnell.com/1172234/semiconductors/product.us0?sku=TEXAS-INSTRUMENTS-EZ430-F2013" target="_blank" title="Farnell" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Buy NOW (24h delivery)&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;TI&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://focus.ti.com/docs/toolsw/folders/print/ez430-rf2500.html" title="rf2500" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/tool_usb.gif" alt="RF2500" align="left" height="98" hspace="5" vspace="5" width="192" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;Wirelessly enable your design with the eZ430-RF2500, the world’s smallest low-power wireless development tool. At only $49, the tool includes a USB emulator to program and debug your application in-system and two 2.4-GHz wireless target boards featuring the highly integrated MSP430F2274 ultra-low-power MCU. All the required software is included such as a complete Integrated Development Environment and SimpliciTI™, a propriety low-power star network stack, enabling robust wireless networks out of the box. The MSP430F22x4 combines 16-MIPS performance with a 200-ksps 10-bit ADC and 2 op-amps and is paired with the CC2500 multi-channel RF transceiver designed for low-power wireless applications.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.designmsp430.com/" title="MSP430" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;DESIGN MSP430&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;ST Microelectronics&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.st.com/mcu/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=89" title="ST7" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ST7Ultralite_Primers.jpg" alt="ST7" align="left" height="200" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The ST7Ultralite Primer (ST7FUS-PRIMER) is a complete, ultra low-cost evaluation and development package that provides a fun and easy introduction to the features of ST’s tiny 8-pin ST7FLITEUS microcontrollers including the internal RC oscillator, 10-bit Analog Digital Converter (ADC), 12-bit Autoreload timer with PWM, Low voltage and Auxiliary voltage detectors.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.st.com/mcu/contentid-95-101-STR9_COMSTICK.html" title="STR9" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/str9-comstick-pic.jpg" alt="STR9" align="left" height="140" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The STR9-comStick is a complete, low-cost evaluation and development package that provides a fast and easy introduction to the networking features of ST’s ARM966E® core-based STR9 family of microcontrollers. It is specifically designed to help application designers learn about STR9 features supporting 10/100 Ethernet, USB 2.0 full speed and CAN connectivity.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/stm32_prfStick.jpg" alt="STM32" align="left" height="200" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;The STM32-PerformanceStick is a complete, low-cost&lt;br /&gt;evaluation and development package that provides a fast and&lt;br /&gt;easy introduction to the capabilities of ST’s ARM Cortex™-M3&lt;br /&gt;core-based STM32 family of microcontrollers. It is specifically&lt;br /&gt;designed to help application designers explore STM32 features&lt;br /&gt;and performance characteristics (low power modes, clock controls,&lt;br /&gt;wakeup states, etc.), but can also be connected to extension&lt;br /&gt;boards with hardware features for evaluation of device peripherals.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;Infineon&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.infineon.com/cms/en/product/channel.html?channel=db3a304312fcb1bc01130bbf1ed509c3&amp;amp;navigation=menu" title="uscale" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/U_Scale.jpg" alt="uscale" align="left" height="150" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;The XC800 USCALE kit is a low cost USB stick providing full evaluation capability for the XC866 , XC886 and XC888 8bit Family of microcontrollers, all on a single platform. The kit includes development toolchains, demos and tutorials for quick installation and ease of use as well as access to the key features and hardware signals of each of the three microcontrollers for more extensive benchmarking and evaluation.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Freescale&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RD3152MMA7260Q&amp;amp;nodeId=01126911184209" title="ZSTAR" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ZSTARPRODUCT.jpg" alt="zstar" align="left" height="200" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The ZSTAR demo board was designed to demonstrate Freescale's latest innovations in sensors, wireless connectivity and embedded flash microcontrollers.&lt;br /&gt;This reference design will enable you to see how Freescale's accelerometers can add additional functionality to applications in various industries. The accelerometer measurements performed can be grouped into 6 sensing functions - Fall, Tilt, Motion, Positioning, Shock and Vibration - for multifunctional applications.&lt;br /&gt;The RD3152MMA7260Q development tool offers robust wireless communication using the powerful, easy-to-use 2.4GHz frequency MC13191 transceiver. Minor changes can be made with pin to pin compatibility allowing implementation of the MC13192 and MC13193 for wireless applications.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;Cypress&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.cypress.com/firsttouch/" title="PSoC" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/psoc.gif" alt="psoc" align="left" height="82" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Single Platform - Multiple Applications Out of the Box&lt;br /&gt;Optimized for Quick Evaluation&lt;br /&gt;Powered by PSoC Mixed-Signal Arrays&lt;br /&gt;Design with no C or Assembly Code with PSoC Express Visual Embedded System Design Tool&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dev.emcelettronica.com/various/farnell.ico" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; &lt;a href="http://it.farnell.com/1431701/semiconductors/product.us0?sku=CYPRESS-SEMICONDUCTOR-CY3270" target="_blank" title="Farnell" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;Buy NOW (24h delivery)&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Silabs&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.silabs.com/tgwWebApp/public/web_content/products/Microcontrollers/en/USBToolStick.htm" title="Silabs" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ToolStick.jpg" alt="silabs" align="left" height="120" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Silicon Labs ToolStick is an easy to use development system that allows designers to develop and debug application firmware directly on the target microcontroller using the Silicon Labs Integrated Development Environment (IDE). Once complete, designers can replace the Daughter Card with a Programming Adapter and program blank devices for use in their actual system.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;br /&gt;&lt;b&gt;NXP-Hitex&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.hitex.com/lpc-stick/" title="LPC Stick" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/lpc-stick.jpg" alt="LPC Stick" align="left" height="140" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;Discover the performance of the LPC2468 ARM7TDMI core with the LPC-Stick! The LPC-Stick is a small modular evaluation kit with optional extension boards. The LPC-Stick package provides target hardware with the LPC2468 microcontroller from NXP, external SRAM, user pins and LEDs for applications use. Combined with the proven USB debugger device connection and the non-limited HiTOP development tools the LPC-Stick allows full access to all chip features, debugging and programming.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Atmel&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;a href="http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4291" title="Atmel RF" target="_blank" style="text-decoration: none; color: rgb(51, 98, 153); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u1/ravenKit_small.jpg" alt="Atmel" align="left" height="180" hspace="5" vspace="5" width="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;The RZRAVEN 2.4 GHz Evaluation and Starter kit enables development,&lt;br /&gt;debugging and demonstration of a wide range of lowpower wireless&lt;br /&gt;applications including IEEE 802.15.4, 6LoWPAN and ZigBee networks. The RZRAVEN kit comprises two AVR Raven boards (AVRRAVEN) with 2.4 GHz&lt;br /&gt;transceiver, on board picoPower AVR application processors and LCD&lt;br /&gt;display, and one USB stick (AVRRZUSBSTICK) with a 2.4 GHz transceiver&lt;br /&gt;for USB connection to your PC. A PC SW package is included enabling wireless network setup and&lt;br /&gt;control, a wireless network analyzer and over-the-air programming.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-5999190177317328878?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/5999190177317328878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/microcontrollers-usb-stick-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5999190177317328878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5999190177317328878'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/microcontrollers-usb-stick-tool.html' title='Microcontrollers USB-Stick Tool'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-8411592096099050186</id><published>2010-05-19T04:01:00.001-07:00</published><updated>2010-05-19T04:01:48.526-07:00</updated><title type='text'>GNU Radio: the open-source software defined Radio</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GNU Radio is an open source &lt;b&gt;Software Defined Radio &lt;/b&gt;(SDR) project that was started about ten years ago by &lt;b&gt;Eric Blossom&lt;/b&gt;, an electrical engineer. The main idea which is behind this project, as its founder says, was to turn all the hardware problems into software problems, that is move the complexity of a radio equipment from the hardware level to the software one, and get the software as close to the antenna as possible.&lt;/p&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;Advantages of SDR&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Software defined radio has some advantages that were not been possible before:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It can be reconfigured "on-the-fly"&lt;/li&gt;&lt;li&gt;It can be easily and rapidly upgraded with new software versions or enhanced features&lt;/li&gt;&lt;li&gt;It is possible to talk and listen to multiple channels at the same time&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;What is the story of GNU Radio?&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Blossom initiated this project because he was disappointed by the SDR projects available at that time: all of them had a proprietary nature, and he wanted to bring the free-software philosophy into the SDR world. Richard Stallman, the GNU Project founder, liked Blossom’s idea and agreed to take the project under the GNU aegis.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;So far, the GNU Radio project has not disappointed its affiliates and supporters. Eric Blossom, together with his development colleague &lt;b&gt;Matt Ettus&lt;/b&gt;, have realized a project which can turn an ordinary PC into a good quality radio receiver; the only additional hardware required are a “low-cost” RF tuner and an analog-to-digital converter to convert the received signal into digital samples. GNU Radio is a free software development toolkit which allows to develop a custom non commercial radio receiver just combining and interconnecting appropriate software modules, as if they were functional blocks (the package include about 100 modules, but others can be added to the initial library). Each module is able to perform a specific signal processing function (for example a mixer, a phase lock loop, a filter), with a real-time behavior and with high-throughput; for this reason, a recent PC with enough processing capability and memory shall be used. With the GNU Radio approach, the designer is a software developer who builds the radio by creating a graph (in a similar way to what happens in the graph theory) where the vertices are signal processing blocks and the edges represent the data flow between them. The signal processing blocks are normally implemented in C++, whereas the graph structure is defined in Python. GNU Radio is well known and widely used especially in academic environments and among hobbyists and radio amateurs; it is used either to implement real and working radio equipments, or just as a research project in the area of wireless communication and transmission. GNU Radio software modules support various modulations (GMSK, PSK, QAM, OFDM), error corrections codes (Reed-Solomon, Viterbi, Turbo Codes), and signal processing capabilities (filters, FFTs, equalizers, timing recovery).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GNU Radio applications are mainly written in Python; however, the critical and low-level algorithms and signal processing modules are written using the C/C++ programming language, with wide usage of floating-point specific instructions for the relevant processor. Python is primarily used to setup the flow graph, after that most of the work is done in C/C++. GNU Radio is simple to use and a radio receiver can be created in a fast and straightforward manner; moreover, the development of a signal processing algorithm can be carried out using a pre-recorded or generated data set, thus allowing the development without the need for a real RF hardware. An example of minimal hardware required to work with GNU Radio is offered by the USRP, developed by Ettus Research LLC.&lt;/p&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;What is USRP?&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;USRP, which stands for Universal Software Radio Peripheral, is a general purpose motherboard which can host a wide selection of daughterboards, each of which implements a signal processing block found in the GNU Radio software package. The original USRP is a low cost software radio device which connects to the host computer through a USB 2.0 interface, and can send up to 16 MHz of RF bandwidth in both directions. It hosts an FPGA which can be reprogrammed, 4 high-speed Analog to Digital Converters (ADCs), 4 high-speed Digital to Analog Converters DACs), and many auxiliary analog and digital I/Os.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The following pictures show how the USRP looks like, externally and internally, respectively.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u9973/gnur_01.jpg" height="263" width="494" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;img src="http://dev.emcelettronica.com/files/u9973/gnur_02.jpg" height="495" width="405" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The USRP contains two Analog Devices AD9862 mixed signal analog front end devices connected to an Altera Cyclone EP1C12 FPGA where most of the initial downconversion is done within the RX chain. The USRP family includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;DC to 30 MHz receiver&lt;/li&gt;&lt;li&gt;DC to 30 MHz transmitter&lt;/li&gt;&lt;li&gt;1 MHz to 250 MHz receiver&lt;/li&gt;&lt;li&gt;1 MHz to 250 MHz transmitter&lt;/li&gt;&lt;li&gt;50 to 860 MHz receiver&lt;/li&gt;&lt;li&gt;800 MHz to 2.4 GHz receiver&lt;/li&gt;&lt;li&gt;400-500 MHz transceiver&lt;/li&gt;&lt;li&gt;750-1050 MHz transceiver (including cell and ISM bands)&lt;/li&gt;&lt;li&gt;1150-1450 MHz transceiver&lt;/li&gt;&lt;li&gt;1.5-2.1 GHz transceiver (including PCS bands)&lt;/li&gt;&lt;li&gt;2.3-2.9 GHz transceiver (including ISM band)&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The motherboard shown in the above picture is equipped with 4 daughterboards: 2 Tx modules and 2 Rx modules.&lt;/p&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;The GNU Radio USRP2&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The USRP2 is based on its successful predecessor, the original USRP, providing the following new capabilities:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Gigabit Ethernet interface&lt;/li&gt;&lt;li&gt;25 MHz of instantaneous RF bandwidth&lt;/li&gt;&lt;li&gt;Xilinx Spartan 3-2000 FPGA, which can even operate the device in a stand-alone way, without requiring connection to a host computer&lt;/li&gt;&lt;li&gt;Dual 100 MHz 14-bit ADCs&lt;/li&gt;&lt;li&gt;Dual 400 MHz 16-bit DACs&lt;/li&gt;&lt;li&gt;1 Mb of high-speed SRAM&lt;/li&gt;&lt;li&gt;Locking to an external 10 MHz reference&lt;/li&gt;&lt;li&gt;1 PPS (pulse per second) input&lt;/li&gt;&lt;li&gt;Configuration stored on standard SD cards&lt;/li&gt;&lt;li&gt;Standalone operation&lt;/li&gt;&lt;li&gt;The ability to lock multiple systems together for MIMO&lt;/li&gt;&lt;li&gt;Compatibility with all the same daughterboards as the original USRP&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;USRP2 is initially supported on Linux, but drivers will be available also for Windows, Mac OS X, and other operating systems.&lt;/p&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;GNU Radio applications&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The GNU Radio package is provided with a complete HDTV transmitter and receiver, a spectrum analyzer, an oscilloscope, a multichannel receiver and a wide collection of modulators and demodulators. Other advanced projects are still in the feasibility phase or in progress:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A system able to recording multiple stations simultaneously&lt;/li&gt;&lt;li&gt;Time Division Multiple Access (TDMA) waveforms&lt;/li&gt;&lt;li&gt;A passive radar system that takes advantage of broadcast TV for its signal source&lt;/li&gt;&lt;li&gt;Radio astronomy&lt;/li&gt;&lt;li&gt;Digital Radio Mundial (DRM)&lt;/li&gt;&lt;li&gt;Software GPS&lt;/li&gt;&lt;li&gt;Amateur radio transceivers&lt;/li&gt;&lt;limimo processing="" multiple="" input="" multiple=""&gt;&lt;/limimo&gt;&lt;/ul&gt;&lt;h3 style="margin-bottom: 0.5em; line-height: 20px; font-size: 1.1em; "&gt;Curious about writing your own block?&lt;/h3&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Eric Blossom has prepared an excellent tutorial which explains in detail how to write a block for GNU Radio: if you are interested in it, try and enjoy it.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-8411592096099050186?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/8411592096099050186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gnu-radio-open-source-software-defined.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8411592096099050186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/8411592096099050186'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gnu-radio-open-source-software-defined.html' title='GNU Radio: the open-source software defined Radio'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-4821068811373860646</id><published>2010-05-18T02:37:00.001-07:00</published><updated>2010-05-18T02:37:38.258-07:00</updated><title type='text'>Microsoft bounty for worm creator</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Reward of $250,000 (£172,000) has been offered by Microsoft to find who is behind the Downadup/Conficker virus.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Since it started circulating in October 2008 the Conficker worm has managed to infect millions of computers worldwide. The software giant is offering the cash reward because it views the Conficker worm as a criminal attack&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;"People who write this malware have to be held accountable", said George Stathakopulos, of Microsoft's Trustworthy Computing Group.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;He told BBC News the company was "not prepared to sit back and let this kind of activity go unchecked.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;"Our message is very clear - whoever wrote this caused significant pain to our customers and we are sending a message that we will do everything we can to help with your arrest", said Mr Stathakopulos.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Arbor Networks said as many as 12 million computers could be affected globally by Conficker/Downadup since it began prowling the web looking for vulnerable machines to infect in October.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Malicious payload:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Conficker worm is a self-replicating program that takes advantage of networks or computers that have not kept up to date with Windows security patches.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;It can infect machines via a net connection or by hiding on USB memory drives used to ferry data from one computer to another. Once in a computer it digs deep, setting up defences that make it hard to extract.&lt;/p&gt;&lt;div align="center"&gt;&lt;img height="170" width="226" src="http://dev.emcelettronica.com/files/u9995/USB.jpg" alt="The worm can also spread via USB flash drives." border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The worm can also spread via USB flash drives.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The worm slithers through networks by guessing usernames and passwords. Security specialists recommend hardening passwords by mixing in numbers, punctuation marks and capital letters.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The virus reports in to its creators for updates by visiting a web domain. It generates the name of the domain itself using a complicated code which security firms have cracked to track the growth of the worm and block its progress.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Malware such as Downadup can be triggered to steal data or turn control of infected computers over to malicious hackers which pool them into larger armies of so-called botnets.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;These networks of compromised machines can be used to send spam, as dead drops for stolen or pirated data and to launch attacks on other machines.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Although Downadup is widespread its creators have yet to activate its payload to steal data or launch other attacks.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;It has caused costly headaches for network administrators dealing with users locked out of their accounts when the worm correctly guesses a password.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;While Microsoft says it does not know the intention of the worm's creator, it wants to ensure it does not wreak any more havoc.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Experts say users should have up-to-date anti-virus software and install Microsoft's MS08-067 patch - also known as KB958644.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Global Response:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Microsoft has also partnered with security companies, domain name providers, academia, internet companies such as AOL and others on a co-ordinated global response to the worm&lt;/p&gt;&lt;div align="center"&gt;&lt;img height="152" width="203" src="http://dev.emcelettronica.com/files/u9995/PCs__Scrap_Yard-Waste_.jpg" align="absMiddle" alt="Millions of computers have been hit by Conficker" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Millions of computers have been hit by Conficker.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Also included is the US Department of Justice and the Department of Homeland Security.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;"The best way to defeat potential botnets like Conficker/Downadup is by the security and Domain Name System communities working together", said Greg Rattray, chief internet security adviser at the Internet Corporation for Assigned Names and Numbers (Icann).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;"Icann represents a community that's all about co-ordinating those kinds of efforts to keep the internet globally secure and stable."&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Sasser Worm:&lt;/b&gt;&lt;br /&gt;In 2003 Microsoft created its reward programme with $5m (£3.4m) in funding to help law enforcement agencies bring computer virus and worm authors to justice.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;This reward for help in tracking the creators of Downadup is the first time in four years that the company has put up some cash in response to a worm outbreak.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;"We have not seen this type of worm or one of its class since 2004", said Mr Stathakopulos.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In 2005 Microsoft paid out $250,000 (£171,000) to two individuals who helped identify the creator of the notorious Sasser worm. The author was arrested and sentenced by the German authorities.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Rewards of $250,000 were offered over three other major computer worm threats known as Blaster, MyDoom and Sobig worms.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Those perpetrators have never been caught.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-4821068811373860646?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/4821068811373860646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/microsoft-bounty-for-worm-creator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4821068811373860646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/4821068811373860646'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/microsoft-bounty-for-worm-creator.html' title='Microsoft bounty for worm creator'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-3810347047833955333</id><published>2010-05-18T02:36:00.001-07:00</published><updated>2010-05-18T02:36:37.889-07:00</updated><title type='text'>General RF</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Radio frequency (abbreviated RF, rf, orr.f.) is a term that refers to alternating current (AC) having characteristics such that, if the current is input to an antenna, an electromagnetic (EM) field is generated suitable for wireless broadcasting and/or communications. These frequencies cover a significant portion of the electromagnetic radiation spectrum, extending from nine kilohertz (9 kHz),the lowest allocated wireless communications frequency (it's within the range of human hearing), to thousands of gigahertz(GHz).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;When an RF current is supplied to an antenna, it gives rise to an electromagnetic field that propagates through space. This field is sometimes called an RF field; in less technical jargon it is a "radiowave." Any RF field has a wavelength that is inversely proportional to the frequency. In the atmosphere or in outerspace, if f is the frequency in megahertz and s is the wavelength in meters, then&lt;/p&gt;&lt;div align="center"&gt;&lt;b&gt;&lt;i&gt;s = 300/f&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The frequency of an RF signal is inversely proportional to the wavelength of the EM field to which it corresponds. At 9 kHz, the free-space wavelength is approximately 33 kilometers (km) or 21 miles (mi). At the highest radio frequencies, the EM wavelengths measure approximately one millimeter (1 mm). As the frequency is increased beyond that of the RF spectrum, EM energy takes the form of infrared (IR), visible, ultraviolet (UV), X rays, and gamma rays.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Many types of wireless devices make use of RF fields. Cordless and cellular telephone, radio and television broadcast stations, satellite communications systems, and two-way radio services all operate in the RF spectrum. Some wireless devices operate at IR or visible-light frequencies, whose electromagnetic wavelengths are shorter than those of RF fields. Examples include most television-set remote-control boxes, some cordless computer keyboards and mice, and a few wireless hi-fi stereo headsets.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The RF spectrum is divided into several ranges, or bands. With the exception of the lowest-frequency segment, each band represents an increase of frequency corresponding to an order of magnitude (power of 10). The tabled epicts the eight bands in the RF spectrum, showing frequency and bandwidth ranges. The SHF and EHF bands are often referred to as the microwave spectrum.&lt;/p&gt;&lt;table border="2" style="border-collapse: collapse; font-size: 1em; width: 600px; "&gt;&lt;tbody style="border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "&gt;&lt;tr style="background-color: rgb(147, 189, 184); "&gt;&lt;td&gt;Designation&lt;/td&gt;&lt;td&gt;Abbreviation&lt;/td&gt;&lt;td&gt;Frequencies&lt;/td&gt;&lt;td&gt;Free-space Wavelengths&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Very Low Frequency&lt;/td&gt;&lt;td&gt;VLF&lt;/td&gt;&lt;td&gt;9 kHz - 30 kHz&lt;/td&gt;&lt;td&gt;33 km - 10 km&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Low Frequency&lt;/td&gt;&lt;td&gt;LF&lt;/td&gt;&lt;td&gt;30 kHz - 300 kHz&lt;/td&gt;&lt;td&gt;10 km - 1 km&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Medium Frequency&lt;/td&gt;&lt;td&gt;MF&lt;/td&gt;&lt;td&gt;300 kHz - 3 MHz&lt;/td&gt;&lt;td&gt;1 km - 100 m&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;High Frequency&lt;/td&gt;&lt;td&gt;HF&lt;/td&gt;&lt;td&gt;3 MHz - 30 MHz&lt;/td&gt;&lt;td&gt;100 m - 10 m&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Very High Frequency&lt;/td&gt;&lt;td&gt;VHF&lt;/td&gt;&lt;td&gt;30 MHz - 300 MHz&lt;/td&gt;&lt;td&gt;10 m - 1 m&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ultra High Frequency&lt;/td&gt;&lt;td&gt;UHF&lt;/td&gt;&lt;td&gt;300 MHz - 3 GHz&lt;/td&gt;&lt;td&gt;1 m - 100 mm&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Super High Frequency&lt;/td&gt;&lt;td&gt;SHF&lt;/td&gt;&lt;td&gt;3 GHz - 30 GHz&lt;/td&gt;&lt;td&gt;100 mm - 10 mm&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Extremely High Frequency&lt;/td&gt;&lt;td&gt;EHF&lt;/td&gt;&lt;td&gt;30 GHz - 300 GHz&lt;/td&gt;&lt;td&gt;10 mm - 1 mm&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-3810347047833955333?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/3810347047833955333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/general-rf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/3810347047833955333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/3810347047833955333'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/general-rf.html' title='General RF'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-5382000428188734838</id><published>2010-05-18T02:35:00.001-07:00</published><updated>2010-05-18T02:35:56.977-07:00</updated><title type='text'>Bluetooth Operations Overview</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;u&gt;&lt;b&gt;Bluetooth Basics:&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Bluetooth wireless technology is a short-range communications technology intended to replace the cables connecting portable and/or fixed devices while maintaining high levels of security. The key features of Bluetooth technology are robustness, low power, and low cost. The Bluetooth specification defines a uniform structure for a wide range of devices to connect and communicate with each other.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Overview of Operations:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;i&gt;&lt;b&gt;Radio:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;The Bluetooth RF (physical layer) operates in the unlicensed ISM band at 2.4GHz. The system employs a frequency hop transceiver to combat interference and fading, and provides many FHSS carriers. RF operation uses a shaped, binary frequency modulation to minimize transceiver complexity. The symbol rate is 1 Megasymbol per second (Msps) supporting the bit rate of 1 Megabit per second (Mbps) or, with Enhanced Data Rate, a gross air bit rate of 2 or 3Mb/s. These modes are known as Basic Rate and Enhanced Data Rate respectively.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;i&gt;&lt;b&gt;Radio Channel:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;During typical operation, a physical radio channel is shared by a group of devices that are synchronized to a common clock and frequency hopping pattern.&lt;br /&gt;&lt;b&gt;&lt;i&gt;Piconet Consists of Master and Slave Devices:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;One device provides the synchronization reference and is known as the master. All other devices are known as slaves. A group of devices synchronized in this fashion form a piconet. This is the fundamental form of communication for Bluetooth wireless technology.&lt;br /&gt;&lt;b&gt;&lt;i&gt;Frequency Hopping and Adaptive Frequency Hopping (AFH):&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;Devices in a piconet use a specific frequency hopping pattern which is algorithmically determined by certain fields in the Bluetooth specification address and clock of the master. The basic hopping pattern is a pseudo-random ordering of the 79 frequencies in the ISM band. The hopping pattern may be adapted to exclude a portion of the frequencies that are used by interfering devices. The adaptive hopping technique improves Bluetooth technology co-existence with static (non-hopping) ISM systems when these are co-located.&lt;br /&gt;&lt;b&gt;&lt;i&gt;Time Slots and Packets - Full Duplex Transmission:&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;The physical channel is sub-divided into time units known as slots. Data is transmitted between Bluetooth enabled devices in packets that are positioned in these slots. When circumstances permit, a number of consecutive slots may be allocated to a single packet. Frequency hopping takes place between the transmission or reception of packets. Bluetooth technology provides the effect of full duplex transmission through the use of a time-division duplex (TDD) scheme.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Link and Channel Management Protocols:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;i&gt;Control Layers:&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;Above the physical channel there is a layering of links and channels and associated control protocols. The hierarchy of channels and links from the physical channel upwards is physical channel, physical link, logical transport, logical link and L2CAP channel.&lt;br /&gt;&lt;b&gt;&lt;i&gt;Physical Links:&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;Within a physical channel, a physical link is formed between any two devices that transmit packets in either direction between them. In a piconet physical channel there are restrictions on which devices may form a physical link. There is a physical link between each slave and the master. Physical links are not formed directly between the slaves in a piconet.&lt;br /&gt;&lt;b&gt;&lt;i&gt;Logical Links:&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;The physical link is used as a transport for one or more logical links that support unicast synchronous, asynchronous and isochronous traffic, and broadcast traffic. Traffic on logical links is multiplexed onto the physical link by occupying slots assigned by a scheduling function in the resource manager.&lt;br /&gt;&lt;b&gt;&lt;i&gt;Link Manager Protocol (LMP):&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;A control protocol for the baseband and physical layers is carried over logical links in addition to user data. This is the link manager protocol (LMP). Devices that are active in a piconet have a default asynchronous connection-oriented logical transport that is used to transport the LMP protocol signaling. For historical reasons this is known as the ACL logical transport. The default ACL logical transport is the one that is created whenever a device joins a piconet. Additional logical transports may be created to transport synchronous data streams when this is required.&lt;br /&gt;The link manager function uses LMP to control the operation of devices in the piconet and provide services to manage the lower architectural layers (radio layer and baseband layer). The LMP protocol is only carried on the default ACL logical transport and the default broadcast logical transport.&lt;br /&gt;&lt;b&gt;&lt;i&gt;L2CAP:&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;Above the baseband layer the L2CAP layer provides a channel-based abstraction to applications and services. It carries out segmentation and reassembly of application data and multiplexing and de-multiplexing of multiple channels over a shared logical link. L2CAP has a protocol control channel that is carried over the default ACL logical transport. Application data submitted to the L2CAP protocol may be carried on any logical link that supports the L2CAP protocol.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-5382000428188734838?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/5382000428188734838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/bluetooth-operations-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5382000428188734838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/5382000428188734838'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/bluetooth-operations-overview.html' title='Bluetooth Operations Overview'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-2101900888807841915</id><published>2010-05-18T02:34:00.001-07:00</published><updated>2010-05-18T02:34:53.499-07:00</updated><title type='text'>Parallel Port - Overview</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Parallel Port is the most commonly used port for interfacing home made projects. This port will allow the input of up to 9 bits or the output of 12 bits at any one given time, thus requiring minimal external circuitry to implement many simpler tasks. The port is composed of 4 control lines, 5 status lines and 8 data lines.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Newer Parallel Port’s are standardized under the IEEE 1284 standard first released in 1994. This standard defines 5 modes of operation which are as follows,&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Compatibility Mode.&lt;/li&gt;&lt;li&gt;Nibble Mode. (Protocol not Described in this Document)&lt;/li&gt;&lt;li&gt;Byte Mode. (Protocol not Described in this Document)&lt;/li&gt;&lt;li&gt;EPP Mode (Enhanced Parallel Port).&lt;/li&gt;&lt;li&gt;ECP Mode (Extended Capabilities Mode).&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Interface details are as follows:&lt;/p&gt;&lt;table border="2" style="border-collapse: collapse; font-size: 1em; width: 600px; "&gt;&lt;tbody style="border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "&gt;&lt;tr style="background-color: rgb(147, 189, 184); "&gt;&lt;td&gt;Pin No&lt;br /&gt;(D-Type 25)&lt;/td&gt;&lt;td&gt;Pin No&lt;br /&gt;(Centronics)&lt;/td&gt;&lt;td&gt;SPP Signal&lt;/td&gt;&lt;td&gt;Direction In/out&lt;/td&gt;&lt;td&gt;Register&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;nStrobe&lt;/td&gt;&lt;td&gt;In/Out&lt;/td&gt;&lt;td&gt;Control&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Data 0&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Data 1&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Data 2&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Data 3&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Data 4&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;Data 5&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;Data 6&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;Data 7&lt;/td&gt;&lt;td&gt;Out&lt;/td&gt;&lt;td&gt;Data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;nAck&lt;/td&gt;&lt;td&gt;In&lt;/td&gt;&lt;td&gt;Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;Busy&lt;/td&gt;&lt;td&gt;In&lt;/td&gt;&lt;td&gt;Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;Paper-Out / Paper-End&lt;/td&gt;&lt;td&gt;In&lt;/td&gt;&lt;td&gt;Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;Select&lt;/td&gt;&lt;td&gt;In&lt;/td&gt;&lt;td&gt;Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;nAuto-Linefeed&lt;/td&gt;&lt;td&gt;In / Out&lt;/td&gt;&lt;td&gt;Control&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;nError / nFault&lt;/td&gt;&lt;td&gt;In&lt;/td&gt;&lt;td&gt;Status&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;nInitialize&lt;/td&gt;&lt;td&gt;In / Out&lt;/td&gt;&lt;td&gt;Control&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;&lt;td&gt;nSelect-Printer / nSelect-In&lt;/td&gt;&lt;td&gt;In / Out&lt;/td&gt;&lt;td&gt;Control&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;18-25&lt;/td&gt;&lt;td&gt;19-30&lt;/td&gt;&lt;td&gt;Ground&lt;/td&gt;&lt;td&gt;GND&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Program interface:&lt;/b&gt;&lt;br /&gt;In versions of Windows that did not use the Windows NT kernel (as well as DOS and some other operating systems), programs could access the parallel port with simple outportb() and inportb() subroutine commands. In operating systems such as Windows NT and Unix (NetBSD, FreeBSD, Solaris, 386BSD, etc), the microprocessor is operated in a different security ring, and access to the parallel port is inhibited, unless using the required driver. This improves security and arbitration of device contention. On Linux, inb() and outb() can be used when a process is run as root and an ioperm() command is used to allow access to its base address.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Unidirectional parallel ports:&lt;/b&gt;&lt;br /&gt;In early parallel ports the data lines were unidirectional (data out only) so it was not easily possible to feed data in to the computer. However, a workaround was possible by using 4 of the 5 status lines. A circuit could be constructed to split each 8-bit byte into two 4-bit nibbles which were fed in sequentially through the status lines. Each pair of nibbles was then re-combined into an 8-bit byte. This same method (with the splitting and recombining done in software) was also used to transfer data between PCs using a laplink cable.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-2101900888807841915?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/2101900888807841915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/parallel-port-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/2101900888807841915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/2101900888807841915'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/parallel-port-overview.html' title='Parallel Port - Overview'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-3988150509801931502</id><published>2010-05-18T02:33:00.000-07:00</published><updated>2010-05-18T02:34:08.107-07:00</updated><title type='text'>GPRS (General Packet Radio Services) Overview</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;GPRS Overview:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GPRS is a global standard for wireless communication. GPRS was originally standardized by European Telecommunications Standards Institute (ETSI), but now by the 3rd Generation Partnership Project (3GPP). GPRS is abbreviation of “General Packet Radio Services”. Its speed can be up to 115 Kbps (Kilo Bits Per Seconds). This speed is very much high when compared to current GSM (Global System for Mobile Communications) speed which is only 9.6 Kbps. Practically, Speed of GPRS is 115 Kbps but GPRS provides a theoretical speed as high as 171.2 kbps because of concatenating eight GSM channels. Usually, per Megabyte of data/traffic transferred is charged in GPRS.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GPRS Technology, no doubt, supports a wide range of bandwidth. Hence, GPRS is efficient for use with limited bandwidth access devices and is particularly suited for sending and receiving small packets (data packets) of data on hand held devices such as Mobile Phones and PDAs (Personal Digital Assistants). This data can be in form of an e-mail, bits used for Web browsing, as well as large volumes of data.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Packet-Switching service is used for GPRS. GSM time slots are used for data communication and it supports TCP/IP (Transmission Control Protocol, Internet Protocol) and X.25 protocols, with surety of quality of service (QoS) mechanisms. One can use GPRS to enable high-speed data-communication mobility. GPRS is also considered as most useful Data-Communication Service for data transferring applications such as mobile Internet browsing, e-mails and various push technologies used in Hand Held/Palm Devices.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Cellular systems with 2G and GPRS are often described as "2.5G" enabled systems. 2.5G is a technology between the second (2G) and third (3G) generation of mobile telephony communication. GPRS provides a fair speed of data transfer while using unused Time Division Multiple Access (TDMA) channels in the GSM system.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;In GPRS Technology, a user is assigned, during a session, to one pair of up-link and down-link frequency channels. Packet mode communication makes it possible for many users to share the same frequency channel. Corresponding to a GSM time slot, these packets have constant length. The down-link in GPRS uses first-come first-served packet scheduling.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Logical Architecture of GPRS: &lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;GPRS network is composed of the following network nodes:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Gateway GPRS Support Node:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The GGSN provides the facility of interworking with external Packet Data Networks (PDNs). It can be linked to one or several data networks. Via IP-Based GPRS backbone network, it is connected with SGSNs. The GGSN is a router that forwards incoming packets from the external PDN to the Serving GPRS Support Node (SGSN) of the addressed Mobile Stations (MS). It is also responsible for forwarding outgoing packets to the external PDN. An example of a PDN is the Internet network.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Serving GPRS Support Node:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The SGSN node is basically responsible for serving the Mobile Station (MS), and MS is responsible for GPRS Mobility Management (GMM). It delivers packets to the MS and communicates with the Home Location Register (HLR) to fetch the GPRS user profile. It manages the registration of the new mobile users in order to keep a record of their Location Area (LA) for routing purposes. The SGSN may be found connected to one or several Base Station Systems (BSSs).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Equipment Identity Register:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Equipment Identity Register is a central anti-fraud database which validates the IMEI number as calls are made on the Mobile network.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Mobile Switching Center/Visitor Location Register:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The MSC coordinates the setting up of calls to and from GSM users and manages GSM mobility. The MSC is not directly involved in the GPRS network. It forwards circuit-switched paging for the GPRS-attached MSs to the SGSN when the Gs interface is present.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The Gs Interface is a GPRS interface which is located between the SGSN (Serving GPRS Support Node) and the MSC (Mobile Switching Centre).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Base Station System:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The BSS ensures the radio connection between the mobile and the network. It is responsible for radio access management. The BSS is composed of two elements: the Base Transceiver Station (BTS) and the Base Station Controller (BSC). The BTS integrates all the radio transmission and radio reception boards, while BSC is responsible for the management of the radio channels. The BSC has switching capabilities that are used for circuit-switched calls and can also be used for GPRS traffic.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Home Location Register:&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;HLR is a Database in a cellular network that contains subscriber information. It is the functional unit responsible for managing mobile subscribers.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Services Offered by GPRS:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GPRS upgrades GSM data services with access of:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Push to talk over Cellular PoC / PTT&lt;/li&gt;&lt;li&gt;Wireless Application Protocol (WAP) for Palm/Hand held Devices&lt;/li&gt;&lt;li&gt;Short Message Service (SMS)&lt;/li&gt;&lt;li&gt;Multimedia Messaging Service (MMS)&lt;/li&gt;&lt;li&gt;Point-to-point (PTP) service&lt;/li&gt;&lt;li&gt;Internetworking with the Internet (IP protocols)&lt;/li&gt;&lt;li&gt;Instant Messaging and Presence&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Future Enhancements:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;GPRS id much flexible to add new functions, for example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;New accesses&lt;/li&gt;&lt;li&gt;More capacity&lt;/li&gt;&lt;li&gt;More users&lt;/li&gt;&lt;li&gt;New protocols&lt;/li&gt;&lt;li&gt;New radio networks etc.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4927073990021425188-3988150509801931502?l=newtecharticles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newtecharticles.blogspot.com/feeds/3988150509801931502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gprs-general-packet-radio-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/3988150509801931502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4927073990021425188/posts/default/3988150509801931502'/><link rel='alternate' type='text/html' href='http://newtecharticles.blogspot.com/2010/05/gprs-general-packet-radio-services.html' title='GPRS (General Packet Radio Services) Overview'/><author><name>Alda Alice</name><uri>http://www.blogger.com/profile/08180627028688499898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4927073990021425188.post-3279881717724068326</id><published>2010-05-18T02:18:00.001-07:00</published><updated>2010-05-18T02:18:46.549-07:00</updated><title type='text'>Embedded Programming - Overview</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse; line-height: 19px; "&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Before discussing the root article, Embedded Programming, Let us have a look on Embedded Systems.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Embedded Systems:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;Embedded Systems are commonly known as special-purpose computer systems which are designed for some specific function(s) to be performed, while interacting with some real-time computing constraints. These systems are usually embedded into another system where it performs more with the help of integration of other systems, peripheral devices, mechanical parts and micro controllers.&lt;br /&gt;As these systems are designed for specific tasks, their design, capability and performance can be enhanced or optimized by design engineers.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;These systems can be commonly found in digital watches and MP3 Players. On the other hand, with enhanced capabilities, these systems can also be found in controlling Nuclear Power Plants. Which means, these systems can be a single microcontroller chip or may be a large chassis with multiple units, peripheral devices and mechanical parts.&lt;br /&gt;Before dilating upon the topic in hand, it appears quite pertinent and even desirable to point-out at the outset that the term, ”Embedded System” is not an exactly defined term. For example, in palm devices or handheld computers, operating systems are powered by microprocessors, but these microprocessors are not truly embedded systems.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Embedded Systems are found in all aspects of modern life for example, in Telecommunication Systems, there are a lot of embedded systems from the telephone switches to mobile phones at end-users. Consumer electronics include Digital Cameras, PDAs, DVD Players and MP3 Players etc. Household appliances include washing machines, microwave ovens and other electronic devices. In the same way, there are many examples of Embedded Systems applications in all the fields like for example transportation means to medical equipments etc.&lt;br /&gt;In early 1960s, embedded systems have come down in price. So, we had first microprocessor Intel 4004, which was designed for calculators and other small systems but still required many external memory and support chips. In 1978 National Engineering Manufacturers Association (NEMA), released a "standard" for programmable microcontrollers. In the mid of 1980s, many external system components had been integrated into the same chip as the processor.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There will be hardly any exaggeration in it if we describe the characteristics of embedded systems as follows.&lt;br /&gt;1.Embedded systems are not always standalone devices.&lt;br /&gt;2.The program written for these systems are referred to as firmware and are stored in read-only mode in memory or flash disk, whatever is used to store data.&lt;br /&gt;3.These systems are designed to perform some specific task and function in contrast to general purpose computers which can perform multiple tasks at a time.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Embedded Programming:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;Embedded Programming is a bit different from ordinary programming a PC. You have to think at a lower level as you don’t have an operating system (unless you buy some and that will be expensive). The I/O lines are to be programmed by single instructions. The serial/Parallel/USB or any other port will need functions to read and write data. There is no BIOS present so no BIOS Calls are available. Many manufacturers have their sample work online for programming on-chip peripherals.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;If you are not using a real time operating system (RTOS), and you’re not writing your own pre-emptive multitasking kernal, then you will probably have a top-level sequencer loop.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;After compilation or assembling the program, object files are created. Object files are then linked to form a complete program which can be downloaded to the microcontroller or programmable chip. These program is form of Intel’s HEX format, which is just a binary format for binary files. These files are same as .exe files on PC. The bootloader in the program should be able to accept this file through one of the microcontroller’s serial ports, and load it into the program memory, which may be RAM, or preferable FLASH. There are many different binary file formats, but the two most common in embedded work are Intel Hex and Motorola S-Records. Larger 32-bit processors may use ELF, or COFF formats.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;There may be a simple loop which calls each module in turn, up to the most complex operating systems such as Windows NT or Linux! Let's describe these in turn starting from the simplest. All examples will be in C:&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;C Program:&lt;/b&gt; A Very Simple Main Loop:&lt;/p&gt;&lt;pre style="background-color: rgb(238, 238, 238); padding-top: 0.75em; padding-right: 1.5em; padding-bottom: 0.75em; padding-left: 1.5em; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); "&gt;VOID MAIN(VOID)  {      INT FLAG_KEY;      WHILE (FLAG_KEY == FALSE)      {          FLAG_KEY = GETCONTROL();          CONTROLWALK();          CONTROLTURN();          CONTROLSTOP();      }      POWEROFF();  }  &lt;/pre&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;The three modules are called as fast as the processor can spin round the while loop. The three modules just get the current Flag_key (command). Notice the Flag_key variable which is set by the GetControl() function. If there is a problem with the data, this allows the variable to be set to FALSE which will cause an emergency shutdown in the PowerOff() function.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Real Time Operating Systems (RTOS)&lt;/b&gt;&lt;br /&gt;The next most complicated step is to use a RTOS. These are available commercially and there are also a few public domain ones.&lt;br /&gt;The main function of the RTOS is to control what modules get called when. In RTOS terminology, the modules are called processes. This is the same as what the sequencers above were doing, but RTOSs allow a lot more flexibility. Common features of them include:&lt;br /&gt;&lt;b&gt;Pre-emptive multitasking:&lt;/b&gt;&lt;br /&gt;This means that a process may be running along happily, but when a more important process wants to run, it stops the first process and takes over until it has finished, whereupon the first process starts where it left off again.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Process priority setting:&lt;/b&gt;&lt;br /&gt;Each process can be assigned a priority, often from 0 to 255. If a lower priority process is running when a higher one wants to start, the low priority process is suspended until the higher one has finished (or until the higher one suspends waiting for something else).&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Inter process messaging:&lt;/b&gt;&lt;br /&gt;Each process can send and receive user-defined messages between each other. These may be in the form of queues, pipelines, or FIFO stacks. If a process is expecting a message but the message has not arrived yet, it can suspend on that message, This means it will stop running (thereby allowing other lower priority processes to run) until the message arrives. Processes can also suspend waiting to send a message to a process which has a full mailbox.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Full timing control:&lt;/b&gt;&lt;br /&gt;Each process can be set to run at regular intervals using timers. They can also use timers just to read, or to suspend on until the timer reaches some value. Any number of timers can be used because these are under software control of the RTOS, which uses the hardware timers to control them.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Interrupt control:&lt;/b&gt;&lt;br /&gt;The RTOS will generally take care of the hardware interrupt actions, making use of these rather easier.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Peripheral drivers:&lt;/b&gt;&lt;br /&gt;Some RTOSs include drivers for disc drives, FLASH memory, IIC devices, TCP/IP stacks, etc.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Now after a small discussion of RTOSs, Let’s now discuss Embedded Programming in the context of Software Engineering.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;&lt;u&gt;Embedded System’s Design Patterns:&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;One is the Data Stream and name of other one is state machine. Data Stream is good to use in digital signal processing where State machines are much suitable to re-active embedded systems such as user interfaces.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;&lt;b&gt;Data stream style:&lt;/b&gt;&lt;br /&gt;As the name describes, it’s a sequence of incoming data which is known as stream. Data Stream Style interacts with a data structure known as “QUEUE”. It reads the incoming data, processes it, exits and then new data is inserted into queue. It supervises the data that comes in regularly and must be processed on the fly.&lt;/p&gt;&lt;p style="margin-top: 0.5em; margin-bottom: 0.9em; color: rgb(47, 47, 47); "&gt;Lets’ have a workstation example. In workstation example, samples are to be processed over a given time interval. This data is received in form of a file and output is generated in a batch file. While talking about embedded systems, we must not only produce outputs in real time, but we also have to finish this job using minimum memory space.&lt;br /&gt;Another data structure named, Circular Buffer, is also used in this technique. The circular buffer is a data structure that enables us to handle streaming data in a good manner. Circular buffer stores a subset of the data stream. At each point in time, the 
