16. Sonstige Schnittstellen
16.1. SSH-Öffentlichen Schlüssel abrufen
1/**
2* @brief Gibt den öffentlichen SSH-Schlüssel zurück.
3* @param [out] keygen Öffentlicher Schlüssel.
4* @return Fehlercode.
5*/
6int GetSSHKeygen(ref string keygen);
16.2. SCP-Befehl senden
Neu in Version C#SDK-V1.1.4: Web-3.8.3
1/**
2* @brief Sendet einen SCP-Befehl.
3* @param [in] mode 0-Upload (PC->Controller), 1-Download (Controller->PC).
4* @param [in] sshname Benutzername auf dem PC.
5* @param [in] sship IP-Adresse des PCs.
6* @param [in] usr_file_url Dateipfad auf dem PC.
7* @param [in] robot_file_url Dateipfad im Robotercontroller.
8* @return Fehlercode.
9*/
10int SetSSHScpCmd(int mode, string sshname, string sship, string usr_file_url, string robot_file_url);
16.3. MD5-Wert einer Datei unter einem bestimmten Pfad berechnen
1/**
2* @brief Berechnet den MD5-Wert einer Datei unter einem bestimmten Pfad.
3* @param [in] file_path Dateipfad inklusive Dateiname. Standard-Traj-Ordnerpfad: "/fruser/traj/", z.B. "/fruser/traj/trajHelix_aima_1.txt".
4* @param [out] md5 MD5-Wert der Datei.
5* @return Fehlercode.
6*/
7int ComputeFileMD5(string file_path, ref string md5);
16.4. Codebeispiel für Roboter-SSH- und MD5-Befehle
Neu in Version C#SDK-V1.1.4: Web-3.8.3
1private void button46_Click(object sender, EventArgs e)
2{
3 string file_path = "/fruser/airlab.lua";
4 string md5 = "";
5 byte emerg_state = 0;
6 byte si0_state = 0;
7 byte si1_state = 0;
8 int sdk_com_state = 0;
9
10 string ssh_keygen = "";
11 int retval = robot.GetSSHKeygen(ref ssh_keygen);
12 Console.WriteLine("GetSSHKeygen retval is: {0}", retval);
13 Console.WriteLine("ssh key is: {0}", ssh_keygen);
14
15 string ssh_name = "fr";
16 string ssh_ip = "192.168.58.45";
17 string ssh_route = "/home/fr";
18 string ssh_robot_url = "/root/robot/dhpara.config";
19 retval = robot.SetSSHScpCmd(1, ssh_name, ssh_ip, ssh_route, ssh_robot_url);
20 Console.WriteLine("SetSSHScpCmd retval is: {0}", retval);
21 Console.WriteLine("robot url is: {0}", ssh_robot_url);
22
23 robot.ComputeFileMD5(file_path, ref md5);
24 Console.WriteLine("md5 is: {0}", md5);
25}
16.5. Feedback-Periode für den Roboter-Port 20004 einstellen
1/**
2* @brief Stellt die Feedback-Periode für den Roboter-Port 20004 ein.
3* @param [in] period Feedback-Periode für Port 20004 (ms).
4* @return Fehlercode.
5*/
6int SetRobotRealtimeStateSamplePeriod(int period);
16.6. Feedback-Periode für den Roboter-Port 20004 abrufen
1/**
2* @brief Gibt die Feedback-Periode für den Roboter-Port 20004 zurück.
3* @param [out] period Feedback-Periode für Port 20004 (ms).
4* @return Fehlercode.
5*/
6int GetRobotRealtimeStateSamplePeriod(ref int period);
16.7. Codebeispiel für die Konfiguration der Feedback-Periode von Port 20004
1private void button47_Click(object sender, EventArgs e)
2{
3 robot.SetRobotRealtimeStateSamplePeriod(10);
4 int getPeriod = 0;
5 robot.GetRobotRealtimeStateSamplePeriod(ref getPeriod);
6 Console.WriteLine("period is {0}", getPeriod);
7 Thread.Sleep(1000);
8}
16.8. Roboter-Software-Upgrade
1/**
2* @brief Führt ein Software-Upgrade des Roboters durch.
3* @param [in] filePath Vollständiger Pfad zum Software-Upgrade-Paket.
4* @param [in] block Blockierend bis zum Abschluss des Upgrades warten? true: blockierend; false: nicht blockierend.
5* @return Fehlercode.
6*/
7int SoftwareUpgrade(string filePath, bool block);
16.9. Status des Roboter-Software-Upgrades abrufen
1/**
2* @brief Gibt den Status des Roboter-Software-Upgrades zurück.
3* @param [out] state Status des Software-Paket-Upgrades. 0-im Leerlauf oder Upgrade-Paket wird hochgeladen; 1~100: Upgrade-Fortschritt in Prozent; -1: Upgrade fehlgeschlagen; -2: Prüfsummenfehler; -3: Versionsprüfung fehlgeschlagen; -4: Entpacken fehlgeschlagen; -5: Benutzerkonfigurations-Upgrade fehlgeschlagen; -6: Peripherie-Konfigurations-Upgrade fehlgeschlagen; -7: Erweiterungsachsen-Konfigurations-Upgrade fehlgeschlagen; -8: Roboter-Konfigurations-Upgrade fehlgeschlagen; -9: DH-Parameter-Konfigurations-Upgrade fehlgeschlagen.
4* @return Fehlercode.
5*/
6int GetSoftwareUpgradeState(ref int state);
16.10. Codebeispiel für Roboter-Software-Upgrade
1private void button48_Click(object sender, EventArgs e)
2{
3 robot.SoftwareUpgrade("D://zUP/QNX382/software.tar.gz", false);
4 while (true)
5 {
6 int curState = -1;
7 robot.GetSoftwareUpgradeState(ref curState);
8 Console.WriteLine("upgrade state is {0}", curState);
9 Thread.Sleep(300);
10 }
11}
16.11. Punktetabelle herunterladen
1/**
2* @brief Lädt eine Punktetabelle vom Robotercontroller auf den lokalen Computer herunter.
3* @param [in] pointTableName Name der Punktetabelle im Controller: pointTable1.db.
4* @param [in] saveFilePath Pfad, unter dem die Punktetabelle auf dem Computer gespeichert werden soll, z.B. C://test/.
5* @return Fehlercode.
6*/
7int PointTableDownLoad(string pointTableName, string saveFilePath);
16.12. Punktetabelle hochladen
1/**
2* @brief Lädt eine Punktetabelle vom lokalen Computer in den Robotercontroller hoch.
3* @param [in] pointTableFilePath Absoluter Pfad der Punktetabelle auf dem lokalen Computer, z.B. C://test/pointTable1.db.
4* @return Fehlercode.
5*/
6int PointTableUpLoad(string pointTableFilePath);
16.13. Lua-Programm mit Punktetabelle aktualisieren
1/**
2* @brief Aktualisiert Punkte in einem Lua-Programm mit einer gegebenen Punktetabelle.
3* @param [in] pointTableName Name der Punktetabelle im Controller: "pointTable1.db". Wenn die Punktetabelle leer ist, d.h. "", wird das Lua-Programm auf das ursprüngliche Programm ohne Anwendung der Punktetabelle zurückgesetzt.
4* @param [in] luaFileName Name der zu aktualisierenden Lua-Datei, z.B. "test.lua".
5* @param [out] errorStr Fehlermeldung bei der Aktualisierung des Lua-Programms mit der Punktetabelle.
6* @return Fehlercode.
7*/
8int PointTableUpdateLua(string pointTableName, string luaFileName, ref string errorStr);
16.14. Punktetabelle wechseln und anwenden
1/**
2* @brief Wechselt die Punktetabelle und wendet sie an.
3* @param [in] pointTableName Name der zu wechselnden Punktetabelle, z.B. "pointTable1.db".
4* @param [out] errorStr Fehlermeldung beim Wechseln der Punktetabelle.
5* @return Fehlercode.
6*/
7int PointTableSwitch(string pointTableName, ref string errorStr);
16.15. Codebeispiel für Roboter-Punktetabellen-Operationen
1private void btnUpload_Click(object sender, EventArgs e)
2{
3 string save_path = "D://zDOWN/";
4 string point_table_name = "test_point_A.db";
5 int rtn = robot.PointTableDownLoad(point_table_name, save_path);
6 Console.WriteLine("download : {0} fail: {1}", point_table_name, rtn);
7
8 string upload_path = "D://zUP/test_point_A.db";
9 rtn = robot.PointTableUpLoad(upload_path);
10 Console.WriteLine("retval is: {0}", rtn);
11
12 string point_tablename = "test_point_A.db";
13 string lua_name = "Text1.lua";
14
15 string errorStr = "";
16 rtn = robot.PointTableUpdateLua(point_tablename, lua_name, ref errorStr);
17 Console.WriteLine("retval is: {0}", rtn);
18}
16.16. Controller-Protokolle herunterladen
1/**
2* @brief Lädt Controller-Protokolle herunter.
3* @param [in] savePath Pfad zum Speichern der Datei, z.B. "D://zDown/".
4* @return Fehlercode.
5*/
6int RbLogDownload(string savePath);
16.17. Alle Datenquellen herunterladen
1/**
2* @brief Lädt alle Datenquellen herunter.
3* @param [in] savePath Pfad zum Speichern der Datei, z.B. "D://zDown/".
4* @return Fehlercode.
5*/
6int AllDataSourceDownload(string savePath);
16.18. Datensicherungspaket herunterladen
1/**
2* @brief Lädt das Datensicherungspaket herunter.
3* @param [in] savePath Pfad zum Speichern der Datei, z.B. "D://zDown/".
4* @return Fehlercode.
5*/
6int DataPackageDownload(string savePath);
16.19. Codebeispiel für das Herunterladen von Controller-Daten
1private void button50_Click(object sender, EventArgs e)
2{
3 int rtn = robot.RbLogDownload("D://zDOWN/");
4 Console.WriteLine("RbLogDownload rtn is {0}", rtn);
5
6 rtn = robot.AllDataSourceDownload("D://zDOWN/");
7 Console.WriteLine("AllDataSourceDownload rtn is {0}", rtn);
8
9 rtn = robot.DataPackageDownload("D://zDOWN/");
10 Console.WriteLine("DataPackageDownload rtn is {0}", rtn);
11}
16.20. Roboter-Betriebssystem-Upgrade (LA-Steuerschrank)
Neu in Version C#SDK-V1.1.8: Web-3.8.6
1/**
2 * @brief Führt ein Upgrade des Roboter-Betriebssystems durch (LA-Steuerschrank).
3 * @param [in] filePath Vollständiger Pfad zum Betriebssystem-Upgrade-Paket.
4 * @return Fehlercode.
5 */
6public int KernelUpgrade(string filePath);
16.21. Ergebnis des Roboter-Betriebssystem-Upgrades abrufen (LA-Steuerschrank)
Neu in Version C#SDK-V1.1.8: Web-3.8.6
1/**
2 * @brief Gibt das Ergebnis des Roboter-Betriebssystem-Upgrades zurück (LA-Steuerschrank).
3 * @param [out] result Upgrade-Ergebnis: 0: Erfolg; -1: Fehler.
4 * @return Fehlercode.
5 */
6public int GetKernelUpgradeResult(ref int[] result);
16.22. Encoder-Upgrade einstellen
Neu in Version C#SDK-V1.1.5: Web-3.8.4
1/**
2* @brief Stellt ein Encoder-Upgrade ein.
3* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (D://zUP/XXXXX.bin).
4* @return Fehlercode.
5*/
6int SetEncoderUpgrade(string path);
16.23. Gelenk-Firmware-Upgrade einstellen
Neu in Version C#SDK-V1.1.5: Web-3.8.4
1/**
2* @brief Stellt ein Gelenk-Firmware-Upgrade ein.
3* @param [in] type Dateityp für das Upgrade; 1-Firmware-Upgrade; 2-Slave-Konfigurationsdatei-Upgrade.
4* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (D://zUP/XXXXX.bin).
5* @return Fehlercode.
6*/
7int SetJointFirmwareUpgrade(int type, string path);
16.24. Steuerschrank-Firmware-Upgrade einstellen
Neu in Version C#SDK-V1.1.5: Web-3.8.4
1/**
2* @brief Stellt ein Steuerschrank-Firmware-Upgrade ein.
3* @param [in] type Dateityp für das Upgrade; 1-Firmware-Upgrade; 2-Slave-Konfigurationsdatei-Upgrade.
4* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (D://zUP/XXXXX.bin).
5* @return Fehlercode.
6*/
7int SetCtrlFirmwareUpgrade(int type, string path);
16.25. Endeffektor-Firmware-Upgrade einstellen
Neu in Version C#SDK-V1.1.5: Web-3.8.4
1/**
2* @brief Stellt ein Endeffektor-Firmware-Upgrade ein.
3* @param [in] type Dateityp für das Upgrade; 1-Firmware-Upgrade; 2-Slave-Konfigurationsdatei-Upgrade.
4* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (D://zUP/XXXXX.bin).
5* @return Fehlercode.
6*/
7int SetEndFirmwareUpgrade(int type, string path);
16.26. Upgrade der Gelenk-Gesamtparameter-Konfigurationsdatei
Neu in Version C#SDK-V1.1.5: Web-3.8.4
1/**
2* @brief Führt ein Upgrade der Gelenk-Gesamtparameter-Konfigurationsdatei durch.
3* @param [in] path Vollständiger Pfad zum lokalen Upgrade-Paket (D://zUP/XXXXX.bin).
4* @return Fehlercode.
5*/
6int JointAllParamUpgrade(string path);
16.27. Codebeispiel für Roboter-Slave-Firmware-Upgrade
Neu in Version C#SDK-V1.1.5: Web-3.8.4
1private void button83_Click(object sender, EventArgs e)
2{
3 robot.RobotEnable(0);
4 Thread.Sleep(200);
5 int rtn = robot.JointAllParamUpgrade("D://zUP/upgrade/jointallparameters.db");
6 Console.WriteLine($"robot JointAllParamUpgrade rtn is{rtn}");
7 rtn = robot.SetCtrlFirmwareUpgrade(2, "D://zUP/upgrade/FAIR_Cobot_Cbd_Asix_V2.0.bin");
8 Console.WriteLine($"robot SetCtrlFirmwareUpgrade rtn is{rtn}");
9 rtn = robot.SetEndFirmwareUpgrade(2, "D://zUP/upgrade/FAIR_Cobot_Axle_Asix_V2.4.bin");
10 Console.WriteLine($"robot SetEndFirmwareUpgrade rtn is {rtn}");
11 robot.SetSysServoBootMode();
12 rtn = robot.SetCtrlFirmwareUpgrade(1, "D://zUP/upgrade/FR_CTRL_PRIMCU_FV201212_MAIN_U4_T01_20250428(MT).bin");
13 Console.WriteLine($"robot SetCtrlFirmwareUpgrade rtn is{rtn}");
14 rtn = robot.SetEndFirmwareUpgrade(1, "D://zUP/upgrade/FR_END_FV201009_MAIN_U1_T01_20250428.bin");
15 Console.WriteLine($"robot SetEndFirmwareUpgrade rtn is {rtn}");
16 rtn = robot.SetJointFirmwareUpgrade(1, "D://zUP/upgrade/FR_SERVO_FV504214_MAIN_U7_T07_20250519.bin");
17 Console.WriteLine($"robot SetJointFirmwareUpgrade rtn is{rtn}");
18}
16.28. Roboter-MCU-Protokoll generieren
Neu in Version C#SDK-V1.1.9: Web-3.8.7
1/**
2* @brief Generiert ein Roboter-MCU-Protokoll.
3* @return Fehlercode.
4*/
5public int RobotMCULogCollect();
16.29. Roboter bei getrennter Port-Kommunikation stoppen
1/**
2* @brief Roboter bei getrennter Port-Kommunikation stoppen
3* @param [in] portID Portnummer 0-8080; 1-8083; 2-20002; 3-20004
4* @param [in] enable 0-deaktiviert; 1-aktiviert
5* @param [in] confirmTime Bestätigungsdauer der Kommunikationsunterbrechung (ms)[0-5000]
6* @return Fehlercode
7*/
8public int SetRobotStopOnComDisc(int portID, bool enable, int confirmTime)
16.30. Parameter für Roboterstopp bei Kommunikationsunterbrechung abrufen
1/**
2* @brief Parameter für Roboterstopp bei Kommunikationsunterbrechung abrufen
3* @param [in] portID Portnummer 0-8080; 1-8083; 2-20002; 3-20004
4* @param [out] enable 0-deaktiviert; 1-aktiviert
5* @param [out] confirmTime Bestätigungsdauer der Kommunikationsunterbrechung (ms)[0-5000]
6* @return Fehlercode
7*/
8public int GetRobotStopOnComDisc(int portID, ref bool enable, ref int confirmTime)
16.31. Codebeispiel für Parameter Roboterstopp bei Kommunikationsunterbrechung
1void TestRobotStopOnComDisc()
2{
3 int rtn = 0;
4
5 // Parameter für vier Ports einstellen
6 rtn = robot.SetRobotStopOnComDisc(0, true, 330);
7 rtn = robot.SetRobotStopOnComDisc(1, true, 550);
8 rtn = robot.SetRobotStopOnComDisc(2, true, 110);
9 rtn = robot.SetRobotStopOnComDisc(3, true, 220);
10 Console.WriteLine($"SetRobotStopOnComDisc {rtn}");
11
12 bool enable = false;
13 int confirmTime = 0;
14
15 // Einstellungen für jeden Port abrufen und ausgeben
16 robot.GetRobotStopOnComDisc(0, ref enable, ref confirmTime);
17 Console.WriteLine($"GetRobotStopOnComDisc 8080 rtn {rtn}; enable is {(enable ? 1 : 0)}; confirm time is {confirmTime}");
18
19 robot.GetRobotStopOnComDisc(1, ref enable, ref confirmTime);
20 Console.WriteLine($"GetRobotStopOnComDisc 8083 rtn {rtn}; enable is {(enable ? 1 : 0)}; confirm time is {confirmTime}");
21
22 robot.GetRobotStopOnComDisc(2, ref enable, ref confirmTime);
23 Console.WriteLine($"GetRobotStopOnComDisc 20002 rtn {rtn}; enable is {(enable ? 1 : 0)}; confirm time is {confirmTime}");
24
25 robot.GetRobotStopOnComDisc(3, ref enable, ref confirmTime);
26 Console.WriteLine($"GetRobotStopOnComDisc 20004 rtn {rtn}; enable is {(enable ? 1 : 0)}; confirm time is {confirmTime}");
27
28}
16.32. UDP-Befehlframe senden
1/**
2* @brief UDP-Befehlframe senden
3* @param [in] Befehlframe
4* @return Fehlercode
5*/
6public int SendUDPFrame(string frame)
16.33. SDK-Codebeispiel basierend auf UDP-Kommunikation
1void TestRobotUDP()
2{
3 robot.OnUdpFrameReceived += (comType, frameCount, frameCmdID, contentLen, content) =>
4 {
5 Console.WriteLine($"[UDP-Antwort] comType={comType}, count={frameCount}, cmdID={frameCmdID}, content={content}");
6 };
7
8
9 //Frame senden
10 string frameToSend = "/f/bIII52III236III7IIIMode(1)III/b/f";
11 robot.SendUDPFrame(frameToSend);
12 Thread.Sleep(2000);
13 frameToSend = "/f/bIII52III236III7IIIMode(0)III/b/f";
14 robot.SendUDPFrame(frameToSend);
15 Thread.Sleep(2000);
16 frameToSend = "/f/bIII41III201III153IIIMoveJ(53.857,-89.441,119.453,-22.664,61.059,3.369,-54.249,-491.930,375.396,96.474,-6.896,-7.783,0,0,100,100,100,0.000,0.000,0.000,0.000,-1,0,0,0,0,0,0,0)III/b/f";
17 robot.SendUDPFrame(frameToSend);
18 Thread.Sleep(2000);
19 frameToSend = "/f/bIII42III203III163IIIMoveL(81.736,-85.284,114.974,-23.261,88.746,6.799,125.744,-506.570,375.396,96.474,-6.896,-7.783,0,0,100,100,100,-1,0,0.000,0.000,0.000,0.000,0,0,0,0,0,0,0,0,100,0)III/b/f";
20 robot.SendUDPFrame(frameToSend);
21 Thread.Sleep(2000);
22 frameToSend = "/f/bIII47III400III15IIIGetMCVersion(1)III/b/f/f/bIII48III424III21IIIGetSlaveFirmVersion()III/b/f";
23 robot.SendUDPFrame(frameToSend);
24 Thread.Sleep(2000);
25
26}
16.34. Benutzerdefinierte LED-Farbe des Roboterendeffektors einstellen
1/**
2* @brief Benutzerdefinierte LED-Farbe des Roboterendeffektors einstellen
3* @param [in] r End-Rot-LED-Steuerung; 0-aus; 1-ein
4* @param [in] g End-Grün-LED-Steuerung; 0-aus; 1-ein
5* @param [in] b End-Blau-LED-Steuerung; 0-aus; 1-ein
6* @return Fehlercode
7*/
8public int SetUserLEDColor(bool r, bool g, bool b)
16.35. SDK-Codebeispiel zum Einstellen der benutzerdefinierten LED-Farbe des Roboterendeffektors
1public void testled()
2{
3 robot.SetUserLEDColor(true, true, true);
4 robot.Sleep(1000);
5 robot.SetUserLEDColor(false, false, false);
6 robot.Sleep(1000);
7 robot.SetUserLEDColor(true, false, false);
8 robot.Sleep(1000);
9 robot.SetUserLEDColor(false, true, false);
10 robot.Sleep(1000);
11 robot.SetUserLEDColor(false, false, true);
12}