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