[Delphi] RS232 lezen en schijven (portinc)

Pagina: 1
Acties:

  • kippy
  • Registratie: September 2004
  • Laatst online: 21:52
Ben nu al een tijdje bezig om het voorelkaar te krijgen om data van af mijn micro controllor via RS232 in delhpi te ontvangen.

Op school gebruken we hier het boek "porten onder windows" en daarbij wordt de file "portinc", het is gelukt om hier data mee te ontvangen, maar dit lukt steeds maar 1 keer. ik hebt dit gedaan op een onclick event, maar als ik nu een loop om het programmatje zet loopt het vast.

ik heb ook al geprobeert om zelf een onclick event te genereren om zo ook een loop te maken maar ook dit liep vast.

nu dacht leek het me logiesch om de data ontvang buffers te controleren, maar ik heb geen idee hoe dit moet.

dus mijn vraag is.
- hoe maak ik een loop om mijn data onvangst procedure.
- hoe lees ik data buffers
- of met portinc of met standaard delhpi code

zoals de code er ongeveer uit ziet:

buttonclick event
vars
bla bla
begin
set com poort
lees data in
schrijf naar text box
spring naar begin {of iets dergelijks}

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik ken jouw library niet, dus daar kan ik je niet mee helpen.

Als dat ding geen events heeft zou je een thread kunnen maken die constant leest en een buffer voor je applicatie vult. Of je gebruikt het OnIdle event van je applicatie daarvoor.

Als je wilt weten waarom je code vastloopt moet je wel even wat relevante code laten zien.

Er zijn ook Delphi componentjes voor die je leven een stuk makkelijker maken. Die hebben gewoon events die afgevuurd worden als je data binnen krijgt en je hoeft er geen aparte dll voor mee te leveren. Zie bijvoorbeeld http://sourceforge.net/projects/comport/

We adore chaos because we like to restore order - M.C. Escher


  • kippy
  • Registratie: September 2004
  • Laatst online: 21:52
Ok bedankt voor de sneller reactie, ik zal eens gaan kijken of ik het makkelijk kan met dat conponent men data binnen kan halen.

  • Dala
  • Registratie: November 2000
  • Laatst online: 18-05 19:00
ik heb met grote tevredenheid Serial NG gebruikt.
http://www.domis.de/serialng.htm

echt heel relaxed vond ik zelf.. nejtes met events

en simpel:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TfrmPrint.SendCommand(Msg: String);
begin
 SerialPort.SendString(Msg);
 while SerialPort.SendInProgress do
 begin
     Application.ProcessMessages;
     Sleep(1);
 end;
end;
procedure TfrmPrint.SerialPortRxClusterEvent(Sender: TObject);
begin
  if SerialPort.NextClusterSize >= 0 then // Data available?
  begin
    if SerialPort.NextClusterCCError = 0 then // Error during receiveing?
      Memo1.Lines.Add(FormatDateTime('"Rec  " dd.mm.yy hh:mm:ss" :"', Now))
    else
      Memo1.Lines.Add(FormatDateTime('"RecX " dd.mm.yy hh:mm:ss" :"', Now));
    PrinterResult    := SerialPort.ReadNextClusterAsString;
    Memo1.Lines.Add('RecV: '+PrinterResult);
  end;
end;


daar heb je al de belangrijkste :D

[ Voor 6% gewijzigd door Dala op 01-12-2004 20:28 ]