Mam taki problem. Chcę przesyłać liczby oraz teksty z iPAQ-a do pewnego urządzenia (przycisk dla pieszych programowany z łącza szeregowego i IrDA) używając IrDA.
Generalnie działa przy przesyłaniu z jednego iPAQ-a na drugi i tak wstępnie testowałem ten program. Ale przy testach z urządzeniem, z którym ma to defoltowo pracować coś jakby do tego urządzenia nie docierało to co ma docierać.
Generalnie urządzenie ma również możliwość łączności szeregowej i wtedy widać w oknie terminalowym pseudo menu do wybierania odpowiednich liczb co oznacza przechodzenie w odpowiednie funkcje podmenu i powrotem. Czyli chcąc robić to samo IrDĄ musiałbym słać liczby. I tak właśnie robie (kod poniżej) ale coś nie działa
Na dodatek wysyłając te liczby IrDĄ z komercyjnego programu vxHpc wszystko działa i urządzenie odbiera te liczby i reaguje i można nawigować po menu. Czyli kanał komunikacji jest możliwy tą drogą a ja mam coś źle w kodzie.

Generalnie jeśli ktoś będzie miał czas zerknąć na ten kod i odpisać czy w ogóle jest dobrze napisany bo może mam jakiś gruby błąd, a sam nie wiem o co chodzi.

Kod wygląda mniej więcej tak:

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;

namespace PushButton
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button3;
        private System.Windows.Forms.Button button4;
        private System.Windows.Forms.Button button5;
        private System.Windows.Forms.Button button6;
        private System.Windows.Forms.ListBox listBox1;
        private System.Windows.Forms.Label label1;
        private Microsoft.WindowsCE.Forms.InputPanel inputPanel1;
        private System.Windows.Forms.MainMenu mainMenu1;
                          private IrDAClient irdaClient = new IrDAClient();
                          private IrDADeviceInfo [] deviceList = new IrDADeviceInfo[2];
                          private IrDAEndPoint endPoint ;
        private System.Windows.Forms.MenuItem menuItem1;
        private System.Windows.Forms.MenuItem menuItem2;
        private Stream irdaStream ; 
        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            base.Dispose( disposing );
        }

                 static void Main() 
        {
            Application.Run(new Form1());
        }

        private void Search_Click(object sender, System.EventArgs e)
        {

            int n = 10;
//          IrDAClient irdaClient = new IrDAClient();
//          IrDADeviceInfo [] deviceList = irdaClient.DiscoverDevices(n);

            if( deviceList.Length > 0 )
                for( int i = 0; i < deviceList.Length; i++ )
                    listBox1.Items.Add( deviceList[i].DeviceName );
            else
                listBox1.Items.Add( "Nie znaleziono urządzeń." );

        }

        private void Open_Click(object sender, System.EventArgs e)
        {
            deviceList = irdaClient.DiscoverDevices(2);
            if(deviceList.Length > 0)
            {
                endPoint = new IrDAEndPoint(deviceList[0].DeviceID, "IrDA:IrCOMM");
                irdaClient.Connect(endPoint);
                irdaStream = irdaClient.GetStream(); 

                byte [] komenda = new byte[10];

                komenda[0] = 54;
                irdaStream.Write(komenda,0,komenda.Length);
                //irdaStream.Flush();

                komenda[0] = 49;
                irdaStream.Write(komenda,0,komenda.Length);
                //irdaStream.Flush();

            }
        }

        private void Close_Click(object sender, System.EventArgs e)
        {
            irdaStream.Close(); 
            irdaClient.Close();
        }

        private void SendZero_Click(object sender, System.EventArgs e)
        {

//          Stream irdaStream = irdaClient.GetStream(); 
            byte [] komenda = new byte[10];

            komenda[0] = 48;
            irdaStream.Write(komenda,0,komenda.Length);
            //irdaStream.Flush();

            byte [] bytes = new byte[500];
            string str;

            //do
            //{
            irdaStream.Read(bytes,0,bytes.Length);
            str = ASCIIEncoding.ASCII.GetString(bytes, 1, bytes.Length-1);
            label1.Text = str;
            //}while(str.IndexOf("OK") == -1 && str.IndexOf("ERROR") == -1);            
            //irdaStream.Close();

        }

    }
}

Próbowałem też z irdaStream.WriteByte(48) ale też jakby te liczby nie docierały do urządzenia.
Pozdrawiam