Dies ist die Beschreibung der Delphi/Lazarus 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 Delphi/Lazarus API Bindings ist Teil deren allgemeine Beschreibung.
Der folgende Beispielcode ist Public Domain (CC0 1.0).
Download (ExampleReadFile.pas)
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 120 121 | program ExampleReadFile;
{$ifdef MSWINDOWS}{$apptype CONSOLE}{$endif}
{$ifdef FPC}{$mode OBJFPC}{$H+}{$endif}
uses
SysUtils, IPConnection, BrickRED;
type
TExample = class
private
ipcon: TIPConnection;
red: TBrickRED;
public
procedure CheckError(context: string; errorCode: byte);
function AllocateString(sessionId: word; buffer: string): word;
procedure ReadFile(remotePath: string; localPath: string);
procedure Execute;
end;
const
HOST = 'localhost';
PORT = 4223;
UID = 'XXYYZZ'; { Change XXYYZZ to the UID of your RED Brick }
var
e: TExample;
procedure TExample.CheckError(context: string; errorCode: byte);
begin
if (errorCode <> 0) then begin
raise Exception.Create(Format('%s error occurred: %d', [context, errorCode]));
end;
end;
function TExample.AllocateString(sessionId: word; buffer: string): word;
var errorCode: byte; stringId: word;
begin
if (Length(buffer) > 60) then begin
{ FIXME: Currently this helper function only supports strings up to 60 characters }
raise Exception.Create('String too long');
end;
red.AllocateString(Length(buffer), buffer, sessionId, errorCode, stringId);
CheckError('AllocateString', errorCode);
result := stringId;
end;
procedure TExample.ReadFile(remotePath: string; localPath: string);
var errorCode: byte; sessionId: word; remotePathStringId: word; remoteFileId: word;
buffer: TArray0To61OfUInt8; lengthRead: byte; localFile: file; counter: longint;
begin
{ Create session }
red.CreateSession(60, errorCode, sessionId);
CheckError('CreateSession', errorCode);
{ Wrap remote path string }
remotePathStringId := AllocateString(sessionId, remotePath);
{ Open remote file for reading }
red.OpenFile(remotePathStringId, BRICK_RED_FILE_FLAG_READ_ONLY or BRICK_RED_FILE_FLAG_NON_BLOCKING,
0, 0, 0, sessionId, errorCode, remoteFileId);
CheckError('OpenFile', errorCode);
{ Open local file for writing }
Assign(localFile, localPath);
Rewrite(localFile, 1);
{ Read remote file and write to local file }
counter := 500;
repeat
red.ReadFile(remoteFileId, 62, errorCode, buffer, lengthRead);
CheckError('ReadFile', errorCode);
BlockWrite(localFile, buffer, lengthRead);
Dec(counter);
if (counter = 0) then begin
counter := 500;
Write('.');
errorCode := red.KeepSessionAlive(sessionId, 30);
CheckError('KeepSessionAlive', errorCode);
end;
until (lengthRead = 0);
WriteLn('.');
{ Close local file }
Close(localFile);
{ Close remote file }
red.ReleaseObjectUnchecked(remoteFileId, sessionId);
{ Expire session }
red.ExpireSessionUnchecked(sessionId);
end;
procedure TExample.Execute;
begin
{ Create IP connection }
ipcon := TIPConnection.Create;
{ Create device object }
red := TBrickRED.Create(UID, ipcon);
{ Connect to brickd }
ipcon.Connect(HOST, PORT);
{ Don't use device before ipcon is connected }
{ Read /home/tf/foobar.txt on RED Brick and write it locally to foobar.txt }
ReadFile('/home/tf/foobar.txt', 'foobar.txt');
WriteLn('Press key to exit');
ReadLn;
ipcon.Destroy; { Calls ipcon.Disconnect internally }
end;
begin
e := TExample.Create;
e.Execute;
e.Destroy;
end.
|
Download (ExampleWriteFile.pas)
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 120 121 122 123 124 125 126 127 128 129 130 | program ExampleWriteFile;
{$ifdef MSWINDOWS}{$apptype CONSOLE}{$endif}
{$ifdef FPC}{$mode OBJFPC}{$H+}{$endif}
uses
SysUtils, IPConnection, BrickRED;
type
TExample = class
private
ipcon: TIPConnection;
red: TBrickRED;
public
procedure CheckError(context: string; errorCode: byte);
function AllocateString(sessionId: word; buffer: string): word;
procedure WriteFile(localPath: string; remotePath: string);
procedure Execute;
end;
const
HOST = 'localhost';
PORT = 4223;
UID = 'XXYYZZ'; { Change XXYYZZ to the UID of your RED Brick }
var
e: TExample;
procedure TExample.CheckError(context: string; errorCode: byte);
begin
if (errorCode <> 0) then begin
raise Exception.Create(Format('%s error occurred: %d', [context, errorCode]));
end;
end;
function TExample.AllocateString(sessionId: word; buffer: string): word;
var errorCode: byte; stringId: word;
begin
if (Length(buffer) > 60) then begin
{ FIXME: Currently this helper function only supports strings up to 60 characters }
raise Exception.Create('String too long');
end;
red.AllocateString(Length(buffer), buffer, sessionId, errorCode, stringId);
CheckError('AllocateString', errorCode);
result := stringId;
end;
procedure TExample.WriteFile(localPath: string; remotePath: string);
var errorCode: byte; sessionId: word; remotePathStringId: word; remoteFileId: word;
buffer: TArray0To60OfUInt8; lengthRead: longint; localFile: file; lengthWritten: byte;
counter: longint;
begin
{ Open local file for reading }
Assign(localFile, localPath);
Reset(localFile, 1);
{ Create session }
red.CreateSession(60, errorCode, sessionId);
CheckError('CreateSession', errorCode);
{ Wrap remote path string }
remotePathStringId := AllocateString(sessionId, remotePath);
{ Create remote non-executable file for writing as user/group tf }
red.OpenFile(remotePathStringId,
BRICK_RED_FILE_FLAG_WRITE_ONLY or BRICK_RED_FILE_FLAG_CREATE or
BRICK_RED_FILE_FLAG_TRUNCATE or BRICK_RED_FILE_FLAG_NON_BLOCKING,
420 { 0o644 }, 1000, 1000, sessionId, errorCode, remoteFileId);
CheckError('OpenFile', errorCode);
{ Read local file and write to remote file }
counter := 500;
repeat
BlockRead(localFile, buffer, 61, lengthRead);
red.WriteFile(remoteFileId, buffer, lengthRead, errorCode, lengthWritten);
CheckError('WriteFile', errorCode);
if (lengthRead <> lengthWritten) then begin
{ FIXME: Currently this example doesn't handle short writes }
raise Exception.Create('Short write');
end;
Dec(counter);
if (counter = 0) then begin
counter := 500;
Write('.');
errorCode := red.KeepSessionAlive(sessionId, 30);
CheckError('KeepSessionAlive', errorCode);
end;
until (lengthRead = 0);
WriteLn('.');
{ Close remote file }
red.ReleaseObjectUnchecked(remoteFileId, sessionId);
{ Close local file }
Close(localFile);
{ Expire session }
red.ExpireSessionUnchecked(sessionId);
end;
procedure TExample.Execute;
begin
{ Create IP connection }
ipcon := TIPConnection.Create;
{ Create device object }
red := TBrickRED.Create(UID, ipcon);
{ Connect to brickd }
ipcon.Connect(HOST, PORT);
{ Don't use device before ipcon is connected }
{ Read foobar.txt locally and write it to /home/tf/foobar.txt on RED Brick }
WriteFile('foobar.txt', '/home/tf/foobar.txt');
WriteLn('Press key to exit');
ReadLn;
ipcon.Destroy; { Calls ipcon.Disconnect internally }
end;
begin
e := TExample.Create;
e.Execute;
e.Destroy;
end.
|
Da Delphi nicht mehrere Rückgabewerte direkt unterstützt, wird das out
Schlüsselwort genutzt um mehrere Werte von einer Funktion zurückzugeben.
Alle folgend aufgelisteten Funktionen und Prozeduren sind Thread-sicher.
Bemerkung
Die API Dokumentation für den RED Brick ist noch nicht vollständig.
TBrickRED.
CreateSession
(const lifetime: longword; out errorCode: byte; out sessionId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
ExpireSession
(const sessionId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
ExpireSessionUnchecked
(const sessionId: word)¶Parameter: |
|
---|
TBrickRED.
KeepSessionAlive
(const sessionId: word; const lifetime: longword): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
ReleaseObject
(const objectId: word; const sessionId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
ReleaseObjectUnchecked
(const objectId: word; const sessionId: word)¶Parameter: |
|
---|
TBrickRED.
AllocateString
(const lengthToReserve: longword; const buffer: string; const sessionId: word; out errorCode: byte; out stringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
TruncateString
(const stringId: word; const length: longword): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetStringLength
(const stringId: word; out errorCode: byte; out length: longword)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
SetStringChunk
(const stringId: word; const offset: longword; const buffer: string): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetStringChunk
(const stringId: word; const offset: longword; out errorCode: byte; out buffer: string)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
AllocateList
(const lengthToReserve: word; const sessionId: word; out errorCode: byte; out listId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetListLength
(const listId: word; out errorCode: byte; out length: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetListItem
(const listId: word; const index: word; const sessionId: word; out errorCode: byte; out itemObjectId: word; out type: byte)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für type:
TBrickRED.
AppendToList
(const listId: word; const itemObjectId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
RemoveFromList
(const listId: word; const index: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
OpenFile
(const nameStringId: word; const flags: longword; const permissions: word; const uid: longword; const gid: longword; const sessionId: word; out errorCode: byte; out fileId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für flags:
Für permissions:
Für errorCode:
TBrickRED.
CreatePipe
(const flags: longword; const length: uint64; const sessionId: word; out errorCode: byte; out fileId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für flags:
Für errorCode:
TBrickRED.
GetFileInfo
(const fileId: word; const sessionId: word; out errorCode: byte; out type: byte; out nameStringId: word; out flags: longword; out permissions: word; out uid: longword; out gid: longword; out length: uint64; out accessTimestamp: uint64; out modificationTimestamp: uint64; out statusChangeTimestamp: uint64)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für type:
Für flags:
Für permissions:
TBrickRED.
ReadFile
(const fileId: word; const lengthToRead: byte; out errorCode: byte; out buffer: array [0..61] of byte; out lengthRead: byte)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
ReadFileAsync
(const fileId: word; const lengthToRead: uint64)¶Parameter: |
|
---|
TBrickRED.
AbortAsyncFileRead
(const fileId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
WriteFile
(const fileId: word; const buffer: array [0..60] of byte; const lengthToWrite: byte; out errorCode: byte; out lengthWritten: byte)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
WriteFileUnchecked
(const fileId: word; const buffer: array [0..60] of byte; const lengthToWrite: byte)¶Parameter: |
|
---|
TBrickRED.
WriteFileAsync
(const fileId: word; const buffer: array [0..60] of byte; const lengthToWrite: byte)¶Parameter: |
|
---|
TBrickRED.
SetFilePosition
(const fileId: word; const offset: int64; const origin: byte; out errorCode: byte; out position: uint64)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für origin:
Für errorCode:
TBrickRED.
GetFilePosition
(const fileId: word; out errorCode: byte; out position: uint64)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
SetFileEvents
(const fileId: word; const events: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für events:
Für errorCode:
TBrickRED.
GetFileEvents
(const fileId: word; out errorCode: byte; out events: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für events:
TBrickRED.
OpenDirectory
(const nameStringId: word; const sessionId: word; out errorCode: byte; out directoryId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetDirectoryName
(const directoryId: word; const sessionId: word; out errorCode: byte; out nameStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetNextDirectoryEntry
(const directoryId: word; const sessionId: word; out errorCode: byte; out nameStringId: word; out type: byte)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für type:
TBrickRED.
RewindDirectory
(const directoryId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
CreateDirectory
(const nameStringId: word; const flags: longword; const permissions: word; const uid: longword; const gid: longword): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für flags:
Für permissions:
Für errorCode:
TBrickRED.
GetProcesses
(const sessionId: word; out errorCode: byte; out processesListId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
SpawnProcess
(const executableStringId: word; const argumentsListId: word; const environmentListId: word; const workingDirectoryStringId: word; const uid: longword; const gid: longword; const stdinFileId: word; const stdoutFileId: word; const stderrFileId: word; const sessionId: word; out errorCode: byte; out processId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
KillProcess
(const processId: word; const signal: byte): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für signal:
Für errorCode:
TBrickRED.
GetProcessCommand
(const processId: word; const sessionId: word; out errorCode: byte; out executableStringId: word; out argumentsListId: word; out environmentListId: word; out workingDirectoryStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetProcessIdentity
(const processId: word; out errorCode: byte; out pid: longword; out uid: longword; out gid: longword)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetProcessStdio
(const processId: word; const sessionId: word; out errorCode: byte; out stdinFileId: word; out stdoutFileId: word; out stderrFileId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetProcessState
(const processId: word; out errorCode: byte; out state: byte; out timestamp: uint64; out exitCode: byte)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für state:
TBrickRED.
GetPrograms
(const sessionId: word; out errorCode: byte; out programsListId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
DefineProgram
(const identifierStringId: word; const sessionId: word; out errorCode: byte; out programId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
PurgeProgram
(const programId: word; const cookie: longword): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetProgramIdentifier
(const programId: word; const sessionId: word; out errorCode: byte; out identifierStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetProgramRootDirectory
(const programId: word; const sessionId: word; out errorCode: byte; out rootDirectoryStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
SetProgramCommand
(const programId: word; const executableStringId: word; const argumentsListId: word; const environmentListId: word; const workingDirectoryStringId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetProgramCommand
(const programId: word; const sessionId: word; out errorCode: byte; out executableStringId: word; out argumentsListId: word; out environmentListId: word; out workingDirectoryStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
SetProgramStdioRedirection
(const programId: word; const stdinRedirection: byte; const stdinFileNameStringId: word; const stdoutRedirection: byte; const stdoutFileNameStringId: word; const stderrRedirection: byte; const stderrFileNameStringId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für stdinRedirection:
Für stdoutRedirection:
Für stderrRedirection:
Für errorCode:
TBrickRED.
GetProgramStdioRedirection
(const programId: word; const sessionId: word; out errorCode: byte; out stdinRedirection: byte; out stdinFileNameStringId: word; out stdoutRedirection: byte; out stdoutFileNameStringId: word; out stderrRedirection: byte; out stderrFileNameStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für stdinRedirection:
Für stdoutRedirection:
Für stderrRedirection:
TBrickRED.
SetProgramSchedule
(const programId: word; const startMode: byte; const continueAfterError: boolean; const startInterval: longword; const startFieldsStringId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für startMode:
Für errorCode:
TBrickRED.
GetProgramSchedule
(const programId: word; const sessionId: word; out errorCode: byte; out startMode: byte; out continueAfterError: boolean; out startInterval: longword; out startFieldsStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für startMode:
TBrickRED.
GetProgramSchedulerState
(const programId: word; const sessionId: word; out errorCode: byte; out state: byte; out timestamp: uint64; out messageStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
Für state:
TBrickRED.
ContinueProgramSchedule
(const programId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
StartProgram
(const programId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetLastSpawnedProgramProcess
(const programId: word; const sessionId: word; out errorCode: byte; out processId: word; out timestamp: uint64)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetCustomProgramOptionNames
(const programId: word; const sessionId: word; out errorCode: byte; out namesListId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
SetCustomProgramOptionValue
(const programId: word; const nameStringId: word; const valueStringId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetCustomProgramOptionValue
(const programId: word; const nameStringId: word; const sessionId: word; out errorCode: byte; out valueStringId: word)¶Parameter: |
|
---|---|
Ausgabeparameter: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
RemoveCustomProgramOption
(const programId: word; const nameStringId: word): byte¶Parameter: |
|
---|---|
Rückgabe: |
|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
GetIdentity
(out uid: string; out connectedUid: string; out position: char; out hardwareVersion: array [0..2] of byte; out firmwareVersion: array [0..2] of byte; out deviceIdentifier: word)¶Ausgabeparameter: |
|
---|
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 erfolgt indem eine Prozedur einem Callback Property des Geräte Objektes zugewiesen wird:
procedure TExample.MyCallback(sender: TBrickRED; const value: longint); begin WriteLn(Format('Value: %d', [value])); end; red.OnExample := {$ifdef FPC}@{$endif}example.MyCallback;
Die verfügbaren Callback Properties und ihre Parametertypen 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.
TBrickRED.
OnAsyncFileRead
¶procedure(sender: TBrickRED; const fileId: word; const errorCode: byte; const buffer: array [0..59] of byte; const lengthRead: byte) of object;
Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
OnAsyncFileWrite
¶procedure(sender: TBrickRED; const fileId: word; const errorCode: byte; const lengthWritten: byte) of object;
Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für errorCode:
TBrickRED.
OnFileEventsOccurred
¶procedure(sender: TBrickRED; const fileId: word; const events: word) of object;
Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für events:
TBrickRED.
OnProcessStateChanged
¶procedure(sender: TBrickRED; const processId: word; const state: byte; const timestamp: uint64; const exitCode: byte) of object;
Callback-Parameter: |
|
---|
Die folgenden Konstanten sind für diese Funktion verfügbar:
Für state:
TBrickRED.
OnProgramSchedulerStateChanged
¶procedure(sender: TBrickRED; const programId: word) of object;
Callback-Parameter: |
|
---|
TBrickRED.
OnProgramProcessSpawned
¶procedure(sender: TBrickRED; const programId: word) of object;
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.
TBrickRED.
GetAPIVersion
: array [0..2] of byte¶Ausgabeparameter: |
|
---|
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.
TBrickRED.
GetResponseExpected
(const functionId: byte): boolean¶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 SetResponseExpected
. 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 functionId:
TBrickRED.
SetResponseExpected
(const functionId: byte; const responseExpected: boolean)¶Parameter: |
|
---|
Ä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 functionId:
TBrickRED.
SetResponseExpectedAll
(const responseExpected: boolean)¶Parameter: |
|
---|
Ändert das Response-Expected-Flag für alle Setter-Funktionen und Konfigurationsfunktionen für Callbacks diese Gerätes.
BRICK_RED_DEVICE_IDENTIFIER
¶Diese Konstante wird verwendet um einen RED Brick zu identifizieren.
Die GetIdentity
Funktion und der
TIPConnection.OnEnumerate
Callback der IP Connection haben ein deviceIdentifier
Parameter um den Typ
des Bricks oder Bricklets anzugeben.
BRICK_RED_DEVICE_DISPLAY_NAME
¶Diese Konstante stellt den Anzeigenamen eines RED Brick dar.