AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Readfile liefert TRUE aber 0 BytesTransferred
Thema durchsuchen
Ansicht
Themen-Optionen

Readfile liefert TRUE aber 0 BytesTransferred

Ein Thema von blackmice · begonnen am 15. Nov 2007 · letzter Beitrag vom 15. Nov 2007
Antwort Antwort
blackmice

Registriert seit: 24. Okt 2007
Ort: Niederkrüchten
28 Beiträge
 
Delphi 5 Standard
 
#1

Re: Readfile liefert TRUE aber 0 BytesTransferred

  Alt 15. Nov 2007, 10:05
Ok, also dann hier mal ein bischen mehr Code. Ich versuche damit Hardware auszulesen. Diese Hardware ist im Entwicklungsstadium, aber ich kann nicht beeinflussen, was ich bekomme. Ich muss nur weiterverarbeiten, was dann kommt.

Delphi-Quellcode:
//==============================================================================
// Diese Funktion schreibt über die Serielle Schnittstelle
//==============================================================================
function WriteSeri(Buffer: pchar; wlaenge: DWord):Integer;
var
  BytesTransferred: DWord;
begin
  WriteFile(Seri, Buffer^, wlaenge, BytesTransferred, nil);
  WriteSeri:=BytesTransferred;
end;

//==============================================================================
// Diese Funktion liest die Serielle Schnittstelle aus
//==============================================================================
function ReadSeri(Buffer: pchar; rlaenge: DWord): Integer;
var
  BytesTransferred: DWord;
  test : boolean;
  lasterr : dWord;
begin
  test := ReadFile(Seri, Buffer^, rlaenge, BytesTransferred, nil);
  ReadSeri:=BytesTransferred;

end;

//==============================================================================
// Diese Funktion öffnet die Serielle Schnittstelle
//==============================================================================
procedure OpenSeri;
var CommTimeOut : TCOMMTIMEOUTS;
    Status : Boolean;
    CommBuffer : Integer;
    DCBdaten : TDCB;

begin
  if Seri<>0 then exit;
  Seri := CreateFile('Com1', GENERIC_WRITE or GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
  if Seri = INVALID_HANDLE_VALUE then
  begin
     Form1.StatusBar1.Simpletext:='Error opening COM';
    Seri := 0;
    exit;
  end;

      ...... // Hier sind noch ein paar Einstellungen, aber die sind für den Programmablauf nicht wirklich wichtig

  Form1.StatusBar1.Simpletext:= 'RS232 at COM1 ready!';
end;

//==============================================================================
// Testfunktion
//==============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var buf : array [0..12] of Char;
    ack : array [0..12] of Char;
    i,a : Integer;
    itest : integer;
    ihelp : integer;
begin

  OpenSeri;
  // String zum Schreiben zusammenstellen
  buf[0] := Chr(7);
  buf[1] := Chr(0);
  buf[2] := Chr(0);
  buf[3] := Chr(0);
  buf[4] := Chr(0);
  buf[5] := Chr(0);
  buf[6] := Chr(0);
  buf[7] := Chr(0);
  buf[8] := Chr(0);
  buf[9] := Chr(0);
  buf[10] := Chr(0);
  buf[11] := Chr(0);
  buf[12] := Chr(0);
  itest := writeSeri(buf, 13);
  form1.ListBox1.items.add('Bytes transferred: ' + IntToStr(itest) + ' Seri: ' + IntToStr(SERI));
  itest := readSeri(ack,13);
  form1.ListBox1.items.add('Bytes received: ' + IntToStr(itest) + ' Seri: ' + IntToStr(SERI));
  if itest > 0 then
  begin
    .....
  end;
end;
Und ich habe den kompletten Source durchgebuggt. Schreiben klappt einwandfrei und wenn ich über Terminal den gleichen Befehl wie über Delphi absetze, dann kommt auch ne Rückmeldung. Ich hab auch schon ein Terminal ans andere Ende der COM gesetzt und geguckt, ob das was Delphi sendet auch ok ist, und da gibt es dann auch keine Klagen.
Blackmice
Debuggers don't remove bugs, they only show them in slow-motion.
  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 04:17 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