AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Problem mit Kommunikation mit Comport über WinApi
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Kommunikation mit Comport über WinApi

Ein Thema von hlware · begonnen am 22. Jul 2010 · letzter Beitrag vom 5. Okt 2011
Antwort Antwort
sneumann
(Gast)

n/a Beiträge
 
#1

AW: Problem mit Kommunikation mit Comport über WinApi

  Alt 5. Okt 2011, 09:50
Hallo,

Ich hab die Lösung für das Problem gefunden. Nach einigem Auslesen der DCB Felder vor und nach dem Setzen der Eigenschaften bin ich darauf gekommen.
Es fehlte einfach ein
SetCommState(ComHandle,DCB); Damit ist natürlich klar warum es nicht gehen konnte.


Zitat:
Es gibt nur eine saubere Lösung:
Du brauchst eine eigene Klasse oder Komponente, die sich nur um die Ansteuerung der seriellen Schnittstelle
kümmert.
Ich habe mir eine eigene Klasse geschrieben, die sich auf das für mich nötigste beschränkt und auch gut funktioniert. Den Codeschnipsel habe ich nur schnell zusammenkopiert, die Eisenbahnbefehle habe ich nur eingefügt, damit ich das Ergebnis überprüfen kann.

Eine Komponente benötige ich im Moment nicht, da mit meiner Klasse alles funktioniert was ich brauche, wenn ich halt das SetCommState nicht vergessen hätte.

Vielen Dank für die Hilfe,
Gruß

Hlware

Könntest du vielleicht mal deinen Code hier poste zum ansteuern auslesen und senden der Ports???
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.396 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit Kommunikation mit Comport über WinApi

  Alt 5. Okt 2011, 09:59
Falls er nicht antwortet (bedenke, hlware war seit über einem Jahr nicht mehr hier online/eingeloggt)

Entweder du nimmst eine der fertigen Komponenten (diese nehmen dir einiges/viel Arbeit ab).

Ansonsten stehn im MSDN die Infos zu den nötigen APIs, für die Konfiguration des COM-Ports.
Wenn man nur CreateFile und ReadFile/WriteFile nutzt, dann werden nur die Standardeinstellungen des entsprechenden Ports verwendet, welche nicht unbedingt passen müssen.

Hier findest du die Infos: (auch mal Links nachsehn, was es noch für APIs gibt)
http://msdn.microsoft.com/en-us/libr.../aa363436.aspx


Und nochmals was zum Code.
if ComHandle > 0 then begin ist falsch, denn CreateFile liefert INVALID_HANDLE_VALUE, wenn das Öffnen nicht funktionierte,
also if ComHandle <> INVALID_HANDLE_VALUE then begin gehört dort hin. (die zusätzliche Abfrage, mit der MessageBox, hilft da auch nichts)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Okt 2011 um 10:02 Uhr)
  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 18:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz