0

私は音声認識モジュールを使用しています-Arduino互換。AccessPortを使用するように指示されていますが、私はMac OS Xを使用しているため、機能しません。私は他の解決策を知りませんが、動作する他の言語を開いている間にPythonで自分自身を書くことです。

ここでpySerialに関するいくつかの解決策を見つけましたが、現時点では機能していないようです。

import serial
import struct

def C(val):
    return struct.pack('H', val)

ser = serial.Serial(port='/dev/tty.PL2303-00001004', baudrate=9600, timeout=1)
ser.nonblocking()

ser.write(C(0xaa11))
print ser.read().__repr__()
ser.close()

開き、2バイトを書き込み、何も読み取りません。0xaa11録音を開始するために使用されます。赤いLEDが速く点滅するため、デバイスは待機モードになっているようです。私がやっても0xaa00、あまり役に立たない。0x00aaバイトオーダーを、などに変更しようとしましたが、エラーコード0x11aaを受信しません0xcc0xe0

ドキュメントでは、16進数として送信すると書かれているので、accessportは16進数をShort2バイトを使用するに変換すると思います。0xaa002バイトの数値です。私の前の誰かがそれをこの速度に設定した場合に備えて、ボーレートをに変更しようとさえしました。38400

私はそのシリアルポートから何でも読んでうれしいです。なぜなら今のところ私は書くことができ、それは何もせず、何も読まないからです...

今のところ、クロスオーバーを使用してAccessPortをインストールしてみます。それでも機能しない場合は、Windowsボックスを探す必要があります。使用しているドライバーにバグがある可能性があるため、Arduinoボードを使用して独自のブリッジを作成することもできます。

重要な場合は、USB toSerialPL2303を使用しています。

編集

  • USB-シリアルをテストするために、出力ピンと入力ピンを接続しました。私は自分が書いたものを読んでいるので、ドライバーは正常に動作しています。

  • Arduinoで直接セットアップして、そこから直接テストしてみます。

  • 送信は、送信してから送信することと0xaa11は異なります。シリアルはバイト順序を逆にしているようです。0xaa0x11

  • 一方、ドキュメントにはビットエンディアンについては記載されていないため、問題になる可能性もあります。

4

1 に答える 1

1

結局、それはかなりばかげていましたが、私は自分の問題を解決しました。

これが私の最終的なスクリプトです:

import serial
import struct
from time import sleep

def C(val):
    return struct.pack('!H', val)

ser = serial.Serial(port='/dev/tty.PL2303-00002006', baudrate=9600)

sleep(2)

ser.write(C(0xaa00))

sleep(1)
ser.write(C(0xaa36))

sleep(1)
ser.write(C(0xaa11))

sleep(1)

while True:
    print ser.readline()

誰かがそのモジュールを使用したい場合、それは機能します。readlineを使用して読み取ることができるように、バイトではなく単語を出力するモードに切り替わります...

struct.pack "!H" を使用してネットワークエンディアンを使用し、0xaa00 を 0xaa 0x00 に変更しました。

しかし、ここでの本当の問題はスクリプトにはありませんでした。USB からシリアルへの接続が機能したので、モジュールが何も応答しなかったのは奇妙だと思いました...エラーのバイトでさえありませんでした。このモジュールのすべてのコマンドは、何かを返さなければなりません。そんなわけで、ケーブルを見直してピンを確認したところ... gndgnd電源から電源、そして、rxdに...すべて問題ないようですが... 何かが届くはずです... そして、本当に考えました。 .. クロス ケーブルの使用を想定しておらず、接続する必要がある場合はどうすればよいでしょうか...どうやらそうです。txdtxdrxdtxdtxdrxdrxd

ケーブルを切り替えて、データを送受信できるようになりました。

したがって、そのモジュールを使用する人は誰でも、正しく差し込まれていることを確認する必要があります。機能しない場合は、データ ピンを切り替えます。

于 2012-06-24T19:49:14.863 に答える