1

私は現在、OBD2から車のUSBセンサーにデータを読み取る学校向けのラズベリーパイプロジェクトに取り組んでいます。

Screen を使用してシリアル ポートに接続すると、すべて正常に動作しますが、python で接続しようとすると、serial.readline() が空の文字列を返します。

Pythonでシリアルポートからデータを取得する方法を知っている人はいますか?

利用可能なすべてのオプションについて試しました。

import serial

ser = 0

#Function to Initialize the Serial Port
def init_serial():

    global ser         
    ser = serial.Serial()
    ser.baudrate = 38400   
    ser.port = '/dev/ttyUSB0' 
    ser.timeout = 1
    ser.open()          #Opens SerialPort

    # print port open or closed
    if ser.isOpen():
    print 'Open: ' + ser.portstr
    #Function Ends Here

init_serial()

temp = raw_input('Type what you want to send, hit enter:\r\n')
ser.write(temp)         #Writes to the SerialPort

while 1:    
      bytes = ser.readline()  #Read from Serial Port
      print bytes      #Print What is Read from Port
4

2 に答える 2

0

応答を得るために有効なデータを送信していない可能性があります。ODB2 インターフェイスは AT コマンド セットを使用していると思います。AT\n を送信するのが良い出発点かもしれません。

Bluetooth ODB2 インターフェイスを使用していますが、シリアル ボーレートが修正されていることがわかりました。他のボーレートを使用すると、データを正しく取得できませんでした。

デバイスが正しく応答するまで、パテまたはシリアル ポートをサポートする他の端末からテストすることをお勧めします。次に、有効な設定を使用してコードのトラブルシューティングを行います。

于 2015-06-02T17:23:05.860 に答える
0

コマンドで \r\n を送信していません。ELM327 では、コマンドの最後に改行文字が必要です。

于 2015-08-03T17:42:22.850 に答える