AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dienst sendet nicht über serielle Schnittstelle
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst sendet nicht über serielle Schnittstelle

Ein Thema von Gloegg_FHBI · begonnen am 7. Aug 2008 · letzter Beitrag vom 13. Aug 2008
Antwort Antwort
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Dienst sendet nicht über serielle Schnittstelle

  Alt 7. Aug 2008, 14:23
Hallo Forum,

Ich habe eine DLL geschrieben, in der verschiedene Befehle für ein Gerät, welches über eine serielle Schnittstelle angeschlossen ist, gekapslet werden. Wird diese DLL in ein normales Programm eingebunden funktioniert alles wunderbar. Wird die DLL jedoch von einem Dienst benutzt, schlägt das Senden immer fehl.
Woran könnte das liegen?

Als Komponente verwende ich die TComport (http://sourceforge.net/projects/comport/).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dienst sendet nicht über serielle Schnittstelle

  Alt 7. Aug 2008, 15:33
geben die funktionen keine Fehlercodes zurück? Es könnte daran liegen das die Komponente es nicht beherascht oder das dem Dienst einfach die Rechte fehlen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: Dienst sendet nicht über serielle Schnittstelle

  Alt 7. Aug 2008, 15:46
Nein, leider gibts keine Fehlercodes. Die Komponente ist im normalen Einsatz eigentlich sehr robust...
Wie verschaffe ich denn dem Dienst höhere Rechte?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Dienst sendet nicht über serielle Schnittstelle

  Alt 7. Aug 2008, 16:39
schonmak den Dienst debuggt? Irgendwo wird es ja fehlschlagen.
Dienste haben schon die höchsten Rechte (außer Kernel). D.h. zwar nicht, dass ein Dienst immer alle Rechte haben muss, aber er kann sie sich verschaffen.
Aber ich sehe da keine Rechte-Probleme mit dem Ports.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Dienst sendet nicht über serielle Schnittstelle

  Alt 7. Aug 2008, 21:56
Hallo,

vielleicht setzt die Komponente was interaktives voraus (Fenster für Fehlermeldung usw.) und spielt deshalb nicht mit - ein Dienst darf Fehler nur ins Log eintragen, der Bildschirm steht dem Dienst nicht zur Verfügung.

Falls das so ist, hilft nur ein Redesign der Komponente oder stattdessen die Benutzung der WIN32-API direkt.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#6

Re: Dienst sendet nicht über serielle Schnittstelle

  Alt 8. Aug 2008, 09:00
gedebuggt hab ich den Dienst noch nicht, aber ich hab einfach in die entsprechende Prozedur in jede zweite Zeile ein EventLogger.LogMessage eingebaut. Und in der Ereignisanzeige hören die Einträge an dem Punkt auf, bevor eine Zeichenkette über den COM-Port gesendet wird.

@Reinhard
Ich glaube nicht, das es an soetwas liegt. Die Komponente wird ja innerhalb einer DLL erzeugt und benutzt. Da gibts ja auch keine Fenster oder ähnliches. Testweise hatte ich den Dienst auch schon auf interaktiv gesetzt, hat aber nix gebracht.

Was mich noch wundert (und mir grade just eingefallen ist), dass ich am Anfang, wenn der Dienst geladen wird, für jeden verfügbaren COM-Port einen Thread erzeuge und kurz einen Befehl sende und warte ob eine passende Antwort zurückkommt. Diese Threads beenden sich dann entweder nach einer kurzen Zeitspanne oder wenn die passende Antwort gekommen ist. Das ganze ist als eine Art Autoerkennung gedacht und funktioniert wunderbar.

Je länger ich darüber nachdenke, desto wahrscheinlicher ist, das diese Threads (bzw. der eine, der das Gerät gefunden hat) sich nicht richtig beenden und den COM-Port noch in Beschlag nehmen.
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: Dienst sendet nicht über serielle Schnittstelle

  Alt 13. Aug 2008, 10:18
So, habs getestet, es lag tatsächlich an dem Thread, der sich nicht richtig beendet, nachdem er den richtigen Port gefunden hat.
Danke für eure Hilfe.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz