Forum: Mikrocontroller und Digitale Elektronik Python Tinkerforge Varibale aus function wird nicht wieder erkannt


von Michael L. (migu_12)


Lesenswert?

Hallo ich bin neu hier und habe die Suche in Google und auf diesem Forum 
schon umpfänglich genutzt. Vielleicht habe ich aber auch nach 2 Tagen 
immer noch nicht die richtigen Fragaen gestellt.

Mein Problem:

Ich habe in Python ein Programm geschriebn das Werte Voltwerte einlesen 
soll diese in Byte umwandeln und dann über einen Can verschicken soll.
Allerdings erkennt mein Proframm dies Variable später nicht mehr und 
gibt über dei Spyder IDE einen Fehler: " Undefined Name" aus ich habe es 
schon mit global versucht, wovor jedoch in vielen Foren abgeraten wurde. 
Hat leider nicht funktioniert.

in Zeile 25 erschient der Fehler. In der Funktion wird der Int in zwei 
Bytes aufgeteilt und dann über dei can.write_frame verschickt der 
Empfänger kann dann die Daten wieder decodieren. Wenn ich nicht dei 
"CALLBACK" Variante verwende funktioniert es. Aber ich möchte die 
Callbackvariante verwennden um die Signale besser Takten zu können.

Danke schon mal für jegliche Hilfe
1
def cb_voltage1(voltage):
2
3
    T10 = voltage[0].to_bytes(2, byteorder='little', signed=True)
4
    T11 = voltage[1].to_bytes(2, byteorder='little', signed=True)
5
6
if __name__ == "__main__":
7
 
8
    ipcon = IPConnection() # Create IP connection
9
    idai1 = BrickletIndustrialDualAnalogInV2(UID_idai1, ipcon)
10
    can = BrickletCANV2(UID_can, ipcon) # Create device object
11
    
12
    ipcon.connect(HOST, PORT) # Connect to brickd
13
        # Don't use device before ipcon is connected
14
15
        # Register voltage callback to function cb_voltage
16
    idai1.register_callback(idai1.CALLBACK_ALL_VOLTAGES, cb_voltage1)
17
      
18
        # Set period for voltage (channel 0) callback to 1s (1000ms) without a threshold
19
    idai1.set_all_voltages_callback_configuration(cbinterval, False)
20
    
21
     # Configure transceiver for loopback mode
22
    can.set_transceiver_configuration(250000, 625, can.TRANSCEIVER_MODE_NORMAL)    
23
        
24
    #Aufteilen der Bits da nur 8Bits gesendent werden können
25
    can.write_frame(can.FRAME_TYPE_STANDARD_DATA, 0, [ T10[0], T10[1]])
26
        
27
    input("Press key to exit\n") # Use raw_input() in Python 2
28
    ipcon.disconnect()

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.