2016-06-25 8 views
0

端末のコマンドラインから「python /home/pi/temp/getTemp.py」を実行すると、 「エラー、シリアルポートがありません」というメッセージが表示されます。 tempディレクトリに移動して "python getTemp.py"を実行すると、うまく動作します。なぜ誰かが私に言うことができますか?ファイルへのパスを使用してPythonスクリプトが実行されない

#!/usr/bin/env python 

import os 
import sys 
import socket 
import datetime 
import subprocess 
import signal 

port = "/dev/ttyUSB0" 
tlog = '-o%R,%.4C' 
hlog = '-HID:%R,H:%h' 
clog = '-OSensor %s C: %.2C' 


def logStuff(data): 
    with open("/home/pi/temp/templog.txt", "a") as log_file: 
     log_file.write(data + '\n')  

def main(): 

    try: 

     output = subprocess.check_output(['/usr/bin/digitemp_DS9097U', '-q', '-a']) 

     for line in output.split('\n'): 

      if len(line) == 0: 
       logStuff("len line is 0") 
       continue 

      if 'Error' in line: 
       logStuff("error in output") 
       sys.exit() 

      line = line.replace('"','') 

      if line.count(',') == 1: 
       (romid, temp) = line.split(',') 

      poll = datetime.datetime.now().strftime("%I:%M:%S %p on %d-%B-%y")   

      content =(romid + "," + poll + "," + temp) 
      print content 
      return content 

    except subprocess.CalledProcessError, e: 
     print "digitemp error:\n", e.output 

    except Exception as e: 
     logStuff('main() error: %s' %e) 
     os.kill(os.getpid(), signal.SIGKILL) 


if __name__ == "__main__": 
    main() 
+3

あなたが指定したコードで 'port ="/dev/ttyUSB0 "'が使用されていないと、常にそれを見つけるためにdigitempに指示する必要があります。シリアルポートのみが参照されます。私はサブプロセスがあなたに見ているエラーを与えていると思われます。別のディレクトリから呼び出されることは期待できません。 – TemporalWolf

答えて

0

これはおそらく、あなたがネットワークを初期化するために-iでそれを実行すると、通常は〜/ .digitemprcに格納された設定ファイルを、見つけることができません。別のディレクトリに作成されている場合は、-c

関連する問題