親愛なるスタックオーバーフローコミュニティ、
C#またはC++を使用して802.15.4ワイヤレストランシーバーに接続するのを手伝ってくれることを願って書いています。私のプロジェクトについて少し説明させてください。今学期は、光、温度、湿度、動きの検出レベルを8秒ごとにUSBワイヤレストランシーバーに送信するワイヤレスセンサーボードの開発に時間を費やしました。今、私はUSBトランシーバーを開発しませんでした。コースのTAの1人がそうしました、そして彼は私のセンサーボードの開発プロセスを通して私を助けてくれました(それは私の最初の本当のPCBでした)。
これで、センサーボードがプログラムされ、トランシーバーにデータが送信されていることがわかりました。私がこれを知っている理由は、このTAがトランシーバーから最新の情報パケットを(受信したときはいつでも)プルし、16進メッセージを解凍し、センサーデータの一部を作業単位(摂氏など)に変換する単純なPythonモジュールを作成したためです。摂氏、相対湿度%など)
問題は、Pythonモジュールが彼のコンピューター(Mac)で動作するが、私のコンピューター(Windows 7)では動作しないことです。基本的に、彼はzigboardと呼ばれるライブラリを使用してセンサーメッセージを解凍し、スケッチ内のpyusbおよびpyserialライブラリも使用しています。802.15.4ワイヤレストランシーバーは、Macでは自動的に列挙されますが、PCで実行すると、より大きな問題が発生します。基本的に、問題は署名されたドライバーがないことにあると思います。libusbを使用してこの特定のデバイスの.infファイルを生成しています...メッセージの送受信時に点滅するLEDがセンサーボードとトランシーバーにあるため、マシンで機能していることがわかります。ただし、このTAが彼のマシンで実行しているのと同じPythonモジュールを実行すると、一部のWindowsバックエンドバイナリが欠落しているというエラーメッセージが表示されます。
しかし、より大きな問題はこのpythonモジュールではありません。より大きな問題は、Pythonを使用する必要がないことです。このセンサーボードは、より大きなプロジェクトの一部になります。このプロジェクトでは、C#またはC ++でソフトウェアインターフェイスを設計して、さまざまなことを実行します(そのうちのいくつかはこのセンサーデータを処理します)。したがって、最終的には、このトランシーバーからのデータにアクセスするために.NETで作業できるようにしたいと思います。ただし、私が続けなければならないのは、このpythonスケッチ(私のマシンでも実行されない)だけです。これを自分のマシンで動作させる方法について、このTAにさらに質問するのが最も簡単な方法だと思います...しかし、私はこのプロジェクトに関して今学期に彼の時間を独占しており、さらに彼は現在町。また、彼の好みはpythonですが、私は m C#またはC ++で最も快適であり、このプロジェクトにその環境を使用したいと考えています。さて、私は電子工学とプログラミングに精通していると言えます(しかし、確かに専門家ではありません...私の経歴は実際には建築にあります)。しかし、誰かが私がボードから送信されているセンサーメッセージを解凍できるようにコードを開発するのを手伝ってくれるなら、それは大いにありがたいです。以下にPythonスケッチを添付しました。これは、TAが自分のマシンでセンサーメッセージを解凍するために使用するものです(ただし、私が言ったように... Windowsマシンで問題が発生しました)。誰か提案はありますか?ボードから送信されているセンサーメッセージを解凍できるように、誰かがコードの開発を手伝ってくれるなら、それは大いにありがたいです。以下にPythonスケッチを添付しました。これは、TAが自分のマシンでセンサーメッセージを解凍するために使用するものです(ただし、私が言ったように... Windowsマシンで問題が発生しました)。誰か提案はありますか?ボードから送信されているセンサーメッセージを解凍できるように、誰かがコードの開発を手伝ってくれるなら、それは大いにありがたいです。以下にPythonスケッチを添付しました。これは、TAが自分のマシンでセンサーメッセージを解凍するために使用するものです(ただし、私が言ったように... Windowsマシンで問題が発生しました)。誰か提案はありますか?
再度、感謝します。
from zigboard import ZigBoard
from struct import unpack
from time import sleep, time
zb = ZigBoard()
lasttime = time()
while True:
pkt = zb.receive()
if pkt is None:
sleep(0.01)
continue
if len(pkt.data) < 10:
print "short packet"
sleep(0.01)
continue
data = pkt.data[:10]
cmd, bat, light, SOt, SOrh, pir = unpack("<BBHHHH", data)
lasttime = time()
d1 = -39.6
d2 = 0.01
c1 = -2.0468
c2 = 0.0367
c3 = -1.5955E-6
t1 = 0.01
t2 = 0.00008
sht15_tmp = d1 + d2 * float(SOt);
RHL = c1 + c2 * SOrh + c3 * float(SOrh)**2
sht15_rh = (sht15_tmp - 25.0) * (t1 + t2 * float(SOrh)) + RHL
print "address: 0x%04x" % pkt.src_addr
print "temperature:", sht15_tmp
print "humidity:", sht15_rh
print "light:", light
print "motion:", pir
print