<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Martin Djernæs Web</title>
	<atom:link href="http://www.djernaes.dk/martin/feed" rel="self" type="application/rss+xml" />
	<link>http://www.djernaes.dk/martin</link>
	<description>Just another stop on the Super Information Gravel Road.</description>
	<lastBuildDate>Wed, 01 May 2013 05:26:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Girona</title>
		<link>http://www.djernaes.dk/martin/2013/04/17/girona</link>
		<comments>http://www.djernaes.dk/martin/2013/04/17/girona#comments</comments>
		<pubDate>Wed, 17 Apr 2013 15:30:49 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Creative Commons]]></category>
		<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Roadtrip]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=196</guid>
		<description><![CDATA[These beautiful houses are hanging over the edge of the Onyar river (Cases de l&#8217;Onyar) in the evening light. Girona has a long and interesting history which is very visible in the the old buildings and sights. License: CC-BY-NonComercial Being in Girona for a few days this was my second time, and last opportunity, to [...]]]></description>
				<content:encoded><![CDATA[<p>These beautiful houses are hanging over the edge of the Onyar river (Cases de l&#8217;Onyar) in the evening light. Girona has a long and interesting history which is very visible in the the old buildings and sights.</p>
<p style="text-align: center;"><a href="http://500px.com/photo/11298259"><img class="aligncenter" alt="Girona" src="https://lh4.googleusercontent.com/-vKWhIBEbbtI/T4c-21S5yfI/AAAAAAAADdw/FbWQKD641g4/s550/2011b01-1177.1200.jpg" width="550" height="367" /></a></p>
<p style="text-align: center;"><em>License: <a title="Create Commons by Attribution - NonCommercial" href="http://creativecommons.org/licenses/by-nc/3.0/">CC-BY-NonComercial</a></em></p>
<p><span id="more-196"></span>Being in Girona for a few days this was my second time, and last opportunity, to get to get the image. The previous time the image just didn&#8217;t quite have the right light.</p>
<p>This day we had been outside town during the day and I had planned to return in the evening to get this photo, but the travel took longer and I was late..</p>
<p>.. rushing to setup I quickly get the frame right (had decided that last time) and wanted to take a trail shot. To my horror there were a huge dust spec on the photo, the light is fading (well it is too dark to actually do much camera cleaning) and time is getting short. What to do? Well, I have up .. walked back to the hotel to clean the camera.</p>
<p>This image is the test shot (I removed the dust) and the best image I got from Onya river. I&#8217;m really pleased with the picture, but I should have continued to shoot and accept the flaw. A dusty picture is better than none.</p>
<p>&#8211;<br />
<em>Image used:<br />
</em><em id="__mceDel">- <a href="http://portlandvelospain2013.com/">portlandvelospain2013.com</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2013/04/17/girona/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Website was down</title>
		<link>http://www.djernaes.dk/martin/2012/11/09/website-was-down</link>
		<comments>http://www.djernaes.dk/martin/2012/11/09/website-was-down#comments</comments>
		<pubDate>Fri, 09 Nov 2012 07:46:00 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=193</guid>
		<description><![CDATA[My website has not been updated in a long while, but it&#8217;s still there. In the last weeks (well, months) it has been down due to a server outage and upgrade of the tools. It&#8217;s not (mostly) back up, expect for the images.]]></description>
				<content:encoded><![CDATA[<p>My website has not been updated in a long while, but it&#8217;s still there. In the last weeks (well, months) it has been down due to a server outage and upgrade of the tools. It&#8217;s not (mostly) back up, expect for the images.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2012/11/09/website-was-down/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Never use PureSync</title>
		<link>http://www.djernaes.dk/martin/2011/01/24/never-use-puresync</link>
		<comments>http://www.djernaes.dk/martin/2011/01/24/never-use-puresync#comments</comments>
		<pubDate>Mon, 24 Jan 2011 23:26:51 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Jumping Bytes]]></category>
		<category><![CDATA[PureSync]]></category>
		<category><![CDATA[Sync]]></category>
		<category><![CDATA[warning]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=187</guid>
		<description><![CDATA[It is not often that I find it important to write any warnings, but I started to use the program PureSync (version 2.8.1) Â from Jumping Bytes Software. At first it seemed as a really good idea. The free version could react on file changed and push a new copy to a &#8220;sync dir&#8221; and it [...]]]></description>
				<content:encoded><![CDATA[<p>It is not often that I find it important to write any warnings, but I started to use the program PureSync (version 2.8.1) Â from <a title="Junping Bytes Software" href="http://www.jumpingbytes.com/">Jumping Bytes Software</a>. At first it seemed as a really good idea. The free version could react on file changed and push a new copy to a &#8220;sync dir&#8221; and it even could delay deletions for a while to be able to access a file which should not have been deleted for a while.</p>
<p><span id="more-187"></span></p>
<p>But I guess when things are too good to be true then that is exactly what they are &#8211; too good to be true. I found that files wereÂ corruptedÂ on copy. At first I thought I was wrong &#8211; the date and file size was all right, but the files could not be read. This happened on large files and Â by far not for all files.</p>
<p>I contacted Jumping Bytes and they are not understanding why it can happen as they use a standard file copy API in Windows. Now IÂ trulyÂ believeÂ them and can feel theirÂ frustration they must feel, but lots of my files were corrupted.Â TotalCommander (good old friend) helped me fix this by using binary compare &#8211; I almost could have copied them all again.</p>
<p>Before contacting Jumping Bytes I did a test to verify the size of the problem and here is what I wrote them:</p>
<blockquote><p>I copied the same 61 files to the local disk (c:\temp\) and this time<br />
I get 11 errors (Explore and Binary compare agree). On local disk I<br />
then did a &#8220;Synchronize Selected files&#8221; to Folder 2 of the 11 failing<br />
and this time the binary compare gives me 5 failing. This time I do<br />
the same with the 5 and I get 2 failing. Next time 1 <img src='http://www.djernaes.dk/martin/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p></blockquote>
<p>Today it is 3 weeks since I contacted Jumping Bytes and there is no update on the issue. I&#8217;ve deinstalled PureSync and I guess I&#8217;ll be a bit more careful about what I use next time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2011/01/24/never-use-puresync/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funny Coincidence</title>
		<link>http://www.djernaes.dk/martin/2010/12/20/funny-coincidence</link>
		<comments>http://www.djernaes.dk/martin/2010/12/20/funny-coincidence#comments</comments>
		<pubDate>Mon, 20 Dec 2010 10:19:07 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[New York]]></category>
		<category><![CDATA[Picture]]></category>
		<category><![CDATA[TechCrunch]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=175</guid>
		<description><![CDATA[I was sitting reading TechCrunch today and suddenly I just had to stop. There, on the TechCrunch page, was a funny sign talking about taking the air out of the tires I don&#8217;t know what it has to do with net neutrality, but what made me stop was a picture we took in New York [...]]]></description>
				<content:encoded><![CDATA[<p>I was sitting reading TechCrunch today and suddenly I just had to stop. There, on the TechCrunch page, was a funny sign talking about taking the air out of the tires</p>
<p>I don&#8217;t know what it has to do with net neutrality, but what made me stop was a picture we took in New York when we were there in 2008. Sure it is NY and anyone can post a picture which TC can used, so it is maybe not really that unlikely, but I still find if funny that they happened to use the same motive.</p>
<p>Not the same angle, but if this is not the same sign I&#8217;ll be more than amazed.</p>
<p><img class="alignnone size-full wp-image-179" title="TechChrunch" src="http://www.djernaes.dk/martin/wp-content/uploads/2010/12/techcrunch-img2.jpg" alt="TechChrunch" width="330" height="287" /> <img class="alignnone size-full wp-image-177" title="Air will be taken out of tires" src="http://www.djernaes.dk/martin/wp-content/uploads/2010/12/2008a02-2034.jpg" alt="Air will be taken out of tires" width="287" height="287" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/12/20/funny-coincidence/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Voice and PBX</title>
		<link>http://www.djernaes.dk/martin/2010/11/16/google-voice-and-pbx</link>
		<comments>http://www.djernaes.dk/martin/2010/11/16/google-voice-and-pbx#comments</comments>
		<pubDate>Tue, 16 Nov 2010 20:01:31 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Google Voice]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=165</guid>
		<description><![CDATA[Many people are interested in using Google Voice together with a software PBX and there is an option. Google Voice let you forward your voice to a gmail chat account (the one with the same user id as Google Voice). Now this isÂ interestingÂ as with the right software you can integrate it via the Jabber/Xmpp. PBXes [...]]]></description>
				<content:encoded><![CDATA[<p>Many people are interested in using Google Voice together with a software PBX and there is an option. Google Voice let you forward your voice to a gmail chat account (the one with the same user id as Google Voice). Now this isÂ interestingÂ as with the right software you can integrate it via the Jabber/Xmpp.</p>
<p><a href="http://www3.pbxes.com/community.php?display=forum&amp;news=1">PBXes</a> has done it and there is talk that <a href="http://blog.polybeacon.com/2010/10/17/asterisk-1-8-and-google-voice/">Asterisk 1.8</a> will do it <img src='http://www.djernaes.dk/martin/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I&#8217;ve not tried any of them, but it sure sounds good &#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/11/16/google-voice-and-pbx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SMS HowTo</title>
		<link>http://www.djernaes.dk/martin/2010/09/21/sms-howto</link>
		<comments>http://www.djernaes.dk/martin/2010/09/21/sms-howto#comments</comments>
		<pubDate>Tue, 21 Sep 2010 10:17:26 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[sms]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=149</guid>
		<description><![CDATA[You might have been thinking &#8211; damn! why does he not post that SMS article as well .. well here it is. Hope you enjoy it. &#8220;How to send a SMS message to a mobile phone using a dial up connection to a gateway.&#8221; Some of you might already know it, but I use to [...]]]></description>
				<content:encoded><![CDATA[<p>You might have been thinking &#8211; damn! why does he not post that SMS article as well .. well here it is. Hope you enjoy it.</p>
<hr /><strong>&#8220;How to send a SMS message to a mobile phone using a dial up connection to a gateway.&#8221;</strong></p>
<p><span id="more-149"></span>Some of you might already know it, but I use to have a <a href="smservice.html">Windows 3.1 program</a> and a <a href="smservice20.html">Win32 library</a> for sending <a href="sms.html">SMS messages</a> from a Windows machine to a GSM cell phone, using gateways provided by the different telecoms.</p>
<p>Due to many factors, I&#8217;m not able to keep the work on these programs up to date, and due to the use of (customized) <a href="http://www.turbopower.com/products/apro/">AsyncPro components</a>, I can not make (the full) source public. Instead of providing source, I will try to describe the very simple process of building and sending the messages.</p>
<p><strong>UCP / ERMES / ETS 300 133-3</strong></p>
<p>The protocol used for sending messages via a dial-up link is actually a subset of the ETSI specification ETC 300 133-3<a href="#1">[1]</a><a href="#2">[2]</a>. This specification covers a protocol that is (was?) a part of the ERMES pager network. In the specifications there is a sub section covering a so-called Universal Computer Protocol (UCP), which is what actually is used for this simple communication.</p>
<p>The protocol is basically a very simple ACK/NAK protocol, where the initiator (you) sends a message and receive a response informing you the request was accepted or not. The initiator does not have to be the one actually dialing up to the service center (or gateway), but in this type of applications this is usually the case.</p>
<p>At this point, you will need to establish a modem (or ISDN) connection to a service center using 8 data bits, No parity and 1 stop bit (8N1). How to do that is outside the scope of this document.</p>
<p>The messages in UCP have the great advantage almost only to consist of readable characters, which make debugging significant easier. There are two control (non readable) characters &#8211; the STX (Start of TeXt or 2 hex) and ETX (End of TeXt or 3 hex) characters &#8211; which are used to frame each message. When creating a message, each field inside the message is separated with the separator character, the forward slash <tt>'/'</tt>.</p>
<p>When building messages, all messages will have the following blocks:</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> STX   HEADER   MESSAGE   CHECKSUM   ETX </tt></pre>
</td>
</tr>
</tbody>
</table>
<p><strong>Header</strong></p>
<p>The header consist of the following fields:</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> TRN   LEN   O/R   OT </tt></pre>
</td>
</tr>
</tbody>
</table>
<pre><tt>o  </tt>TRN - Transaction Number</pre>
<p>The transaction number is a unique id generated by the sender. The value must be in the range of 0 to 99. It should be transmitted as two ascii character (e.g. <tt>'20'</tt>).</p>
<pre><tt>o  </tt>LEN - Length</pre>
<p>The length is the total length, in octets (characters), between STX and ETX. This is including the header, the separators and the checksum field (but not including the STX and ETX characters). It should be transmitted as five ascii characters, prepended with zeros as needed (e.g. <tt>'00036'</tt>).</p>
<pre><tt>o  </tt>O/R - Operation / Result</pre>
<p>This is an indication to mark the message as an operation (e.g. a new message being send) or as a Result (e.g. the answer &#8211; ACK or NAK &#8211; from the other side, telling if the message was accepted or not). It should be transmitted as the single ascii character <tt>'O'</tt> or <tt>'R'</tt> (upper case).</p>
<pre><tt>o  </tt>OT - Operation Type</pre>
<p>As in any other protocol, UCP can have multiple message formats (or message types). It should be transmitted as two ascii characters (e.g. <tt>'30'</tt>).</p>
<p><strong>Checksum</strong></p>
<p>The checksum is the 8 LSB (least significant bits) of a simple addition of all octets (note that a message type <tt>'30'</tt> is two octets with the values 33 hex and 30 hex) following the STX character and until the checksum field. Note that all separators will be included in the checksum, but the STX, checksum and the ETX will not be included.</p>
<p><strong>Example</strong></p>
<p>Before we continue to the message format, let&#8217;s look at a simple request for sending the message <em>&#8216;Hello World&#8217;</em> from <em>&#8217;87654321&#8242;</em> to <em>&#8217;12345678&#8242;</em>.</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td class="wonb">
<pre><tt> [02]01/00064/O/30/12345678/87654321////////48656C6C6F20576F726C64/C2[03]</tt></pre>
</td>
</tr>
</tbody>
</table>
<p>We can see from this message, that the transaction number is 01 (I have avoided to use zero, but it&#8217;s not said that zero is illegal). Further we can see that the message is 64 octets long &#8211; this is excluding STX ([02]) and ETX ([03]) &#8211; it&#8217;s an operation and the message type is <tt>'30'</tt>. Finally we see that the checksum have been calculated to be C2 hex or 194.</p>
<p><strong>Before we continue</strong></p>
<p>As always every implementation should be prepared to send certain standard error messages. For me this proved it&#8217;s value when the German mobile phone provider Mannesmann (now Arcor) changed their implementation from &#8220;rev. 1&#8243; to &#8220;rev. 2&#8243;. Since I responded in the expected fashion with an error message saying that I didn&#8217;t recognize the message, they would fall back to &#8220;rev. 1&#8243; type messages.</p>
<p><strong>Acknowledgements</strong></p>
<p>An acknowledgement, positive or negative, does always contain the same operation type (OT) and transaction number (TRN) as the message which it&#8217;s responding to. The operation type (O/R) is always set to <tt>'R'</tt> (for response).</p>
<p>For negative acknowledgements the format is almost always the same. In some cases of &#8220;rev. 2&#8243; messages, the format is, like the positive acknowledgements, dependant on the incoming message, but the &#8220;standard&#8221; error message is always the same.</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> NAC   EC   SM </tt></pre>
</td>
</tr>
</tbody>
</table>
<pre><tt>o  </tt>NAC - Not acknowledged (Mandatory)</pre>
<p>Always the <tt>'N'</tt> character</p>
<pre><tt>o  </tt>EC - Error Code (Mandatory)</pre>
<p>This is an error code, transmitted as two ascii characters. The one saving me was <tt>'03'</tt> &#8211; Operation not supported. Two other very interesting ones: <tt>'01'</tt> &#8211; Checksum error and <tt>'02'</tt> &#8211; Syntax error. The rest can be found in the ETSI standard.<a href="#1">[1]</a><a href="#2">[2]</a></p>
<pre><tt>o  </tt>SM - System Message (Optional)</pre>
<p>A system message containing alphanumeric letters, encoded as IA5 (see later) characters.<a href="#3">[3]</a></p>
<p>If we look at the following example below we see that it&#8217;s a response to the transaction <tt>'01'</tt>, it&#8217;s negative and the error code is <tt>'03'</tt>, which is &#8216;Operation not supported&#8217;, and the message have been truncated for display purpose.</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td class="wonb">
<pre><tt> [02]01/00098/R/30/N/03/534D53657276 ... 74797065/0B[03]</tt></pre>
</td>
</tr>
</tbody>
</table>
<p><strong>Message Transfer Operation (30)</strong></p>
<p>When you want to send a message, you should use the message type <tt>'30'</tt> called &#8220;SMS Message Transfer Operation&#8221;.</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> AdC   OAdC   AC   NRq   NAd   NPID   DD   DDT   VP   AMsg </tt></pre>
</td>
</tr>
</tbody>
</table>
<pre><tt>o  </tt>AdC - Address Code, Recipient (Mandatory)</pre>
<p>This is the phone number of the receiver. Normally this would be the number as you dial it on the phone (note that the number is as the gateway expect to see the number). As an example I can mention the number of a German mobile phone, reached via a Danish gateway. Here you must display the number as <em>&#8217;00491724504232&#8242;</em>. Note that &#8217;00&#8242; is the international access code from Denmark. &#8217;49&#8242; is the Germany international code. &#8217;172&#8242; is the &#8220;area code&#8221; (excluding the leading zero) for the German network, and &#8217;4504232&#8242; is the phone number. If you want to use a French gateway you should most likely use &#8217;019&#8242; as the international access code from France! Usually you can leave the international stuff away if you want to reach a phone local to the gateway (use &#8217;01724504232&#8242; if you want to reach the above phone via a German gateway). Note that this number scheme is use all places where we referee to a phone number or address.</p>
<p>Only numeric &#8220;characters&#8221; are allowed &#8211; to &#8216;+&#8217; is also not allowed!</p>
<pre><tt>o  </tt>OAdC - Originator Address Code, Sender. (Optional)</pre>
<p>This is the phone number of the sender. My experience shows that the providers treat this field transparently, and the number is used on the mobile phone to display the sender (a random code could be used!).</p>
<p>Only numeric &#8220;characters&#8221;.</p>
<pre><tt>o  </tt>AC - Authentication Code (Optional)</pre>
<p>Leave empty.</p>
<p>Characters.</p>
<pre><tt>o  </tt>NRq - Notification Request (Optional).</pre>
<p>Empty or ascii <tt>'1'</tt>. If set to one, the gateway will respond with a notification message, containing a response, from the system, to the request. This message is usually a text string in the language used in the country where they gateway is present. There will be no numeric codes to translate into &#8220;local&#8221; languages.</p>
<pre><tt>o  </tt>NAd - Notification Address (Optional)</pre>
<p>Leave empty &#8211; honestly this is most likely some kind of address where it can reach you with the notification (which you just requested in the previous field), but I have always kept it empty.</p>
<p>Only numeric &#8220;characters&#8221;.</p>
<pre><tt>o  </tt>NPID - Notification PID value (Optional)</pre>
<p>This should be a value (only numeric characters) that identifies the notification, but unfortunately we don&#8217;t get it back with the notification so just leave it empty.</p>
<pre><tt>o  </tt>DD - Deferred Delivery (Optional)</pre>
<p>Empty or ascii <tt>'1'</tt>. If set to <tt>'1'</tt> the message will not be delivered right away, but deferred until later (see next field).</p>
<pre><tt>o  </tt>DDT - Deferred Delivery Time (Optional)</pre>
<p>This is the time at which the message should be delivered. The format is 10 ascii numbers in the format YYMMDDhhmm. It can also be left empty.</p>
<pre><tt>o  </tt>VP - Validity Period (Optional)</pre>
<p>This is the time at which the message will expire. Formatted as the Deferred Delivery Time.</p>
<pre><tt>o  </tt>AMsg - A Message (optional)</pre>
<p>Finally the message encoded as IA5 (see later) characters<a href="#3">[3]</a>.</p>
<p>So this was the message transfer format &#8211; let&#8217;s look at the previous example:</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td class="wonb">
<pre><tt> [02]01/00064/O/30/12345678/87654321////////48656C6C6F20576F726C64/C2[03]</tt></pre>
</td>
</tr>
</tbody>
</table>
<p>We already know that <tt>'01/00064/O/30/'</tt> is the header and <tt>'/C2'</tt> is the checksum. <em>&#8217;12345678&#8242;</em> is then the address of the recipient, <em>&#8217;87654321&#8242;</em> the address of the originator and &#8217;48656C6C6F20576F726C64&#8242; the message in IA5 format.</p>
<p>So when we now transmit the above message to the gateway, we must way for the gateway to answer with an acknowledgement &#8211; positive or negative. The negative format we already know and in this case the positive acknowledgement have the following format.</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> ACK   MVP   SM </tt></pre>
</td>
</tr>
</tbody>
</table>
<pre><tt>o  </tt>ACK - Acknowledged (Mandatory)</pre>
<p>The ACK field is the letter <tt>'A'</tt>.</p>
<pre><tt>o  </tt>MVP - Modified Validity Period (Optional)</pre>
<p>This is time at which the gateway will expire the message, if it&#8217;s not delivered before that. The format is the same as the DDT in the Message transfer.</p>
<pre><tt>o  </tt>SM - System Message</pre>
<p>A system message containing alphanumeric letters, encoded as IA5 (see later) characters<a href="#3">[3]</a>.</p>
<p>This is (almost) enough to send a SMS message, and to know if the message was accepted for delivery of if it was rejected by the gateway. The state machine used for sending, retransmitting etc. is left as an exercise.</p>
<p>Did that person actually receive the message? Often we would like to know a little more about the delivery, so we often use the Notification Request (NRq) in the message transfer. If we set the NRq flag, and the modem/ISDN/serial connection is still available, the gateway will respond with a call input operation.</p>
<p><strong>Call Input Operation (01)</strong></p>
<p>When you receive the call input operation, the message will have the message type &#8217;01&#8242; and the following format.</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> AdC   OAdC   AC   MT</tt></pre>
</td>
</tr>
</tbody>
</table>
<pre><tt>o  </tt>AdC - Address Code, recipient (Mandatory)</pre>
<p>You know, just like on the message transfer.</p>
<pre><tt>o  </tt>OAdC - Address Code, originator (Optional)</pre>
<p>You know, just like on the message transfer (actually the sender of the SMS message and not the sender of the system message).</p>
<pre><tt>o  </tt>AC - Authentication Code, originator (optional)</pre>
<p>Leave empty, just like in the message transfer.</p>
<pre><tt>o  </tt>MT - Message Type (Mandatory)</pre>
<p>The message type following this message header:</p>
<p>- <tt>'2'</tt> mean a numeric message. (NMsg)</p>
<p>- <tt>'3'</tt> a string (AMsg)</p>
<p>- <tt>'4'</tt> a &#8220;transparent data message&#8221; (NB/TMsg) (never used this)</p>
<p>NMsg is a sequence of numbers.</p>
<p>AMsg is a sequence of alphanumeric letters, encoded as IA5<a href="#3">[3]</a>.</p>
<p>Let&#8217;s look at an alphanumeric example.</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td class="wonb">
<pre><tt> [02]00/00256/O/01/12345678/00491724504232//3/
 4D65737361676520666F722030303439313732343530343233322C2077697468206964
 656E74696669636174696F6E2039393130313232333231333020686173206265656E20
 64656C697665726564206F6E20313939392D31302D31322061742032333A32313A3335
 2E/72[03]</tt></pre>
</td>
</tr>
</tbody>
</table>
<p>The header is <tt>'[02]00/00256/O/01/'</tt> and the checksum is <tt>'/72[03]'</tt>. The recipient is <em>&#8217;12345678&#8242;</em>, the originator is <em>&#8217;00491724504232&#8242;</em>, there is no authentication and the message type is <tt>'3'</tt>. The message itself is an IA5 encoded string.</p>
<p>If the operation isn&#8217;t acknowledged, positive or negative, most systems will try for quite a while to retransmit the message, therefore always remember to acknowledge all messages &#8211; and the ones you don&#8217;t know should be acknowledged negatively with &#8216;Operation not supported&#8217;.</p>
<p>Positive acknowledgement is done with a very simple message</p>
<table border="1" cellspacing="0" cellpadding="2" width="80%">
<tbody>
<tr>
<td class="wonb">
<pre><tt> ACK   SM</tt></pre>
</td>
</tr>
</tbody>
</table>
<pre><tt>o  </tt>ACK - Acknowledge (Mandatory)</pre>
<p>The letter &#8216;A&#8217; to acknowledge the message.</p>
<pre><tt>o  </tt>SM - System Message (Optional)</pre>
<p>A system message encoded as an IA5 string<a href="#3">[3]</a>.</p>
<p><strong>IA5</strong></p>
<p>You have seen this multiple times now, the IA5 encoding of strings. IA5 is defined by ETS 300 133-2<a href="#3">[3]</a> appendix B2. It&#8217;s a seven bit encoding of letters roughly matching the one of ascii characters. The lower 32 characters in the in the IA5 table is used for country specific characters (and don&#8217;t expect all countries to use the same tables!!!). Let&#8217;s just make it simple and say that &#8217;0&#8242; to &#8217;9&#8242;, &#8216;A&#8217; to &#8216;Z&#8217; and &#8216;a&#8217; to &#8216;z&#8217; are placed identically to where the ascii characters are placed. This result in &#8217;0&#8242; being equal to &#8217;30 hex&#8217;, &#8216;A&#8217; being equal to &#8217;41 hex&#8217; and finally &#8216;a&#8217; being equal to &#8217;61 hex&#8217;.</p>
<p>When encoding these characters in IA5, the 3 MSB is taken and displayed as an ascii value. For &#8217;0&#8242; the 3 MSB of the 7 bit value is &#8217;3&#8242;. This rest, the 4 LSB, is &#8217;0&#8242;. This gives the output &#8217;30&#8242; in ascii characters.</p>
<p>If we look at the message type <tt>'30'</tt> we were sending above, the message string was <tt>'48656C6C6F20576F726C64'</tt>. Let&#8217;s decode that one.</p>
<p>The first two characters is &#8217;4&#8242; and &#8217;8&#8242;. This gives the hex value &#8217;48&#8242;. If &#8216;A&#8217; is &#8217;41&#8242;, &#8217;48&#8242; will be the eights letter &#8230; &#8216;H&#8217;. The next to characters is &#8217;65&#8242;, which turn out to be fifth lower case letter &#8216;e&#8217;. The complete string can be decoded in this fashion, and much to our surprise the string becomes <em>&#8216;Hello World&#8217;</em>.</p>
<p><strong>Anything else?</strong></p>
<p>This is enough for being able to create, transmit and receive SMS messages via a service center gateway. There are more message types, with more functions declared in both revision one and two. You should especially notice that revision two depend on detecting revision implementations by expecting the implementation to answer with the standard &#8220;Operation not supported&#8221; NAK message.</p>
<p>Another protocol, called the &#8220;Telocator Alphanumeric Protocol&#8221;<a href="#4">[4]</a>, covers basically the same functionality. A large difference between the UCP approach and the TAP approach is the more &#8220;protocol like&#8221; functionality of UCP and the ability of TAP to run as terminal as well as automatic transfer protocol.</p>
<p><strong>Finally</strong></p>
<p>I hope that this will aid in creating applications using SMS as a media. I created the first program as an exercise for myself as well as to fill a hole. Today the hole seems mostly in aiding developers in using the functionality in automated systems, and not so much in human communication. Good luck.</p>
<p><strong>&#8211;</strong></p>
<p><a name="1"></a><a href="http://pda.etsi.org/pda/home.asp?wki_id=352">http://pda.etsi.org/pda/home.asp?wki_id=352</a></p>
<p><a name="2"></a><a href="http://pda.etsi.org/pda/home.asp?wki_id=2961">http://pda.etsi.org/pda/home.asp?wki_id=2961</a></p>
<p><a name="3"></a><a href="http://pda.etsi.org/pda/home.asp?wki_id=348">http://pda.etsi.org/pda/home.asp?wki_id=348</a></p>
<p><a name="4"></a><a href="http://www.pcia.com/WirelessCenter/protocol/tapv1p8/openviro.htm">http://www.pcia.com/WirelessCenter/protocol/tapv1p8/openviro.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/09/21/sms-howto/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>programs</title>
		<link>http://www.djernaes.dk/martin/2010/09/14/programs</link>
		<comments>http://www.djernaes.dk/martin/2010/09/14/programs#comments</comments>
		<pubDate>Tue, 14 Sep 2010 20:01:53 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=143</guid>
		<description><![CDATA[It was back in October 2002 I last published this page. Some people are still asking for these tools, so here they are for you to use. SMSTools10.zip WIN95/NT40 SMSTools v. 1.0 (903k) (2002-03-21) (FW) This is a collection of small SMS programs. It&#8217;s free, but don&#8217;t expect any updateds/source/support etc. If you like it, [...]]]></description>
				<content:encoded><![CDATA[<p>It was back in October 2002 I last published this page. Some people are still asking for these tools, so here they are for you to use.</p>
<p><span id="more-143"></span></p>
<table border="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/smstools10.zip">SMSTools10.zip</a></p>
<p><a class="silent" href="/download/smstools10.zip"><img src="/graphics/sms.gif" border="0" alt="DnLoad" width="42" height="32" /></a></p>
<p>WIN95/NT40</td>
<td><strong>SMSTools v. 1.0</strong> (903k) (2002-03-21) (FW)</p>
<p>This is a collection of small SMS programs. It&#8217;s free, but don&#8217;t expect any updateds/source/support etc. If you like it, use it. If you don&#8217;t like it, delete it.I finally made this collection avalible after lot&#8217;s of questions about the avalibility of such tools, but as I said, expect no support &#8211; I don&#8217;t have enough time for that.</td>
</tr>
<tr>
<td>
<hr size="2" /></td>
<td>
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="jpegdate"></a><a href="/download/jpegdate14.zip">JpegDate14.zip</a></p>
<p><a class="silent" href="/download/jpegdate14.zip"><img src="/graphics/jpegdate.gif" border="0" alt="DnLoad" width="46" height="48" /></a></p>
<p>WIN95/NT40</p>
<p><a href="/download/jpegdate14src.zip">Delphi Source</a></td>
<td><strong>JpegDate v. 1.4</strong> (40k) (2002-10-24) (FW)</p>
<p>This program let you rename your digital pictures, taken with a digital camera,<br />
to a file name contaning the date which you actually took the picture. Yes you can<br />
do that, since a sub format under Jpeg let the camera store additional information<br />
inside the picture.You can read more about my &#8220;journey&#8221; into the information stored in a jpeg file on<br />
my <a href="jpeginfo.html">Jpeg Info</a> page.</td>
</tr>
<tr>
<td>
<hr size="2" /></td>
<td>
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/decsep14.zip">DECSEP14.ZIP</p>
<p></a><a class="silent" href="/download/decsep14.zip"><img src="/graphics/decimal.gif" border="0" alt="DnLoad" width="37" height="32" /></a></p>
<p>WIN95/NT40</td>
<td><strong>Decimal v. 1.4</strong> (23k) (050298) (FW)</p>
<p>This program offer the ability to change the character used as decimal separator on the numeric keyboard. The default character is a comma, and it can the be changed into a punktuation when toggling the character.</p>
<p>The program put itself into the Win95/NT40 tray, and offer beside the access through this icon also a &#8220;quick change&#8221; key combination.</p>
<p><span class="info">New:</span> Version 1.4 Remember its last setting by startup.</p>
<p>Language : English.</p>
<p><span class="warn">WARNING:</span> I have had quite a lot of people who really wanted to use this nice utility,<br />
but ran into exceptions etc. when using it. I&#8217;m of cource very sorry to hear<br />
this, but do not have a solution at the moment. The problem does only occur<br />
together with some programs, so I will really suggest, if you would<br />
like to use the program, that you test it without any vital data and<br />
only use it if it works for you!</p>
<p>I have positive responce about using it with AutoCad, but negative<br />
with Pro Engineer.</td>
</tr>
<tr>
<td>
<hr size="2" /></td>
<td>
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/sms.zip">SMS.ZIP</a></p>
<p><a class="silent" href="/download/sms.zip"><img src="/graphics/smservice.gif" border="0" alt="DnLoad" width="53" height="48" /></a></p>
<p>WIN3.1x</td>
<td><strong><a href="smservice.html"><em>SMService v. 1.03</em></a></strong> (322k) (120996) (FW/Demo)<br />
This is a Windows program to send messages via the Short Message Service, which the thelephone companies in Denmark are offering.</p>
<p>The current version is 1.03 (also found on some BBS&#8217;s as SMS103.ZIP).</p>
<p>Language : Danish.</p>
<p>See also : <a href="http://www.mobilkom.interface.no/guide/person/ermes.html" target="_top">A ERMES page</a></td>
</tr>
<tr>
<td>
<hr size="2" /></td>
<td>
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/text105e.zip">TEXT105E.ZIP</a></p>
<p><a class="silent" href="/download/text105e.zip"><img src="/graphics/text.gif" border="0" alt="DnLoad" width="22" height="47" /></a></p>
<p>WIN95</td>
<td><strong>Text editor v. 1.0.5.14</strong> (197k) (011098) (FW)</p>
<p>I needed more functions in my notepad, so I have made TEXT &#8211; a text editor.</p>
<p>The program is a Windows 95 program, and have options like Search, Incremental Search, Replace, Merge, Stay on top, convert to and from html chars etc. The help file is not avalible (but so what?), and the Print(er) function(s) is not there while my printer is (still) not working.</p>
<p>Language : English.</td>
</tr>
<tr>
<td>
<hr size="2" /></td>
<td>
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/miniinst.zip">MINIINST.ZIP</a></p>
<p><a class="silent" href="/download/miniinst.zip"><img src="/graphics/miniinst.gif" border="0" alt="DnLoad" width="50" height="49" /></a></p>
<p>WIN3.1x</td>
<td><strong>Mini Installation program. v. 1.0</strong> (93k) (120996) (FW)</p>
<p>Windows program for &#8220;copying&#8221; files to a dir on the HD, expanding compressed files and creating Program Manager groups.</p>
<p>Language : Custom (dafault : Danish).</td>
</tr>
<tr>
<td>
<hr size="2" /></td>
<td>
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/hammer.zip">HAMMER.ZIP</a></p>
<p><a class="silent" href="/download/hammer.zip"><img src="/graphics/hammer.gif" border="0" alt="DnLoad" width="32" height="32" /></a></p>
<p>AutoCad 12&lt; ?</td>
<td><strong>Hammer ver. 0.1</strong> (0,8k) (140297) (FW)</p>
<p>This is not really a program, and that is also the reasin why it is here in the bottom of the list of programs. It is a script-program for AutoCadÂ® (version 12 and bigger I think) which makes objects in a AutoCad drawing flat. I do not know much about AutoCad (and it is now a bit over a year since I worte the script), but a friend of mine is using it (he ordered it)!</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/09/14/programs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange IT politics</title>
		<link>http://www.djernaes.dk/martin/2010/09/14/strange-it-politics</link>
		<comments>http://www.djernaes.dk/martin/2010/09/14/strange-it-politics#comments</comments>
		<pubDate>Tue, 14 Sep 2010 08:10:19 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Government]]></category>
		<category><![CDATA[NemID]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=135</guid>
		<description><![CDATA[Ever since the net was new I have failed to understand that Denmark rejects to use a common suffix (like eg. .gov.dk or whatever they like) for all sites published and maintained by the government. So is danmark.dk a part of the government? What about nyidanmark.dk? Ok they are not difficult, but what about nemid.dk [...]]]></description>
				<content:encoded><![CDATA[<p>Ever since the net was new I have failed to understand that Denmark rejects to use a common suffix (like eg. .gov.dk or whatever they like) for all sites published and maintained by the government. So is <a href="http://www.danmark.dk" target="_blank">danmark.dk</a> a part of the government? What about <a href="http://www.nyidanmark.dk/" target="_blank">nyidanmark.dk</a>? Ok they are not difficult, but what about nemid.dk and netid.nu? Which one do you think is from the government?</p>
<p><span id="more-135"></span>In the danish newspapers there is right now an article where the stupid (sorry, but I hate that suffix) .nu domain is the official website from the danish government and not the more obvious .dk Â domain.</p>
<p><img class="aligncenter size-full wp-image-136" title="berlingske-20100914" src="http://www.djernaes.dk/martin/wp-content/uploads/2010/09/berlingske-20100914.jpg" alt="berlingske-20100914" width="500" height="71" /></p>
<p>So what is the big deal about you might ask! There are great many things where this is not really a big deal, but NemID is a central key server and login system for all communication with the government. You do your taxes this way, you can change your name this way and it is (or is going to be) the signature system the banks must use for your online banking!</p>
<p>I&#8217;m sure that there is a lot of really good people who has been working to make NemID as good and secure as possible and I do not blame them for not doing a good job solving the given task. While NemID does have other small issues I do believe that they have tried to hit a good middle ground between usability and security (disclaimer: I have not been evaluating the system as a whole so myÂ opinionÂ is based on generallyÂ availableÂ information).</p>
<p>What I find important is that the government assume that we trust their websites, but does not give way to know it is their page. I wish they would wake up <img src='http://www.djernaes.dk/martin/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/09/14/strange-it-politics/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VCL</title>
		<link>http://www.djernaes.dk/martin/2010/09/14/vcl</link>
		<comments>http://www.djernaes.dk/martin/2010/09/14/vcl#comments</comments>
		<pubDate>Tue, 14 Sep 2010 07:10:48 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[delphi]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=121</guid>
		<description><![CDATA[Still in the spirit of re-publishing some of my old information you can here find my VCL components. I last coded on this back in 2001 on Delphi 3 (afik) &#8211; you can download them and use them, but I can not help you with upgrading to newer versions of Delphi. Index: mdApps, IcmpApi, mdDrop, [...]]]></description>
				<content:encoded><![CDATA[<p>Still in the spirit of re-publishing some of my old information you can here find my VCL components. I last coded on this back in 2001 on Delphi 3 (afik) &#8211; you can download them and use them, but I can not help you with upgrading to newer versions of Delphi.<br />
<span id="more-121"></span></p>
<table border="0" cellpadding="1" width="100%">
<tbody>
<tr>
<td colspan="2" align="LEFT" valign="TOP"><strong>Index:</strong><span><br />
<a href="#mdApps">mdApps</a>, <a href="#IcmpApi">IcmpApi</a>, <a href="#TmdDrop">mdDrop</a>, <a href="#TmdTray">mdTray</a>, <a href="#TmdMailSlot">mdMailSlot</a>, <a href="#TmdSMS">mdSMS</a>, <a href="#TmdURLLabel">mdURLLabel</a>, <a href="#TmdSWLock">mdSWLock</a>, <a href="#CompDate">CompDate</a><br />
</span><br />
<hr /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="mdApps"></a><br />
<a href="/download/apps10.zip"><br />
Apps10.ZIP</a></p>
<p>Delphi 2.0 &amp; 3.0<strong>mdApps Demo</strong></p>
<p><a href="/download/appsdemo.zip">AppsDemo.ZIP</a></p>
<p>2K (src.)</td>
<td valign="TOP"><strong>Apps ver. 1.0</strong> (4K) (100498) (<a href="mdapps.html">FW src.</a>)</p>
<p>This is a file contaning two classes (<span class="compname">TmdApp</span> &amp; <span class="compname">TmdTrayApp</span>) which in itself is two small applications, which I use when I want to create small applications without using TApplication and TForm classes. The one class is a generic class with a window handle and messages dispatched to the class. The other class is a tray class, which I use when I want to create small tray applications. The tray class have functions to control the tray icon, and create the popup menu used over the tray.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="IcmpApi"></a><br />
<a href="/download/icmpapi.zip"><br />
IcmpApi.ZIP</a></p>
<p>Delphi 2.0 &amp; 3.0<strong>Icmp Demo</strong></p>
<p><a href="/download/icmpdemo.zip">IcmpDemo.ZIP</a></p>
<p>3K (src.)</td>
<td valign="TOP"><strong>IcmpApi</strong> (3K) (300198) (<a href="icmpapi.html">FW src.</a>)</p>
<p>This file is a transmation of the header files icmpapi.h and ipexport.h from Microsoft, and used for sending a Ping from a Delphi program.</p>
<p>See my <a href="icmp_info.html">Icmp Info page</a> for further information.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="TmdDrop"></a><br />
<a href="/download/drop12.zip"><br />
Drop12.ZIP</a></p>
<p><a class="silent" href="/download/drop12.zip"><img src="/graphics/tmddrop.gif" border="0" alt="DnLoad" width="62" height="58" /></a></p>
<p>Delphi 2.0 &amp; 3.0<strong>Drop Demo</strong></p>
<p><a href="/download/drp11dem.zip">DRP11Dem.ZIP</a></p>
<p>2K (src.)</td>
<td><strong>Drop ver 1.2</strong> (6K) (240398) (<a href="drop10.html">FW src.</a>)</p>
<p>The <span class="compname">TmdDrop</span> component offer the ability to accept drap&#8217;n'drop&#8217;s from explore. With this component you are able to make a form accept drag&#8217;n'drop&#8217;s or  one or more windows &#8211; all at the same time.</p>
<p>The component is build over a component called <a href="msgcmp12.html">TmdMsgComponent</a>. This component gives the ability to hook into the message stream (and react to these messages) of another window (ex. your mainform) without having to change the component. In this way the TmdDrop component can work together with any existing component with a handle.<span class="info">New :</span> <span class="compname">TmdTray</span> and <span class="compname">TmdDrop</span> is now using the same TmdMsgComponent class.</p>
<p><span class="info">Note :</span> The TmdMsgComponent (version 1.2) is included in the zip file.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="TmdTray"></a><br />
<a href="/download/tray14.zip"><br />
Tray14.ZIP</a></p>
<p><a class="silent" href="/download/tray14.zip"><img src="/graphics/tmdtray.gif" border="0" alt="DnLoad" width="62" height="58" /></a></p>
<p>Delphi 2.0 &amp; 3.0<strong>Tray Demo</strong></p>
<p><a href="/download/traydemo.zip">TrayDemo.ZIP</a></p>
<p>2K (src.)</td>
<td><strong>Tray ver 1.4</strong> (8K) (190898) (<a href="tray13.html">FW src.</a>)</p>
<p>The <span class="compname">TmdTray</span> component can add a icon in the tray &#8211; just like so many others. The reasons that I started on this component anyway, was:</p>
<ol type="1">
<li>The tray component which I were using were not able to update the icon in the tray, when I have changed it. Not even via a procedure call after the icon were changed. I desided that I wanted to make a tray component which easy could change the icon in the tray.</li>
<li>I have created a <a href="msgcmp12.html">TmdMsgComponent</a>, which were able to hook into the message stream for any window, and it this way able to hook into the message stream for a form (on what the component must be createt).</li>
</ol>
<p><span class="info">New :</span> In Version 1.4 I have added support for more than one tray component on one form.</p>
<p>Note : The TmdMsgComponent (version 1.2) is included in the zip file.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="TmdMailSlot"></a><br />
<a href="/download/mlslot1f.zip"><br />
MLSlot1F.ZIP</a></p>
<p><a class="silent" href="/download/mlslot1f.zip"><img src="/graphics/tmdmailslot15.gif" border="0" alt="DnLoad" width="91" height="58" /></a></p>
<p>Delphi 2.0, 3.0 &amp; 4.0<strong>MailSlot Demo</strong></p>
<p><a href="/download/mls11dem.zip">MLS11dem.ZIP</a></p>
<p>2K (src.)</p>
<p><strong>WinPopup Demo</strong></p>
<p><a href="/download/mls11wpd.zip">MLS11wpd.ZIP</a></p>
<p>3K (src.)</p>
<p><strong>SecureMail Demo</strong></p>
<p><a href="/download/mls15sec.zip">MLS15sec.ZIP</a></p>
<p>2K (src.)</p>
<p><strong>Binary Demo</strong></p>
<p><a href="/download/mls1dbin.zip">MLS1Dbin.ZIP</a></p>
<p>2K (src.)</td>
<td><strong>MailSlot ver 1.15</strong> (17k) (210498) (<a href="mlslot1f.html">FW src.</a>) (<a href="mlsred1f.html">ReadMe</a>)</p>
<p>With the components and functions in this package, you can send &#8220;messages&#8221; from one program to another, when you know the name of the mailslot which the other program supplies.</p>
<p>The <span class="compname">TmdMailSlot</span> component gives a possiblity to supplying a mailslot for other  programs to write to, and the SendToMailSlot function gives a client the option of writing in to the mailslot.</p>
<p>The messages can be send from one Win95/NT machine to another, or to all machines in a domain, which have the same mailslot open.</p>
<p>From version 1.1 it also includes a <span class="compname">TmdWinPopup</span> component, for recieving and/or sending standard messages over a Windows network.</p>
<p>For more information about mailslots and WinPopup messages, see my page about the <a href="winpopup.html">WinPopup</a> program.After several request for a demo program (three), and one who could not make the TmdWinPopup work &#8211; you can now download demo programs from here.</p>
<p><span class="info">New :</span> In version 1.15 tw memory leaks is removed &#8211; Thanks Don.</p>
<p>A lot have changed in version 1.12! First of all is the basic structure now more binary-message friendly <img src='http://www.djernaes.dk/martin/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , and beside this two new components (and more classes) are added. <span class="compname">TmdSafeMail</span> is a component doing basically the same as <span class="compname">TmdSecureMail</span>, but with a binary header instead of an ASCII header (reducing the header size to the half). Another new component is <span class="compname">TmdLongMail</span>. This component make it possible to send messages to domains and single machines with a length up to 65532 bytes.</p>
<p>Please see the <a href="mlslot1f.html">source</a> for a compleate list of changes, and the <a href="mlsred1f.html">ReadMe.txt</a> for a mini FAQ etc.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="TmdSMS"></a><br />
<a href="/download/mdsms10.zip"><br />
mdSMS10.ZIP</a></p>
<p><a class="silent" href="/download/mdsms10.zip"><img src="/graphics/tmdsms.gif" border="0" alt="DnLoad" width="50" height="49" /></a></p>
<p>Delphi 1.0</td>
<td><strong>SMS Component ver 1.0</strong> (31K) (180397) (SW)</p>
<p>Now I have a Delphi 1.0 component avalible, which can give you the possibility to send Short Messages (SMS) to GSM mobil phones (cell phones). It gives you all the functionality you need for sending messages. Just drag a component on to you form, select you modems port, set the recievers mobile number and type in a message via the TStrings property propertyeditor. Now all you need to do is to call the function &#8220;Send&#8221; from anywere in your program &#8211; easy isn&#8217;t it?</p>
<p>Price : 500,- DKK (Danish Kr.) incl. 25% moms/VAT (are you a company in another european contry, then you can get it for 400,- DKK excl. moms/VAT).Take a look at my <a href="sms.html"><em>SMService</em></a> page for a list of ERMES/UCP gateways, through which you can send messages.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="TmdURLLabel"></a><br />
<a href="/download/urllbl12.zip"><br />
URLLbl12.ZIP</a></p>
<p><a class="silent" href="/download/urllbl12.zip"><img src="/graphics/tmdurllabel.gif" border="0" alt="DnLoad" width="62" height="58" /></a></p>
<p>Delphi 2.0</p>
<p><strong>URLLabel Demo</strong></p>
<p><a href="/download/urldemo.zip">UrlDemo.ZIP</a></p>
<p>2K (src.)</td>
<td><strong>URL Label ver 1.2</strong> (5k) (051197) (<a href="urllbl12.html">FW src.</a>)</p>
<p>The <span class="compname">TmdURLLabel</span> is a label, which can look like a web link (including a web-hand as cursor) for http:// and mailto: prefixes. When a user clicks on the link, it also launches the default web browser on the page (the URL written by the label) or tries to send a e-mail (to the e-mail adresse written in the label) via MAPI.BTW: Dennis Powers were so nice to inform me (and now you) that you also can send a fax (when a MAPI fax service is installed) with the mailto: sequence &#8220;mailto:[fax:number]&#8221; &#8211; ex. mailto:[fax:12345678] sends a fax to 12345678.</p>
<p><span class="info">In version 1.2 it offers the URL as hint, for showing in a statusbar.</span></td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="TmdSWLock"></a><br />
<a href="/download/swlock12.zip"><br />
SWLock12.ZIP</a></p>
<p><a class="silent" href="/download/swlock12.zip"><img src="/graphics/tmdlockdemo.gif" border="0" alt="DnLoad" width="50" height="49" /></a></p>
<p>Delphi 1.0, 2.0 &amp; 3.0</td>
<td><strong>ShareWare Lock ver 1.2</strong> (132k) (261097) (FW)</p>
<p>This module is FreeWare on a need-to-know basis!.</p>
<p>This package contains a VCL lock, which when it is included in a VCL as a property will prevent a program from running when Delphi not is running, if the VCL not is registered.</p>
<p>The package also gives you the option of creating your own registration forms.<span class="info">Files for Delphi 1.0, 2.0 &amp; 3.0</span></td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a name="CompDate"></a><br />
<a href="/download/cdate13.zip"><br />
CDATE13.ZIP</a></p>
<p>Delphi 1.0, 2.0 &amp; 3.0</td>
<td><strong>Compiled Date Expert ver 1.3</strong> (5k) (261097) (<a href="cdate13.html">FW src.</a>)</p>
<p>This expert creates a unit called CompDate.PAS, containing a constant decleration in the interface section, which can be threated as a TDateTime type variabel, and gives the date when Delphi were started.</p>
<p>The &#8220;fake&#8221; expert should be installed via your DELPHI.INI (Dephi 1.0) or the registration database (Delphi 2.0 &amp; 3.0), and setup via a CompDate.INI file (Delphi 1.0) located in the same dirictory as the CompDate.DLL or the registration database (Delphi 2.0 &amp; 3.0).<span class="span">Supports both Delphi 1.0, 2.0 &amp; 3.0 with the same sourcecode</span></td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/commhelp.zip"><br />
COMMHELP.ZIP</a></td>
<td><strong>A help file to COMM.ZIP.</strong> (9k) (090996) (FW)</p>
<p>Made by me <img src='http://www.djernaes.dk/martin/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  (Bad english)</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="http://sunsite.informatik.rwth-aachen.de/delphi/ftp/freeware/comm.zip"><br />
COMM.ZIP</a></p>
<p>Delphi 1.0</td>
<td><strong>A COM port component.</strong> (9k) (NOT FROM HERE)</p>
<p>Simple but easy.<br />
This program is not mine but Fred Bulback&#8217;s &#8211; I love it.</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/mddexp.zip"><br />
MDDEXP.ZIP</a></p>
<p><a class="silent" href="/download/mddexp.zip"><img src="/graphics/mddexp.gif" border="0" alt="MddExp" width="89" height="54" /></a></p>
<p>Delphi 1.0</td>
<td><strong>A DLL Expert</strong> (192k) (120996) (FW)</p>
<p>This DLL expert is free for use, and I will come up with a real version some day in the future, but so far you may use this one &#8211; it is working! (if you detect any problems I&#8217;ll gladly hear from you, I just don&#8217;t take any responsibility for crashes etc.).</td>
</tr>
<tr>
<td colspan="2">
<hr size="2" /></td>
</tr>
<tr>
<td align="CENTER" valign="TOP"><a href="/download/dart.zip"><br />
DART.ZIP</a></p>
<p><a class="silent" href="/download/dart.zip"><img src="/graphics/tdart.gif" border="0" alt="DnLoad" width="50" height="49" /></a></p>
<p>Delphi 1.0</td>
<td><strong>Visual Dartboard.</strong> (4k)<br />
(090995) (FW src.)<br />
A component which shows a dartboard on the screen, and have a<br />
OnPointsChanged event, which can be used for showing the points (at the place<br />
where the mouse is).</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/09/14/vcl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Voice and a US number</title>
		<link>http://www.djernaes.dk/martin/2010/09/01/google-voice-and-a-us-number</link>
		<comments>http://www.djernaes.dk/martin/2010/09/01/google-voice-and-a-us-number#comments</comments>
		<pubDate>Wed, 01 Sep 2010 13:10:53 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Google Voice]]></category>
		<category><![CDATA[Phone]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.djernaes.dk/martin/?p=117</guid>
		<description><![CDATA[Here is my quick guide to a Google Voice account and a US number terminated at my home phone. You will need a SIP account to which you have connected your home number &#8230; at this point I just assume that you have that. Getting a US phone number is quite easy, if you do [...]]]></description>
				<content:encoded><![CDATA[<p>Here is my quick guide to a Google Voice account and a US number terminated at my home phone.</p>
<p><span id="more-117"></span>You will need a SIP account to which you have connected your home number &#8230; at this point I just assume that you have that.</p>
<p>Getting a US phone number is quite easy, if you do not care about the area code. You can go to <a href="http://phone.ipkall.com/">phone.ipkall.com</a> where you can get a number and get it forwarded to your existing SIP account (the only issue is that you must use it once month or you will loose it).</p>
<p>To get <a href="http://www.google.com/voice">Google Voice</a> you need an US IP address. One way to get that is to use the <a href="http://hotspotshield.com/">Hotspot Shield</a> service to get a &#8220;protected&#8221; connectionÂ <strong>before</strong> you signÂ up for Google Voice. After signing up you do not any longer need the US IP address, so you can safely disconnect the Hotspod Shield &#8220;protected&#8221; connection&#8221;.</p>
<p>In Google Voice you now pick the area code of your choice and set it to always call the number you were assigned by IPKALL.</p>
<p>There you go. A US number terminated in your local SIP phone and with a Google Voice interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.djernaes.dk/martin/2010/09/01/google-voice-and-a-us-number/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
