我遇到一个问题,需要从另一个脚本访问变量。我已经搜索了这个问题,并且了解到我们可以使用import来访问另一个脚本中的变量。数据来自Arduino,并通过串行发送到Raspberry Pi,并且值一直持续到脚本停止。我已将代码放入函数中,并且需要连续返回传感器数据。
values.py
脚本:
import datetime
import serial
datetime.datetime.now()
ser=serial.Serial('/dev/ttyACM0',115200)
def printVal():
while True:
read_serial=ser.readline()
val= read_serial.decode()
val =val.strip()
row = [x for x in val.split(' ')]
if len(row) == 6:
#p = ('Sensor1:',row[0], 'Sensor2:',row[1], 'Sensor3:',row[2], 'Sensor4:',row[3], 'Sensor5:',row[4], 'Sensor6:',row[5])
#print (row)
#return row
sensor1= row[0]
sensor2 = row[1]
sensor3 = row[2]
sensor4 = row[3]
sensor5 = row[4]
sensor6 = row[5]
#print (sensor1, sensor2, sensor3, sensor4, sensor5, sensor6)
return (sensor1)
printVal()
second.py
脚本:
from values import printVal
print (printVal())
我需要包含if len(row)==6
语句,因为打印的第一行将是三个值,而其他值将不在索引中。
我的问题是我将如何访问第二个脚本中的每个单独的数组值。我是否需要打印功能,我对如何执行此操作感到困惑。我认为return语句仅导致打印一个值,而不是连续的。
答案 0 :(得分:-1)
您可以使用json格式传递单个变量,数组,哈希表。
对于连续传输,您可以逐行读取数据,并在完成一行后解码/加载数据。
带有示例的文档:
答案 1 :(得分:-1)
您可以从printVal()函数返回一个字典。
def printVal():
# your logic here to get sensor data
sensor_data = {'sensor1': row[0],
'sensor2': row[1],
'sensor3': row[2],
'sensor4': row[3],
'sensor5': row[4],
'sensor6': row[5]
}
return sensor_data
然后您可以将返回值分配给第二个脚本中的变量,如下所示:
from values import printVal
sensor_data = printVal()
print(sensor_data['sensor1'])
print(sensor_data['sensor6'])