2017-06-27 10 views
-1

私は自分のコードについては、以下のエラーが発生します:Pythonのインポートの問題

NameError: name 'ser' is not defined

Mainpythonfile.py:

import serial 
from commands import * 

############## Initializing COM -Port ##################### 
ser = serial.Serial() 
ser.baudrate = 19200 
ser.port = 'COM3' 
ser.timeout = 0.1 
ser.open() 
print("Serial Port geöffnet: ", ser.is_open) 
write("ADR 06") 

commands.py:

def write(text): 
    ser.write(bytes("{}\r".format(text), 'utf-8'))  
    #print(bytes("{}\r".format(text), 'utf-8')) 
    return ser.readline().decode('utf-8') 

何私のコードで間違っている、あなたが助けることを願って私:

+0

'ser'はcommands.pyに定義されていませんか? –

答えて

0

commands.pyMainpythonfile.pyの変数についてはわかりません。

ただし関数に変数を渡すことができます。

Mainpythonfile.py:

ser = serial.Serial() 
... 
write(ser, "ADR 06") 

commands.py:

def write(ser, text): 
    ser.write(bytes("{}\r".format(text), 'utf-8'))  
    #print(bytes("{}\r".format(text), 'utf-8')) 
    return ser.readline().decode('utf-8') 

serは今のパラメータがどのように注意してください関数writeとあなたはそれを渡していますfあなたのメインモジュールをromします。

+0

ありがとうございました。 問題を処理するよりスタイリッシュな方法はありませんか? インポートされたモジュールの他のモジュールのいくつかの関数を使用する必要があるとします。例えば、単純な 'import time'はすべてのモジュールになければなりません... – soderdaen

+0

いいえ、ありません。どこにでも知られているstr、dict、listなどの組み込み関数があります。モジュールには、 '' import''またはパラメータとして渡すことで、モジュールに知らせる必要があるモジュール、関数、変数などがあります。 –

0

最も簡単な解決策は、writeの引数としてserを追加し、メインスクリプトで呼び出すときにインスタンス化されたserをtoに渡すことです。

関連する問題