私は赤外線リモコンを持っていますが、これを PPC と交換したいと考えています。私の Mitac P550 には赤外線シリアル ポートがありますが、バイト シーケンスを取得して再送信する方法がわかりません。.net の SerialPort コンポーネントを使用してデータを取得することは可能ですか?
ありがとう
私は赤外線リモコンを持っていますが、これを PPC と交換したいと考えています。私の Mitac P550 には赤外線シリアル ポートがありますが、バイト シーケンスを取得して再送信する方法がわかりません。.net の SerialPort コンポーネントを使用してデータを取得することは可能ですか?
ありがとう
SendとReceiveという 2 つのメソッドを作成し、通信の両端にインストールする必要があります。
一般的なSendルーチンは、特定のポート番号をリッスンしているホストにメッセージを送信します。簡単な例を次に示します。
public static void Send(string message, string host, int port) {
if (!String.IsNullOrEmpty(message)) {
if (port < 80) {
port = DEF_PORT;
}
Byte[] data = Encoding.ASCII.GetBytes(message);
using (var client = new TcpClient(host, port)) {
var stream = client.GetStream();
stream.Write(data, 0, data.Length);
stream.Close();
client.Close();
}
}
}
一般的な受信ルーチンは、リッスンするポート番号を知る必要があり、受信したデータを返す必要があります。以下に簡単な例を示します。
public static string Receive(int port) {
string data = null;
listener = new TcpListener(IPAddress.Any, port);
listener.Start();
using (var client = listener.AcceptTcpClient()) { // waits until data is avaiable
int MAX = client.ReceiveBufferSize;
var stream = client.GetStream();
Byte[] buffer = new Byte[MAX];
int len = stream.Read(buffer, 0, MAX);
if (0 < len) {
data = Encoding.UTF8.GetString(buffer, 0, len);
}
stream.Close();
client.Close();
}
return data;
}
これに使用した完全なクラス コードを次に示します。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
namespace AcpMobile5 {
class TestClass1 : Form {
public const int DEF_PORT = 8000;
private static TcpListener listener;
public static string Receive(int port) {
string data = null;
listener = new TcpListener(IPAddress.Any, port);
listener.Start();
using (var client = listener.AcceptTcpClient()) { // waits until data is avaiable
int MAX = client.ReceiveBufferSize;
var stream = client.GetStream();
Byte[] buffer = new Byte[MAX];
int len = stream.Read(buffer, 0, MAX);
if (0 < len) {
data = Encoding.UTF8.GetString(buffer, 0, len);
}
stream.Close();
client.Close();
}
return data;
}
public static void Send(string message, string host, int port) {
if (!String.IsNullOrEmpty(message)) {
if (port < 80) {
port = DEF_PORT;
}
Byte[] data = Encoding.ASCII.GetBytes(message);
using (var client = new TcpClient(host, port)) {
var stream = client.GetStream();
stream.Write(data, 0, data.Length);
stream.Close();
client.Close();
}
}
}
}
}