みんな。私は多くを見て、i2cを介して2台のLCDディスプレイと通信することを初めて試みました。すべてうまくいきましたが、今では、接続のいずれかが失敗した場合(接触不良、電源切断など)にLCDの通信を初期化する方法を探したいだけです。このコードによれば、彼らは同時に別々に働いています。しかし、私がメインワイヤーまたはワイヤーのいくつかと切り離すためのテストを行うと、すべてが問題になります。プログラムは問題なく動作し続けますが、LEDディスプレイの表示はほとんどの場合不可能であり、多くの例と質問を読んで見ても答えが見つからないため、何が間違っているのかを知りたいのですが。i2cと複数のLCDディスプレイ(ラズベリーパイ2)
は、ここでのpythonのコードです:
import lcddriver
from time import *
import sys
a=0
b=0
#https://www.youtube.com/watch?v=YUII39FzUb4 my reference
lcd = lcddriver.lcd(0x27) #Address firs display
print ("Display 1 done")
lcd2 = lcddriver.lcd(0x23) #Address second display
print ("Display 2 done")
sleep(1)
lcd.lcd_display_string(" ElectroMESH ", 1)
lcd.lcd_display_string("Prueba Raspberry y", 2)
#One part in the first display
lcd2.lcd_display_string("LCD 20x4 via i2c ", 3)
lcd2.lcd_display_string(" via I2C", 4)
#The other part in the second display
sleep(1)
for i in range(1,86400):
try:
a=1
b=0 #Here I'm trying to make an idea of display status flag
lcd.lcd_display_string(str(i), 4, 1)
a=0
b=1
lcd2.lcd_display_string(str(i+8), 2, 1) #i+8 to ensure differents texts
b=0
#Activate flag after indication
except IOError: #The action that runs after display is lost
print ("sistema desconectado a y b")
if a and b:
lcd = lcddriver.lcd(0x27)
print ("Sistema 0x27 inicializado if a y b")
a = 0
lcd2 = lcddriver.lcd(0x23)
print ("Sistema 0x23 inicializado if a y b")
b = 0
sys.exc_clear()
elif a==1 and b==0:
lcd = lcddriver.lcd(0x27)
print ("Sistema 0x27 inicializado if a")
a = 0
sys.exc_clear()
elif a==0 and b==1:
lcd2 = lcddriver.lcd(0x23)
print ("Sistema 0x23 inicializado if b")
b = 0
else:
print ("OK...conexion recuperada")
sys.exc_clear()
sleep(1) #Each second prints in the terminal to show results
print(i)
私はtimeout_exceptionsを試みたが、私は成功しませんでした。これが私の最初の投稿であり、私は尋ねようとするために最善を尽くしているので、あなたがそれらを必要とするならば、答えを望むか、またはより多くの詳細を要求してください。
物理コントローラプログラムをVisual C++などで記述し、MATLABのアプリケーションとインターフェースする必要があります – Moose