Dies ist die Beschreibung der Python API Bindings für den RED Brick. Allgemeine Informationen über die Funktionen und technischen Spezifikationen des RED Brick sind in dessen Hardware Beschreibung zusammengefasst.
Eine Installationanleitung für die Python API Bindings ist Teil deren allgemeine Beschreibung.
Der folgende Beispielcode ist Public Domain (CC0 1.0).
Download (example_start_program.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = 'localhost'
PORT = 4223
UID = 'XXYYZZ' # Change XXYYZZ to the UID of your RED Brick
PROGRAM = 'test' # Change to your program identifier
from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_red import BrickRED
def check_error(error_code, *args):
if error_code != 0:
print('RED Brick error occurred: {0}'.format(error_code))
exit(1)
if len(args) == 1:
return args[0]
return args
def start_program(red, identifier):
# Create session and get program list
session_id = check_error(*red.create_session(10))
program_list_id = check_error(*red.get_programs(session_id))
# Iterate program list to find the one to start
started = False
for i in range(check_error(*red.get_list_length(program_list_id))):
program_id, _ = check_error(*red.get_list_item(program_list_id, i, session_id))
# Get program identifier string
string_id = check_error(*red.get_program_identifier(program_id, session_id))
string_length = check_error(*red.get_string_length(string_id))
string_data = ''
while len(string_data) < string_length:
string_data += check_error(*red.get_string_chunk(string_id, len(string_data)))
check_error(red.release_object(string_id, session_id))
# Check if this is the program to be started
if string_data.decode('utf-8') == identifier:
check_error(red.start_program(program_id))
started = True
check_error(red.release_object(program_id, session_id))
if started:
break
check_error(red.release_object(program_list_id, session_id))
check_error(red.expire_session(session_id))
return started
if __name__ == '__main__':
ipcon = IPConnection() # Create IP connection
red = BrickRED(UID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected
if start_program(red, PROGRAM):
print('Started RED Brick program: {0}'.format(PROGRAM))
else:
print('RED Brick program not found: {0}'.format(PROGRAM))
input("Press key to exit\n") # Use raw_input() in Python 2
ipcon.disconnect()
|
Download (example_read_file.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = 'localhost'
PORT = 4223
UID = 'XXYYZZ' # Change XXYYZZ to the UID of your RED Brick
REMOTE_PATH = '/home/tf/foobar.txt' # Change to your remote path
LOCAL_PATH = 'foobar.txt' # Change to your local path
import sys
from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_red import BrickRED
def check_error(error_code, *args):
if error_code != 0:
raise Exception('RED Brick error occurred: {0}'.format(error_code))
if len(args) == 1:
return args[0]
return args
def allocate_string(red, string, session_id):
string_id = check_error(*red.allocate_string(len(string), string[:58], session_id))
for offset in range(58, len(string), 58):
check_error(red.set_string_chunk(string_id, offset, string[offset:offset + 58]))
return string_id
def read_file(red, remote_path, local_path):
# Create session
session_id = check_error(*red.create_session(60))
# Create remote non-executable file for writing as user/group tf
remote_path_id = allocate_string(red, remote_path, session_id)
remote_file_id = check_error(*red.open_file(remote_path_id,
BrickRED.FILE_FLAG_READ_ONLY |
BrickRED.FILE_FLAG_NON_BLOCKING,
0, 0, 0, session_id))
check_error(red.release_object(remote_path_id, session_id))
# Open local file for writing
local_file = open(local_path, 'wb')
# Read remote file and write to local file
transferred = 0
while True:
data, length_read = check_error(*red.read_file(remote_file_id, 61))
data = data[:length_read]
if len(data) == 0:
break
if sys.version_info[0] > 2:
local_file.write(bytes(data))
else:
local_file.write(''.join(map(chr, data)))
check_error(red.keep_session_alive(session_id, 30))
transferred += length_read
# Close local file
local_file.close()
# Close remote file
check_error(red.release_object(remote_file_id, session_id))
# Expire session
check_error(red.expire_session(session_id))
print('{0} bytes transferred'.format(transferred))
if __name__ == '__main__':
ipcon = IPConnection() # Create IP connection
red = BrickRED(UID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected
read_file(red, REMOTE_PATH, LOCAL_PATH)
input("Press key to exit\n") # Use raw_input() in Python 2
ipcon.disconnect()
|
Download (example_write_file.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = 'localhost'
PORT = 4223
UID = 'XXYYZZ' # Change XXYYZZ to the UID of your RED Brick
LOCAL_PATH = 'foobar.txt' # Change to your local path
REMOTE_PATH = '/home/tf/foobar.txt' # Change to your remote path
import sys
from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_red import BrickRED
def check_error(error_code, *args):
if error_code != 0:
raise Exception('RED Brick error occurred: {0}'.format(error_code))
if len(args) == 1:
return args[0]
return args
def allocate_string(red, string, session_id):
string_id = check_error(*red.allocate_string(len(string), string[:58], session_id))
for offset in range(58, len(string), 58):
check_error(red.set_string_chunk(string_id, offset, string[offset:offset + 58]))
return string_id
def write_file(red, local_path, remote_path):
# Open local file for reading
local_file = open(local_path, 'rb')
# Create session
session_id = check_error(*red.create_session(60))
# Create remote non-executable file for writing as user/group tf
remote_path_id = allocate_string(red, remote_path, session_id)
remote_file_id = check_error(*red.open_file(remote_path_id,
BrickRED.FILE_FLAG_WRITE_ONLY |
BrickRED.FILE_FLAG_CREATE |
BrickRED.FILE_FLAG_TRUNCATE |
BrickRED.FILE_FLAG_NON_BLOCKING,
0o644, 1000, 1000, session_id))
check_error(red.release_object(remote_path_id, session_id))
# Read local file and write to remote file
transferred = 0
while True:
data = list(local_file.read(61))
if sys.version_info[0] < 3:
data = map(ord, data)
if len(data) == 0:
break
length_to_write = len(data)
data += [0] * (61 - length_to_write)
length_written = check_error(*red.write_file(remote_file_id, data, length_to_write))
if length_written != length_to_write:
print('Short write')
exit(1)
check_error(red.keep_session_alive(session_id, 30))
transferred += length_written
# Close remote file
check_error(red.release_object(remote_file_id, session_id))
# Close local file
local_file.close()
# Expire session
check_error(red.expire_session(session_id))
print('{0} bytes transferred'.format(transferred))
if __name__ == '__main__':
ipcon = IPConnection() # Create IP connection
red = BrickRED(UID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected
write_file(red, LOCAL_PATH, REMOTE_PATH)
input("Press key to exit\n") # Use raw_input() in Python 2
ipcon.disconnect()
|
Download (example_list_directory.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = 'localhost'
PORT = 4223
UID = 'XXYYZZ' # Change XXYYZZ to the UID of your RED Brick
DIRECTORY_PATH = '/home/tf' # Change to your directory path
import sys
from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_red import BrickRED
DIRECTORY_ENTRY_TYPE = {
BrickRED.DIRECTORY_ENTRY_TYPE_UNKNOWN: 'unknown',
BrickRED.DIRECTORY_ENTRY_TYPE_REGULAR: 'regular',
BrickRED.DIRECTORY_ENTRY_TYPE_DIRECTORY: 'directory',
BrickRED.DIRECTORY_ENTRY_TYPE_CHARACTER: 'character',
BrickRED.DIRECTORY_ENTRY_TYPE_BLOCK: 'block',
BrickRED.DIRECTORY_ENTRY_TYPE_FIFO: 'fifo',
BrickRED.DIRECTORY_ENTRY_TYPE_SYMLINK: 'symlink',
BrickRED.DIRECTORY_ENTRY_TYPE_SOCKET: 'socket'
}
def check_error(error_code, *args):
if error_code != 0:
raise Exception('RED Brick error occurred: {0}'.format(error_code))
if len(args) == 1:
return args[0]
return args
def allocate_string(red, string, session_id):
string_id = check_error(*red.allocate_string(len(string), string[:58], session_id))
for offset in range(58, len(string), 58):
check_error(red.set_string_chunk(string_id, offset, string[offset:offset + 58]))
return string_id
def get_string(red, string_id):
length = check_error(*red.get_string_length(string_id))
string = []
while len(string) < length:
chunk = check_error(*red.get_string_chunk(string_id, len(string)))
string += map(ord, chunk)
if sys.version_info[0] > 2:
string = bytes(string)
else:
string = ''.join(map(chr, string))
return string.decode('utf-8')
def list_directory(red, directory_path):
# Create session
session_id = check_error(*red.create_session(60))
# Open directory
directory_path_id = allocate_string(red, directory_path, session_id)
directory_id = check_error(*red.open_directory(directory_path_id, session_id))
check_error(red.release_object(directory_path_id, session_id))
# Get directory entries
while True:
result = red.get_next_directory_entry(directory_id, session_id)
if result.error_code == BrickRED.ERROR_CODE_NO_MORE_DATA:
break
entry_name_id, entry_type = check_error(*result)
entry_name = get_string(red, entry_name_id)
check_error(red.release_object(entry_name_id, session_id))
print('name: {0}, type: {1}'.format(entry_name, DIRECTORY_ENTRY_TYPE[entry_type]))
# Close directory
check_error(red.release_object(directory_id, session_id))
# Expire session
check_error(red.expire_session(session_id))
if __name__ == '__main__':
ipcon = IPConnection() # Create IP connection
red = BrickRED(UID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected
list_directory(red, DIRECTORY_PATH)
input("Press key to exit\n") # Use raw_input() in Python 2
ipcon.disconnect()
|
Download (example_remove_file.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = 'localhost'
PORT = 4223
UID = 'XXYYZZ' # Change XXYYZZ to the UID of your RED Brick
REMOTE_PATH = '/home/tf/foobar.txt' # Change to your remote path
import sys
import time
from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_red import BrickRED
def check_error(error_code, *args):
if error_code != 0:
raise Exception('RED Brick error occurred: {0}'.format(error_code))
if len(args) == 1:
return args[0]
return args
def allocate_string(red, string, session_id):
string_id = check_error(*red.allocate_string(len(string), string[:58], session_id))
for offset in range(58, len(string), 58):
check_error(red.set_string_chunk(string_id, offset, string[offset:offset + 58]))
return string_id
def remove_file(red, remote_path):
# Create session
session_id = check_error(*red.create_session(60))
# Prepare spawn-process call
executable_id = allocate_string(red, '/bin/rm', session_id)
remote_path_id = allocate_string(red, remote_path, session_id)
arguments_id = check_error(*red.allocate_list(1, session_id))
check_error(red.append_to_list(arguments_id, remote_path_id))
check_error(red.release_object(remote_path_id, session_id))
environment_id = check_error(*red.allocate_list(0, session_id))
working_directory_id = allocate_string(red, '/', session_id)
dev_zero_id = allocate_string(red, '/dev/zero', session_id)
stdin_id = check_error(*red.open_file(dev_zero_id,
BrickRED.FILE_FLAG_READ_ONLY |
BrickRED.FILE_FLAG_NON_BLOCKING,
0, 1000, 1000, session_id))
check_error(red.release_object(dev_zero_id, session_id))
dev_null_id = allocate_string(red, '/dev/null', session_id)
stdout_id = check_error(*red.open_file(dev_null_id,
BrickRED.FILE_FLAG_WRITE_ONLY |
BrickRED.FILE_FLAG_NON_BLOCKING,
0, 1000, 1000, session_id))
check_error(red.release_object(dev_null_id, session_id))
# Spawn rm process to remove remote file
process_id = check_error(*red.spawn_process(executable_id,
arguments_id,
environment_id,
working_directory_id,
1000, 1000,
stdin_id,
stdout_id,
stdout_id,
session_id))
check_error(red.release_object(executable_id, session_id))
check_error(red.release_object(arguments_id, session_id))
check_error(red.release_object(environment_id, session_id))
check_error(red.release_object(working_directory_id, session_id))
check_error(red.release_object(stdin_id, session_id))
check_error(red.release_object(stdout_id, session_id))
# Busy wait for rm process to finish
# FIXME: Could use CALLBACK_PROCESS_STATE_CHANGED instead
state, timestamp, exit_code = check_error(*red.get_process_state(process_id))
while state in [BrickRED.PROCESS_STATE_UNKNOWN, BrickRED.PROCESS_STATE_RUNNING]:
time.sleep(0.1)
state, timestamp, exit_code = check_error(*red.get_process_state(process_id))
check_error(red.keep_session_alive(session_id, 10))
check_error(red.release_object(process_id, session_id))
# Expire session
check_error(red.expire_session(session_id))
# Report result
if state == BrickRED.PROCESS_STATE_ERROR:
print('Removing {0} failed with an internal error'.format(remote_path))
elif state == BrickRED.PROCESS_STATE_EXITED:
if exit_code == 0:
print('Removed {0}'.format(remote_path))
else:
# FIXME: Could report stdout/stderr from /bin/rm here
print('Removing {0} failed with /bin/rm exit code {1}'.format(remote_path, exit_code))
elif state == BrickRED.PROCESS_STATE_KILLED:
print('Removing {0} failed with /bin/rm being killed by signal {1}'.format(remote_path, exit_code))
elif state == BrickRED.PROCESS_STATE_STOPPED:
print('Removing {0} failed with /bin/rm being stopped')
else:
print('Removing {0} failed with an unknown error'.format(remote_path))
if __name__ == '__main__':
ipcon = IPConnection() # Create IP connection
red = BrickRED(UID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected
remove_file(red, REMOTE_PATH)
input("Press key to exit\n") # Use raw_input() in Python 2
ipcon.disconnect()
|
Download (example_spawn_process.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
HOST = 'localhost'
PORT = 4223
UID = 'XXYYZZ' # Change XXYYZZ to the UID of your RED Brick
import sys
import time
from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_red import BrickRED
def check_error(error_code, *args):
if error_code != 0:
raise Exception('RED Brick error occurred: {0}'.format(error_code))
if len(args) == 1:
return args[0]
return args
def allocate_string(red, string, session_id):
string_id = check_error(*red.allocate_string(len(string), string[:58], session_id))
for offset in range(58, len(string), 58):
check_error(red.set_string_chunk(string_id, offset, string[offset:offset + 58]))
return string_id
def spawn_process(red, executable, arguments):
# Create session
session_id = check_error(*red.create_session(60))
# Prepare spawn-process call
executable_id = allocate_string(red, executable, session_id)
arguments_id = check_error(*red.allocate_list(1, session_id))
for argument in arguments:
argument_id = allocate_string(red, argument, session_id)
check_error(red.append_to_list(arguments_id, argument_id))
check_error(red.release_object(argument_id, session_id))
environment_id = check_error(*red.allocate_list(0, session_id))
working_directory_id = allocate_string(red, '/', session_id)
dev_zero_id = allocate_string(red, '/dev/zero', session_id)
stdin_id = check_error(*red.open_file(dev_zero_id,
BrickRED.FILE_FLAG_READ_ONLY |
BrickRED.FILE_FLAG_NON_BLOCKING,
0, 1000, 1000, session_id))
check_error(red.release_object(dev_zero_id, session_id))
dev_null_id = allocate_string(red, '/dev/null', session_id)
stdout_id = check_error(*red.open_file(dev_null_id,
BrickRED.FILE_FLAG_WRITE_ONLY |
BrickRED.FILE_FLAG_NON_BLOCKING,
0, 1000, 1000, session_id))
check_error(red.release_object(dev_null_id, session_id))
# Spawn rm process to remove remote file
process_id = check_error(*red.spawn_process(executable_id,
arguments_id,
environment_id,
working_directory_id,
1000, 1000,
stdin_id,
stdout_id,
stdout_id,
session_id))
check_error(red.release_object(executable_id, session_id))
check_error(red.release_object(arguments_id, session_id))
check_error(red.release_object(environment_id, session_id))
check_error(red.release_object(working_directory_id, session_id))
check_error(red.release_object(stdin_id, session_id))
check_error(red.release_object(stdout_id, session_id))
# Busy wait for rm process to finish
# FIXME: Could use CALLBACK_PROCESS_STATE_CHANGED instead
state, timestamp, exit_code = check_error(*red.get_process_state(process_id))
while state in [BrickRED.PROCESS_STATE_UNKNOWN, BrickRED.PROCESS_STATE_RUNNING]:
time.sleep(0.1)
state, timestamp, exit_code = check_error(*red.get_process_state(process_id))
check_error(red.keep_session_alive(session_id, 10))
check_error(red.release_object(process_id, session_id))
# Expire session
check_error(red.expire_session(session_id))
# Report result
if state == BrickRED.PROCESS_STATE_ERROR:
print('Executing {0} failed with an internal error'.format(executable))
elif state == BrickRED.PROCESS_STATE_EXITED:
if exit_code == 0:
print('Executed {0}'.format(executable))
else:
# FIXME: Could report stdout/stderr from executable here
print('Executing {0} failed with exit code {1}'.format(executable, exit_code))
elif state == BrickRED.PROCESS_STATE_KILLED:
print('Executing {0} was killed by signal {1}'.format(executable, exit_code))
elif state == BrickRED.PROCESS_STATE_STOPPED:
print('Executing {0} was stopped'.format(executable))
else:
print('Executing {0} failed with an unknown error'.format(executable))
if __name__ == '__main__':
ipcon = IPConnection() # Create IP connection
red = BrickRED(UID, ipcon) # Create device object
ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected
spawn_process(red, 'touch', ['/tmp/foobar'])
input("Press key to exit\n") # Use raw_input() in Python 2
ipcon.disconnect()
|
Prinzipiell kann jede Funktion der Python Bindings
tinkerforge.ip_connection.Error
Exception werfen, welche ein value
und
eine description
Property hat. value
kann verschiende Werte haben:
Alle folgend aufgelisteten Funktionen sind Thread-sicher.
Bemerkung
Die API Dokumentation für den RED Brick ist noch nicht vollständig.
BrickRED.
create_session
(lifetime)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
expire_session
(session_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
expire_session_unchecked
(session_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
BrickRED.
keep_session_alive
(session_id, lifetime)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
release_object
(object_id, session_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
release_object_unchecked
(object_id, session_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
BrickRED.
allocate_string
(length_to_reserve, buffer, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
truncate_string
(string_id, length)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_string_length
(string_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
set_string_chunk
(string_id, offset, buffer)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_string_chunk
(string_id, offset)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
allocate_list
(length_to_reserve, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_list_length
(list_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_list_item
(list_id, index, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für type:
BrickRED.
append_to_list
(list_id, item_object_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
remove_from_list
(list_id, index)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
open_file
(name_string_id, flags, permissions, uid, gid, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für flags:
Für permissions:
Für error_code:
BrickRED.
create_pipe
(flags, length, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für flags:
Für error_code:
BrickRED.
get_file_info
(file_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für type:
Für flags:
Für permissions:
BrickRED.
read_file
(file_id, length_to_read)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
read_file_async
(file_id, length_to_read)¶Parameter: |
|
---|---|
Rückgabe: |
|
BrickRED.
abort_async_file_read
(file_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
write_file
(file_id, buffer, length_to_write)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
write_file_unchecked
(file_id, buffer, length_to_write)¶Parameter: |
|
---|---|
Rückgabe: |
|
BrickRED.
write_file_async
(file_id, buffer, length_to_write)¶Parameter: |
|
---|---|
Rückgabe: |
|
BrickRED.
set_file_position
(file_id, offset, origin)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für origin:
Für error_code:
BrickRED.
get_file_position
(file_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
set_file_events
(file_id, events)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für events:
Für error_code:
BrickRED.
get_file_events
(file_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für events:
BrickRED.
open_directory
(name_string_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_directory_name
(directory_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_next_directory_entry
(directory_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für type:
BrickRED.
rewind_directory
(directory_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
create_directory
(name_string_id, flags, permissions, uid, gid)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für flags:
Für permissions:
Für error_code:
BrickRED.
get_processes
(session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
spawn_process
(executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id, uid, gid, stdin_file_id, stdout_file_id, stderr_file_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
kill_process
(process_id, signal)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für signal:
Für error_code:
BrickRED.
get_process_command
(process_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_process_identity
(process_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_process_stdio
(process_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_process_state
(process_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für state:
BrickRED.
get_programs
(session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
define_program
(identifier_string_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
purge_program
(program_id, cookie)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_program_identifier
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_program_root_directory
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
set_program_command
(program_id, executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_program_command
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
set_program_stdio_redirection
(program_id, stdin_redirection, stdin_file_name_string_id, stdout_redirection, stdout_file_name_string_id, stderr_redirection, stderr_file_name_string_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für stdin_redirection:
Für stdout_redirection:
Für stderr_redirection:
Für error_code:
BrickRED.
get_program_stdio_redirection
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für stdin_redirection:
Für stdout_redirection:
Für stderr_redirection:
BrickRED.
set_program_schedule
(program_id, start_mode, continue_after_error, start_interval, start_fields_string_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für start_mode:
Für error_code:
BrickRED.
get_program_schedule
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für start_mode:
BrickRED.
get_program_scheduler_state
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
Für state:
BrickRED.
continue_program_schedule
(program_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
start_program
(program_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_last_spawned_program_process
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_custom_program_option_names
(program_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
set_custom_program_option_value
(program_id, name_string_id, value_string_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_custom_program_option_value
(program_id, name_string_id, session_id)¶Parameter: |
|
---|---|
Rückgabeobjekt: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
remove_custom_program_option
(program_id, name_string_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
get_identity
()¶Rückgabeobjekt: |
|
---|
Gibt die UID, die UID zu der der Brick verbunden ist, die Position, die Hard- und Firmware Version sowie den Device Identifier zurück.
Die Position ist die Position im Stack von '0' (unterster Brick) bis '8' (oberster Brick).
Eine Liste der Device Identifier Werte ist hier zu finden. Es gibt auch eine Konstante für den Device Identifier dieses Bricks.
Callbacks können registriert werden um zeitkritische
oder wiederkehrende Daten vom Gerät zu erhalten. Die Registrierung kann
mit der Funktion register_callback()
des
Geräte Objektes durchgeführt werden. Der erste Parameter ist die Callback ID
und der zweite Parameter die Callback-Funktion:
def my_callback(param):
print(param)
red.register_callback(BrickRED.CALLBACK_EXAMPLE, my_callback)
Die verfügbaren IDs mit der dazugehörigen Parameteranzahl und -typen werden weiter unten beschrieben.
Bemerkung
Callbacks für wiederkehrende Ereignisse zu verwenden ist immer zu bevorzugen gegenüber der Verwendung von Abfragen. Es wird weniger USB-Bandbreite benutzt und die Latenz ist erheblich geringer, da es keine Paketumlaufzeit gibt.
BrickRED.
CALLBACK_ASYNC_FILE_READ
¶Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
CALLBACK_ASYNC_FILE_WRITE
¶Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für error_code:
BrickRED.
CALLBACK_FILE_EVENTS_OCCURRED
¶Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für events:
BrickRED.
CALLBACK_PROCESS_STATE_CHANGED
¶Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für state:
BrickRED.
CALLBACK_PROGRAM_SCHEDULER_STATE_CHANGED
¶Callback-Parameter: |
|
---|
BrickRED.
CALLBACK_PROGRAM_PROCESS_SPAWNED
¶Callback-Parameter: |
|
---|
Virtuelle Funktionen kommunizieren nicht mit dem Gerät selbst, sie arbeiten nur auf dem API Bindings Objekt. Dadurch können sie auch aufgerufen werden, ohne das das dazugehörige IP Connection Objekt verbunden ist.
BrickRED.
get_api_version
()¶Rückgabeobjekt: |
|
---|
Gibt die Version der API Definition zurück, die diese API Bindings implementieren. Dies ist weder die Release-Version dieser API Bindings noch gibt es in irgendeiner Weise Auskunft über den oder das repräsentierte(n) Brick oder Bricklet.
BrickRED.
get_response_expected
(function_id)¶Parameter: |
|
---|---|
Rückgabe: |
|
Gibt das Response-Expected-Flag für die Funktion mit der angegebenen Funktions IDs zurück. Es ist true falls für die Funktion beim Aufruf eine Antwort erwartet wird, false andernfalls.
Für Getter-Funktionen ist diese Flag immer gesetzt und kann nicht entfernt
werden, da diese Funktionen immer eine Antwort senden. Für
Konfigurationsfunktionen für Callbacks ist es standardmäßig gesetzt, kann aber
entfernt werden mittels set_response_expected()
. Für Setter-Funktionen ist
es standardmäßig nicht gesetzt, kann aber gesetzt werden.
Wenn das Response-Expected-Flag für eine Setter-Funktion gesetzt ist, können Timeouts und andere Fehlerfälle auch für Aufrufe dieser Setter-Funktion detektiert werden. Das Gerät sendet dann eine Antwort extra für diesen Zweck. Wenn das Flag für eine Setter-Funktion nicht gesetzt ist, dann wird keine Antwort vom Gerät gesendet und Fehler werden stillschweigend ignoriert, da sie nicht detektiert werden können.
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für function_id:
BrickRED.
set_response_expected
(function_id, response_expected)¶Parameter: |
|
---|---|
Rückgabe: |
|
Ändert das Response-Expected-Flag für die Funktion mit der angegebenen Funktion IDs. Diese Flag kann nur für Setter-Funktionen (Standardwert: false) und Konfigurationsfunktionen für Callbacks (Standardwert: true) geändert werden. Für Getter-Funktionen ist das Flag immer gesetzt.
Wenn das Response-Expected-Flag für eine Setter-Funktion gesetzt ist, können Timeouts und andere Fehlerfälle auch für Aufrufe dieser Setter-Funktion detektiert werden. Das Gerät sendet dann eine Antwort extra für diesen Zweck. Wenn das Flag für eine Setter-Funktion nicht gesetzt ist, dann wird keine Antwort vom Gerät gesendet und Fehler werden stillschweigend ignoriert, da sie nicht detektiert werden können.
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für function_id:
BrickRED.
set_response_expected_all
(response_expected)¶Parameter: |
|
---|---|
Rückgabe: |
|
Ändert das Response-Expected-Flag für alle Setter-Funktionen und Konfigurationsfunktionen für Callbacks diese Gerätes.
BrickRED.
DEVICE_IDENTIFIER
¶Diese Konstante wird verwendet um einen RED Brick zu identifizieren.
Die get_identity()
Funktion und der
IPConnection.CALLBACK_ENUMERATE
Callback der IP Connection haben ein device_identifier
Parameter um den Typ
des Bricks oder Bricklets anzugeben.
BrickRED.
DEVICE_DISPLAY_NAME
¶Diese Konstante stellt den Anzeigenamen eines RED Brick dar.