Autor Beitrag
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 26.11.07 13:41 
Hallo,

ich bin gerade dabei einen Simulator für eine unserer Steuerungen zu schreiben. Die Steuerung existiert natürlich auch Real. Damit aber auch andere, die die Hardware nicht haben Software für die Steuerung schreiben können, möchte ich nun einen "Device-Simulator" schreiben. Der Simulator funktioniert eigentlich schon zufriedenstellend.

Nun zum Problem:
Das Gerät kommuniziert über eine serielle Schnittstelle mit der Software auf dem Rechner. Der Simulator mußte also eine virtuelle Serielle Schnittstelle erzeugen können. Um das zu lösen, habe ich auf ein externes ActiveX Control (Franson) zurückgegriffen. Leider hatte ich die Lizenzbedingungen nicht genau genug gelesen. Außer bei einer OEM Lizenz muss nämlich der Nutzer immer noch zusätzlich eine Endanwender Lizenz kaufen. Da dieser Simulator aber kostenlos abgegeben werden soll, ist dies schlicht zu teuer.

Also dachte ich mir, dass es nicht so schwierig sein kann selbst eine virtuelle Schnittstelle zu implementieren. Allerdings haben mich weder Google noch MSDN weitergebracht.

Im Winddk habe ich ein Beispiel gefunden, dass für ein Wacom Grafiktablett eine virtuelle serielle Schnittstelle zur Verfügung stellt. Außerdem gibt es ein Beispiel für einen seriellen Treiber. Allerdings reichen meine C++ Kenntnisse nicht um wirklich zu verstehen wie das funktioniert.

Hat jemand schon mal eine virtuelle serielle Schnittstelle erzeugt. Oder kennt jemand eine kommerzielle, aber bezahlbare Lösung?

Wäre für jeden Tipp dankbar.

Viele Grüße Frank
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 26.11.07 21:33 
Würde mich wirklich auch interessieren. Ich schreibe ebenfalls eine Software zum Bedienen einer Hardware am COM-Port, aber die eigentliche Hardware entwickelt jemand anderes, also muss ich mich zur Zeit mit einer Abhilfe zu frieden geben, die nicht wirklich gut ist. Also: Thema doppelt so wichtig
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Di 27.11.07 04:20 
user profile iconfrank-wob hat folgendes geschrieben:
Hallo,

ich bin gerade dabei einen Simulator für eine unserer Steuerungen zu schreiben. Die Steuerung existiert natürlich auch Real. Damit aber auch andere, die die Hardware nicht haben Software für die Steuerung schreiben können, möchte ich nun einen "Device-Simulator" schreiben. Der Simulator funktioniert eigentlich schon zufriedenstellend.

Nun zum Problem:
Das Gerät kommuniziert über eine serielle Schnittstelle mit der Software auf dem Rechner. Der Simulator mußte also eine virtuelle Serielle Schnittstelle erzeugen können.
...
Viele Grüße Frank


Hallo Frank,

MSDN hat schon recht: eine Treiber ist ein Treiber ist ein Treiber, und ein virtueller unterscheidet sich nicht von einem realen - es gibt garkeine realen Treiber mehr, weil ja niemand mehr real physikalische COM-Ports in einen Rechner einbaut. Du kommst also nicht darum herum, dich mit Treiber-Programmierung auf Basis des DDK zu beschäftigen, einschliesslich Kernel-Modus und Signierung der Treiber und Anmeldung/Test durch Microsoft, weil Vista und Folgende sonst deinen Treiber nicht akzeptieren.

Du kannst also den Standard-Treiber als Basis nehmen, aber statt in ein UART-Register zu schreiben, übergibst du das Zeichen an deinen Simulator (wie ist dann wieder ein neues Problem).

Alternativ würde ich die Möglichkeit prüfen, die Kommunikation mit dem Simulator gleich in die vorhandene Software einzubauen, das ist nicht weiter schwierig und umgeht die ganze Treiberei. Ich schreibe z.B. gerade eine Software für Messgeräte, die über COMx mit dem Gerät spricht, wenn das so eingestellt ist, aber alternativ auch über Ethernet, wenn man eine IP-Adresse definiert, oder auch über USB. Also mach in die Software eine Einstellmöglichkeit rein, COMirgendwas zu wählen (ist sicher schon drin) oder eben SIM, dann nimmt sie mit dem Simulator Kontakt auf - über Messages,Pipes und was es sonst noch alles so gibt.

Gruss Reinhard
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 27.11.07 10:56 
Hallo,

Ich habe kommerzielle, aber leider sehr teure Lösungen gefunden, die einen virtuellen Comport ohne Treiber erzeugen, sie bestehen lediglich aus einem ActiveX Control. Es scheint also eine Möglichkeit zu geben.

Natürlich gebe es Möglichkeiten um anders die Verbindung zum "Virtuellen Gerät" herzustellen. Das ist aber in meinem Fall keine Lösung. Es geht ja darum das andere Entwickler mit diesem Simulator arbeiten können, bevor sie die Hardware zur Verfügung haben. Das funktioniert wiederum nur, wenn sich der Simulator "benimmt" wie die Hardware.

