N95 in dahili bir GPS cihazı var, bu modülün NMEA formatında oluşturdugu bilgileri external olarak alabiliyoruz.

Bunun için bilgilerini göremiyoruz, onu "Tools" -> "Connectivity" -> "GPS Data" çalıştırdıgımızda Position bilgilerini görebiliyoruz.

Bunu dışarıdan almak içinse bluetooth ile serial bir link kurmak gerekmekte, bu işlem için symarctic firmasının ürettigi helalware olan 
extgps.jar ı telefona kuramız gerekmekte. İşlemler sırası ile aşagıda

1. extgps.jar ı indirip kurunuz N95 e
 Veri alabilmek için ikisininde aşagıdaki işlemler sonunda yeşil olması gerekmektedir.

2. "Tools" -> "Connectivity" -> "GPS Data" programını çalışıtırınız

3. N95 in bluetooth unu açınız, görünür oldugundan emin olun 

4. PocketPc veya PC den bluetooth u açıp, yeni bluetooth cihaz aratınınz

 

5. N95 ile SerialPort Service baglantısı kurun. Zaten aratınca "Symarctic ExtGPS" diye bulacaktır.

6. "Connect" yapın, seri portun aktif olduguna emin olun.

7. Pocket pcde aşagıdaki programı çalıştırın ve InComing portunun uygun şekilde seçip  sırası ile
"Aç" ve "Oku" deyin.
veriler textbox2 de görüntülenecektir 



Peki uygun portun kaç oldugunu nerden bileceksiniz?
"start"->"settings"->"Connections"->Bluetooth"->"Serial Port" da gözükmektedir
bende
Inbound COM port = 8
Outbound COM port = 6

dır o yuzden exe de "COM6" seçtim.

 

Benim yaptıgım örnek PocketPc uygulaması şuradadır. Ben uygulamayı Visual Studio 2005 kullanarak Compact Framework 2.0 üzerinde C# ile geliştirdim.

Com portu ögreniyorsunuz, o portu programda seçiyorsunuz, ve N95 ekranındaki extGPS programının ekranındaki simgelerin 2 side yeşil olunca "Oku" diyoruz.
Bluetooth ile N95 delki GPS bilgisini Seri port üzerinden okumuş oluyoruz.

İsteyene Source kodlarını gönderebilirim. 

Ben özellikle PocketPC 2003lerde çok karşılaştıgım bir durum, SD hafıza kartına attıgınız bir dosyayı el cihazında bir türlü görememek. 
Bir kaç refreshden sonra ancak geliyor dosya, ve ya bir uygulamayı ( exe ) cihaza attıgınızda "File Explorer" da bir türlü göremiyordum.
Belli bir süre sonra görünür oluyor, bunun nedeni işletim sisteminin dosyaları cache lemisinden dolayı.
Bu iptal edebiliyorsunuz elbetteki registry den, tek yapmanız gereken :

HKLM\System\StorageManager\FATFS\EnableCache = 0 (DWORD decimal)

Açmak içinse yeniden :

HKLM\System\StorageManager\FATFS\EnableCache = 1 (DWORD decimal)

yapmanız yeterli. Aktif olması için cihazı reset lemelisiniz. Bu kadar...

Gerekli program :

http://www.celiker.com/Programlar/regedit.Mrln_ARM.CAB

WM6 kurulu bir cihazınız varsa ve bu cihaz ile bluetooth üzerinden bir Seri baglantı yaptıysanız,
( SPP Slave veya Master) WM 6 da bluetooth üzerinden pair yaptıgınız cihaza Outgoing port ataya biliyorsunuz.

Incoming portu tanımlamak içinse registry e şu aşagıdaki satırları eklemeniz gerekmektedir.

[HKEY_LOCAL_MACHINE/Software/Microsoft/Bluetooth/Serial/Ports/Incoming]
"Port"="COM6"
"Server"=dword:00000001
"Authentication"=dword:00000001
"Encryption"=dword:00000001
"KeepDCD"=dword:00000000
"RemoteDCB"=dword:00000000

Peki bu registry ayarını el cihazına nasıl gireceksiniz? onun için şu ücretsiz programı kullana bilirsiniz.

regedit.Mrln_ARM bu program hem pocketPC 2003 hemn WM5 hemde WM6 da sorunsuz çalışmaktadır.

Gerekli Updateleri kurunuz... MSN messneger a baglanmıyorsa bunu kurmanız gerekmekte...

http://www.celiker.com/download/msnmessengerupdatefor2002.exe

http://www.celiker.com/download/hp-4150-wirelessupgradeSP28733.exe

İlk olarak mobil yazıcı üzerindeki bluetooth u aktif hale getirin.

El cihazından notka vuruşlu yazıcıyı bluetooth ile aratın, cihazı bulunca SerialPort baglantısı olarak ekleyin.

pair olduklarından emin olunca, 

public bool YaziciyaYazdir(string[] metin)

        {

            System.IO.Ports.SerialPort sp;
            try
            { 
                sp = new System.IO.Ports.SerialPort(cmb_i_com.Text);

                if (!sp.IsOpen)
                    sp.Open();

                foreach (string str in metin)
                {
                    sp.WriteLine(str);
                }
                //kapat
                if (sp.IsOpen)sp.Close();
            }
            catch (Exception ex)
            {
                //if (sp.IsOpen)sp.Close();
                MessageBox.Show("Yazırılamadı.\r\n" + ex.Message);
                return false;
            }

            return true;
        }

Kodu ile yazdıralibir, ben EPSON LX-300+II ve Epson LX-300+ ile denedim. WM5 dede sorun oluşmadı yanlızca WM6 da sıkıntı oldu.
Nokta vuruşlu yazılara gönderilen metinle escape ile başlıyorsa özel anlam ifade ederler, tıpkı \x0A gibi bu hex gönderilen metin bir alt satıra geç anlamındadır.
"\x0A" gibi gönderilmeli C# da.

digerleri normal metin.


Ben Kimim ?

Celiker BahceciMerhabalar, ben Çeliker BAHÇECİ. 2004 den beri özel sektörde bilgisayar mühendisligi ve egitmenlik yapıyorum. Yine aynı yılın Ekim ayından beri sitemde .Net ile programlama ve hayat görüşüm ile ilgili makalelerimi yayınlıyorum. Blogum dışında Yazgelistir.com, mobilnedir.com gibi ineta kapsamındaki bir çok siteye Microsoft teknolojileri ile ilgili yazılar yazmaktayım.
Bu site ile sizinde hayatınızı anlamlandırmanızda bir parça katkımın olması dilegiyle...