AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Einzelnes BYTE über RS232 senden

Ein Thema von schwa226 · begonnen am 10. Mär 2011 · letzter Beitrag vom 10. Mär 2011
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Einzelnes BYTE über RS232 senden

  Alt 10. Mär 2011, 17:53
Hallo!

Ich habe diese 2 Funktionen um ein Byte über die RS232 zu senden und zu empfangen:

Delphi-Quellcode:
function TComport.SendByte(const Buffer : Byte) : Boolean;
var BytesWritten: Cardinal;
begin
  Result := False;
  tb := Buffer;
  if (fHandle <> INVALID_HANDLE_VALUE) then
  begin
    WriteFile(fHandle, Buffer, 1, BytesWritten, NIL);
    Result := BytesWritten = 1;
  end;
end;

function TComPort.ReadByte(var Output : Byte): Boolean;
var Dat: Byte;
    BytesRead: Cardinal;
begin
 Output := 0;
 if (fHandle <> INVALID_HANDLE_VALUE) then
 begin
   ReadFile(fHandle,Output,1,BytesRead,NIL);
   Result := BytesRead = 1;
 end;
end;
Ich habe mit aus der TComPort diese Sachen rausgesucht, da ich nicht alles brauche und auch nicht extra eine Komponente dafür verwenden will.
http://sourceforge.net/projects/comport/

Nun geht das schon recht gut.
Aber es geht nicht wenn ich Buffer = 0 senden will.

Mit OutputDebugString sehe ich, dass eine 0 gesendet werden soll. Das Echo der RS232 gibt mir aber $FE zurück. Es muss aber eine 0 zurückkommen.
Fehlt mir da noch was im setzten der Parameter der RS232 oder ist es was anderes?

Eine andere Testanwendung in VC++ sendet eine 0 und bekommt auch eine 0 zurück.
Auch das lesen mit ReadFile hat keine Probleme eine 0 zu lesen. Es muss also etwas mit dem WriteFile zu tun haben.
Delphi 2010, Update 4 & 5

Geändert von schwa226 (10. Mär 2011 um 19:42 Uhr)
  Mit Zitat antworten Zitat
Reinhard Kern

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

AW: Einzelnes BYTE über RS232 senden

  Alt 10. Mär 2011, 18:23
Hallo!

Auch das lesen mit ReadFile hat keine Probleme eine 0 zu lesen. Es muss also etwas mit dem WriteFile zu tun haben.
Hallo,

das ist eine passende Gelegenheit, das Ergebnis von WriteFile (Error oder nicht, welcher?) auszuwerten. Und wenn passendes Equipment vorhanden ist, würde ich einfach mal nachschauen, was tatsächlich über die Leitung geht.

Gruss Reinhard
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#3

AW: Einzelnes BYTE über RS232 senden

  Alt 10. Mär 2011, 18:59
Also GetLastError bleibt immer auf 0.
Egal ob ReadFile oder WriteFile.
Auch ist das Ergebnis immer True (also OK)

Es handlet sich um einen VCP (Virtual COM Port). Muss mal nachsehen ob man den Softwaremässig Sniffen kann.

EDIT:
Habe nun einen Sniffer gefunden der unter Win7 x64 läuft:
http://www.aggsoft.com/

Damit habe ich rausgefunden, dass mit dem VC++ Programm Parity Even verwendet wird.
Ich hatte None... Mit Even bekomme ich nun die gleiche Antwort!
Delphi 2010, Update 4 & 5

Geändert von schwa226 (10. Mär 2011 um 19:41 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf