Raspberry Pi3 virtueller COM Port

Hallo zusammen,

ich bin dabei mit meinem System auf einen Pi umzuziehen.
Ich habe noch ein altes Gerät mit RS232 Schnittstelle welches ich über einen COMServer bisher an meinen Windowsrechner problemlos betreiben konnte.
Ich habe nun einen virtuellen COM Port mittels socat auf dem Pi generiert und dieser scheint auch zu laufen, da ich zumindest keinen Fehler erhalte.
Leider kann ich in der IPS Console unter I/O Instanzen aber diesen Port nicht auswählen. Dort wird mir nur ttyS0 und ttyAMA0 angeboten.

Kann mir da jemand weiterhelfen??

Fals der Comserver kein propriäteres Protokoll verwendet, kannst Du auch versuchen, statt einer seriellen Schnittstelle einen Clientsocket als IO zu verwenden. Das klappt z.B. prima mit einem Xport.

Tommi

Hallo habe ich gleich mal ausprobiert.
Die I/O Instanz konnte ich schon mal anlegen ohne Probleme:

Leider kommt aber beim absetzen meines Befehls

COMPort_SendText(36511 /*[Client Socket Seriell]*/, "Main.Power=on".chr(13));

die Fehlermeldung:

IPS-Err-PHP                  2017-02-25 18:07:28.318  Warning: Instance does not implement this function     Error in Script /usr/share/symcon/scripts/__compatibility.inc.php on Line 682    134 in IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php (call IPSLogger_Out)     37 in IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)        in IPSLogger_PhpErrorHandler    682 in /usr/share/symcon/__compatibility.inc.php (call SPRT_SendText)      3 in 57749.ips.php (call COMPort_SendText)

Warning:  Instance does not implement this function in /usr/share/symcon/scripts/__compatibility.inc.php on line 682

Was mache ich falsch?
Die Com Schnittstelle (Windows PC) war wie folgt eingestellt:
Baudrate 115200
Datenbits 8
Stopbits 1
Parität keine

Nimm zum Senden über den Comport den SPRT_SendText Befehl:

  SPRT_SendText(36511 /*[Client Socket Seriell]*/, "Main.Power=on".chr(13));     

Edit, wenn Du einen Clientsocket bespeist, dann gilt der SPRT… Befehl nicht, teste mal CSCK_SendText
Gruß Helmut

Hey, vielen Dank,

CSCK_SendText(36511 /[Client Socket Seriell]/, „Main.Power=off“.chr(13));
funktioniert.

Hoffe der Rest (Empfangen) klappt auch.

Super, danke, scheint soweit zu funktionieren.
Ich habe noch eine Frage als Pi neuling:

der Consolen Befehl via putty der den socat Befehl ausführt, wie und wo muss ich den programmieren, damit dieser bei jedem Systemstart aktiv ist?

Danke Euch beiden!
Ich wäre nach der Umstellung von Windows-Server mit virtuellem Comport über Netzwerk auf ein Tinkerboard fast verzweifelt.
Kurz den Befehl vom Com_send (oder so ähnlich :D) zu CSCK_SendText geändert und ruck-zuck sagen meine Ultraschallsensoren wieder was sich im Tank befindet :wink:

Aber mal ganz unwissend gefragt - warum?!?
Also was ist mit dem Befehl geschehen der bei Windows problemlos funktioniert hat (beides IPS 5.X)

Gruß,
Matthias

Es gibt für seriellen Port und ClientSocket verschiedenen Befehle.
War aber schon immer so.
Du kannst so etwas vermeiden, indem du stattdessen auf die Instanz RegisterVariable sendest mit RegVar_SendText.
Michael