こんな感じで、ラズパイのデータをWindows PCへ送信させたいと思います。
ラズパイ側はPythonでHATのセンサーにアクセスしているので、Pythonで送信を行います。
Windows側は、言語は何でも良いのですが、今回はC#で書こうと思います。
とりあえず、今回は通信ができるところまでを確認します。
ラズパイ側のソースはこんな感じ。
import json
import urllib.request
url = 'http://192.168.1.3:8000'
data = {
'foo': 123,
}
headers = {
'Content-Type': 'application/json',
}
req = urllib.request.Request(url, json.dumps(data).encode(), headers)
with urllib.request.urlopen(req) as res:
body = res.read()
こちらのソースコードを丸パクリです。
https://qiita.com/hoto17296/items/8fcf55cc6cd823a18217
Windows側のコードはこんな感じです。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace http_server
{
class Program
{
static void Main(string[] args)
{
try
{
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://192.168.1.3:8000/");
listener.Start();
while (true)
{
HttpListenerContext context = listener.GetContext();
HttpListenerRequest req = context.Request;
StreamReader reader = new System.IO.StreamReader(req.InputStream, req.ContentEncoding);
string s = reader.ReadToEnd();
Console.WriteLine(s);
HttpListenerResponse res = context.Response;
res.StatusCode = 200;
byte[] content = Encoding.UTF8.GetBytes("HELLO");
res.OutputStream.Write(content, 0, content.Length);
res.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}
ホントにデータを送受信するだけのコードで、エラーとかは全く考慮していません。
Windows側のプログラムを先に実行し、その後ラズパイのコードを実行すると、Windows側のコンソールにこんな感じで出力されます。
これをカスタマイズすればセンサーの情報もWindows PCに送信できそうです。