Line No. | Rev | Author | Line |
---|---|---|---|
1 | 32 | kaklik | /********************************************************************* |
2 | * |
||
3 | * Microchip Ethernet Discoverer |
||
4 | * -Provides a PC interface for the Announce.c Microchip TCP/IP |
||
5 | * module |
||
6 | * |
||
7 | ********************************************************************* |
||
8 | * FileName: frmMain.cs |
||
9 | * Dependencies: Microsoft .NET Framework 2.0 |
||
10 | * Processor: x86 |
||
11 | * Complier: Microsoft Visual C# 2005 Express Edition |
||
12 | * Company: Microchip Technology, Inc. |
||
13 | * |
||
14 | * Software License Agreement |
||
15 | * |
||
16 | * This software is owned by Microchip Technology Inc. ("Microchip") |
||
17 | * and is supplied to you for use exclusively as described in the |
||
18 | * associated software agreement. This software is protected by |
||
19 | * software and other intellectual property laws. Any use in |
||
20 | * violation of the software license may subject the user to criminal |
||
21 | * sanctions as well as civil liability. Copyright 2006 Microchip |
||
22 | * Technology Inc. All rights reserved. |
||
23 | * |
||
24 | * This software is provided "AS IS." MICROCHIP DISCLAIMS ALL |
||
25 | * WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED |
||
26 | * TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND |
||
27 | * INFRINGEMENT. Microchip shall in no event be liable for special, |
||
28 | * incidental, or consequential damages. |
||
29 | * |
||
30 | * |
||
31 | * Author Date Comment |
||
32 | *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
33 | * Howard Schlunder 7/31/06 Original |
||
34 | ********************************************************************/ |
||
35 | using System; |
||
36 | using System.Collections.Generic; |
||
37 | using System.ComponentModel; |
||
38 | using System.Data; |
||
39 | using System.Drawing; |
||
40 | using System.Text; |
||
41 | using System.Windows.Forms; |
||
42 | using System.Net.Sockets; |
||
43 | |||
44 | namespace Embedded_Device_Discoverer |
||
45 | { |
||
46 | public partial class Form1 : Form |
||
47 | { |
||
48 | public delegate void AsyncCallback(IAsyncResult ar); |
||
49 | public delegate void AddTolstDiscoveredDevices(object o); |
||
50 | |||
51 | private UdpState GlobalUDP; |
||
52 | |||
53 | public Form1() |
||
54 | { |
||
55 | InitializeComponent(); |
||
56 | } |
||
57 | |||
58 | struct UdpState |
||
59 | { |
||
60 | public System.Net.IPEndPoint EP; |
||
61 | public System.Net.Sockets.UdpClient UDPClient; |
||
62 | } |
||
63 | |||
64 | private void cmdDiscoverDevices_Click(object sender, EventArgs e) |
||
65 | { |
||
66 | try |
||
67 | { |
||
68 | // Clear the listbox of all current discovery responses |
||
69 | listView1.Items.Clear(); |
||
70 | |||
71 | // Try to send the discovery request message |
||
72 | byte[] DiscoverMsg = Encoding.ASCII.GetBytes("Discovery: Who is out there?"); |
||
73 | GlobalUDP.UDPClient.Send(DiscoverMsg, DiscoverMsg.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303)); |
||
74 | } |
||
75 | catch |
||
76 | { |
||
77 | MessageBox.Show("Unable to transmit discovery message. Check network connectivity and ensure that no other instances of this program are running.", "Error", MessageBoxButtons.OK); |
||
78 | return; |
||
79 | } |
||
80 | } |
||
81 | |||
82 | public void AddDiscoveryEntry(object o) |
||
83 | { |
||
84 | //lstDiscoveredDevices.Items.Add(o); |
||
85 | listView1.Items.Add(new ListViewItem(((string)(o)).Split('\n'))); |
||
86 | } |
||
87 | |||
88 | public void ReceiveCallback(IAsyncResult ar) |
||
89 | { |
||
90 | UdpState MyUDP = (UdpState)ar.AsyncState; |
||
91 | |||
92 | // Obtain the UDP message body and convert it to a string, with remote IP address attached as well |
||
93 | string ReceiveString = Encoding.ASCII.GetString(MyUDP.UDPClient.EndReceive(ar, ref MyUDP.EP)); |
||
94 | ReceiveString = MyUDP.EP.Address.ToString() + "\n" + ReceiveString.Replace("\r\n", "\n"); |
||
95 | |||
96 | // Configure the UdpClient class to accept more messages, if they arrive |
||
97 | MyUDP.UDPClient.BeginReceive(ReceiveCallback, MyUDP); |
||
98 | |||
99 | // Write the received UDP message text to the listbox in a thread-safe manner |
||
100 | //lstDiscoveredDevices.Invoke(new AddTolstDiscoveredDevices(AddDiscoveryEntry), ReceiveString); |
||
101 | listView1.Invoke(new AddTolstDiscoveredDevices(AddDiscoveryEntry), ReceiveString); |
||
102 | } |
||
103 | |||
104 | private void Form1_Load(object sender, EventArgs e) |
||
105 | { |
||
106 | try |
||
107 | { |
||
108 | GlobalUDP.UDPClient = new UdpClient(); |
||
109 | GlobalUDP.EP = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303); |
||
110 | System.Net.IPEndPoint BindEP = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 30303); |
||
111 | byte[] DiscoverMsg = Encoding.ASCII.GetBytes("Discovery: Who is out there?"); |
||
112 | |||
113 | // Set the local UDP port to listen on |
||
114 | GlobalUDP.UDPClient.Client.Bind(BindEP); |
||
115 | |||
116 | // Enable the transmission of broadcast packets without having them be received by ourself |
||
117 | GlobalUDP.UDPClient.EnableBroadcast = true; |
||
118 | GlobalUDP.UDPClient.MulticastLoopback = false; |
||
119 | |||
120 | // Configure ourself to receive discovery responses |
||
121 | GlobalUDP.UDPClient.BeginReceive(ReceiveCallback, GlobalUDP); |
||
122 | |||
123 | // Transmit the discovery request message |
||
124 | GlobalUDP.UDPClient.Send(DiscoverMsg, DiscoverMsg.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303)); |
||
125 | } |
||
126 | catch |
||
127 | { |
||
128 | MessageBox.Show("Unable to transmit discovery message. Check network connectivity and ensure that no other instances of this program are running.", "Error", MessageBoxButtons.OK); |
||
129 | return; |
||
130 | } |
||
131 | } |
||
132 | |||
133 | private void listView1_ItemActivate(object sender, EventArgs e) |
||
134 | { |
||
135 | System.Diagnostics.Process.Start("http://" + listView1.SelectedItems[0].Text); |
||
136 | } |
||
137 | } |
||
138 | } |
Powered by WebSVN v2.8.3