Ich habe übrigens schon etwas Erfahrung mit dem DDK. Ich habe bereits den vorhanden USB Beispieltreiber auf unsere Bedürfnisse angepasst. Der Treiber funktioniert übrigens auch unter Vista. Lediglich Vista 64 akzeptiert nur signierte Treiber. Anmelden muss man sich dazu nirgens. Außer bei MS um das DDK zu bekommen.

Im industriellen Bereich ist übrigens die serielle Schnittstelle immer noch sehr weit verbreitet und in so gut wie jedem PC real vorhanden.

Ich werde mich jetzt mal mit dem seriellen Beispieltreiber aus dem DDK beschäftigen. Sollte ich es hinbekommen, melde ich mich wieder.

Gruß Frank
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Di 27.11.07 11:48 
user profile iconfrank-wob hat folgendes geschrieben:

... Das funktioniert wiederum nur, wenn sich der Simulator "benimmt" wie die Hardware.



Hallo,

wo soll da das Problem liegen? Bei meiner Lösung, verschiedene Übertragungswege einstellbar zu machen, weiss die Firmware im Messgerät nicht einmal, welcher aktuell benutzt wird, sie kann sich also auch garnicht verschieden verhalten. Das ist nur eine Frage sauberer Trennung in der Software - die Kommunikation hat mit dem Inhalt nichts zu tun. Würde ich meinen Übertragungswegen RS232C, Ethernet und USB noch "SIM" hinzufügen, so wüsste andrerseits die Steuersoftware überhaupt nicht, das jetzt Software statt Hardware dranhängt. Ich würde das einfach so regeln, dass der Simulator angesprochen wird, wenn weder COMx noch TCP/IP noch USB-IDs definiert sind - fertig. Aber wenn du lieber einen Treiber schreiben willst, viel Glück.

Gruss Reinhard
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 27.11.07 12:24 
Hallo,

offensichtlich versteht du nicht wo das Problem liegt! Ein fremder Entwickler schreibt die Software ohne die Hardware zur Verfügung zu haben. Der fremde Entwickler muss auf den Simulator zugreifen können, als ob es die reale Hardware ist. Das ist der Sinn eines Simulators. Die reale Hardware wird nun mal über die serielle Schnittstelle angesprochen. Ich kann nicht von einem fremden Entwickler verlangen das er andere Übertragungswege implementiert.

Die Firmware im Messgerät hat damit gar nichts zu tun. Der verwendete µC bekommt seine Daten sowieso über den internen USART. Wie die Daten da hinkommen ist dem Controller vollkommen egal.

Es geht auch nicht darum das ich keine anderen Übertragungswege zur Steuerung realisieren kann. Ich benötige dazu keinen Simulator! Ich habe die reale Hardware.

Gruß Frank
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 27.11.07 13:03 
Dann hast Du die vorgeschlagene Lösung nicht verstanden:

Die besagt einfach nur, dass deine Software zur Steuerung nicht direkt auf den COM-Port zugreift, sondern jegliche Zugriffe über eine Zwischenschicht an die Hardware gibt. Mit dieser Möglichkeit ist es dann nämlich ein Einfaches, die Funktionalität "Durchreichen an COM-Port" durch "Weiterleiten und Sprechen mit Simulator" auszutauschen.

Sowas nennt man übrigens HAL und ist der Grund, warum Linux auf so vielen Plattformen läuft!
(Windows zwar auch, aber nie vernünftig; aber das ist was andres ...)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 27.11.07 13:51 
user profile iconBenBE hat folgendes geschrieben:

Die besagt einfach nur, dass deine Software zur Steuerung nicht direkt auf den COM-Port zugreift,


Soweit ich ihn verstanden habe will er aber gerade das: seine Entwickler, oder Auszubildenden, oder was auch immer sollen ihre Software für den COM-Port schreiben und sofort sehen können ob es funktioniert hat.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Di 27.11.07 20:01 
user profile iconTilman hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:

Die besagt einfach nur, dass deine Software zur Steuerung nicht direkt auf den COM-Port zugreift,


Soweit ich ihn verstanden habe will er aber gerade das: seine Entwickler, oder Auszubildenden, oder was auch immer sollen ihre Software für den COM-Port schreiben und sofort sehen können ob es funktioniert hat.


So etwa. Nach dem ersten Posting bin ich davon ausgegangen, dass es eine PC-seitige Software gibt, aber nach den letzten Angaben soll diese wohl erst erstellt werden, dann macht mein Vorschlag natürlich keinen Sinn.

Ein COM-Port ist meiner Meinung nach immer eine Treiber-Frage, ich glaube auch nicht, dass ein Active-X-Control ohne Treiber auskommt. Was er braucht, ist so etwa ein Treiber für einen USB-Seriell-Adapter, bloss ohne USB.

Ich persönlich würde so eine Software ja nicht gern mit einem Simulator entwickeln, sondern mit dem Original, aber das ist in dem Fall nicht mein Problem.

Gruss Reinhard
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mi 28.11.07 20:27 
Hi,

user profile iconfrank-wob hat folgendes geschrieben:
Hat jemand schon mal eine virtuelle serielle Schnittstelle erzeugt. Oder kennt jemand eine kommerzielle, aber bezahlbare Lösung?


Wenn umsonst bezahlbar genug ist:
com0com.sourceforge.net

twm
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 29.11.07 20:31 
Downloadseite: Null-modem emulator :D