Skip to main content

Communicating between a Windows laptop and the Windows Mobile PDA using sockets

Introduction

Having successfully installed Python on my Windows Mobile PDA I wanted to investigate if I could communicate between my Windows XP machine and my PDA using sockets. I used Cygwin to act as a Linux emulator, although there are Windows-based Python solutions, such as Enthought's Pylab.

Step One: Communication between processes on the same machine

As a first step, try communication between processes on a single machine.

I used the command ipconfig in a Windows command prompt to determine that my IP address is 192.168.1.64.

To create the server, I used the following Python code, which is largely from http://www.devshed.com/c/a/Python/Sockets-in-Python/1/.

Create a file called server.py with the following contents:
#! /usr/bin/env python

import socket
mySocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
mySocket.bind (( '192.168.1.64', 1200 ))
mySocket.listen (1)

while True:
channel, details = mySocket.accept()
print 'Opened a connection with', details
print channel.recv (100)
channel.send ( 'This is a message from the server.' )
channel.close()

To make the Python file executable type chmod +x server.py at the command prompt.

Then in a Python terminal running on a separate process type the following:

>>> import socket
>>> mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> mySocket.connect(('192.168.1.64', 1200))
>>> mySocket.send('Hello World. I have been sent from the client.')
47
>>> mySocket.recv(100)
'This is a message from the server.'
>>> mySocket.close()

Note that the value 47 is returned by the server and on requesting a message the server sends back 'This is a message from the server.' So this all worked fine.

Step Two: Getting a simple Python script onto the PDA

Although it is possible to simply type commands at the command prompts, it can be difficult due to the input methods of the PDA and also it's prone to error. An easier method is to create the file and then copy it to the PDA.

To determine the default directory that Python works from type

>>> import os
>>> os.getcwd()


and in my case it was '\\Temp', as can be seen from the figure.



For example, create a simple script called test1.py that contains only one line

print 'Hello World'

Copy the file to the default directory and then type

>>> execfile('test1.py')

at the command prompt. You should then see the message displayed to the screen.



Step Three: Communication between a Windows machine and the Windows Mobile PDA

Create a file containing the following code:
import socket
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.connect(('192.168.1.64', 1200))
mySocket.send('Hello World. I have been sent from the client.')
Save the code in the file client.py and check it by opening a terminal, starting Python and then typing

>>> execfile('client.py')


Once it's been checked copy the file to a suitable directory on the PDA, e.g. in the Temp directory.

Running the client on the PDA you should then see a message sent to the server screen!

Comments

Popular posts from this blog

Python libraries on an air-gapped machine

The Problem Development and test clusters may be air-gapped so that client data or sensitive software under development is less likely to be leaked. This can cause problems when trying to install libraries, e.g. for Python-based software, especially if the cluster has an old version of a Linux OS installed. The Solution Setup Python's pip on the remote machine On an Internet-enabled machine, download the Wheel file for pip from  https://pypi.python.org/pypi/pip , such as pip-9.0.1-py2.py3-none-any.whl. Copy the Wheel file (e.g. pip-9.0.1-py2.py3-none-any.whl) to the remote machine, e.g. using scp: scp pip-9.0.1-py2.py3-none-any.whl user@host:/path On the remote machine: python pip-9.0.1-py2.py3-none-any.whl/pip install --no-index pip-9.0.1-py2.py3-none-any.whl pip --version # this should display the version number if correctly installed Download the required libraries On an Internet-enabled machine, download the library and its dependencies using the fol

Getting started with Kafka and Kafka Tool

This provides a quick introduction to setting up a local Kafka instance and using Kafka Tool to view the messages. The initial part of the Kafka tutorial is adapted slightly from  http://kafka.apache.org/quickstart.html . The following are steps for: Downloading and unpacking Apache Kafka in Linux Starting the Zookeeper and Kafka servers Creating a new topic Adding and viewing messages using the command line tools Use Kafka Tool to view the messages in a topic Step 1: Download Kafka cd ./Downloads/ wget http://mirror.catn.com/pub/apache/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz tar -zxf kafka_2.11-0.10.0.0.tgz cd kafka_2.11-0.10.0.0 Step 2: Start the Zookeeper and Kafka servers Check the Kafka port in zookeeper.properties by looking at clientPort (typically 2181) in config/zookeeper.properties Start Zookeeper with: bin/zookeeper-server-start.sh config/zookeeper.properties and then start Kafka: bin/kafka-server-start.sh config/server.properties Step 3:

Python on a Windows Mobile PDA

I've been doing development work in Python and as an experiment I thought I'd have a go at getting Python installed on my Windows Mobile PDA . It's an HP iPaq running Windows Mobile 6 (CE OS 5.2.1.1616). The Python CE Wiki is located at: http://pythonce.sourceforge.net/Wikka/HomePage I installed PythonCE-2.5-20061219-setup.exe from sourceforget.net and amazingly it worked first time! After clicking Start -> Programs -> Python I was able to verify that it worked by typing >>> print 'Hello World' Hello World Using Ilium Software Screen Capture software I was able to get a screen shot very easily. It can be downloaded from http://www.mobiletopsoft.com/pocket-pc/download-ilium-software-screen-capture-free-1-1.html