17. januar 2000 - 14:31
Der er
1 kommentar og
1 løsning
ComThread 4, Hvordan
Jeg skal læse fra en kortlæser, Hvordan læser jeg på det rigtige tidspunkt. Og hvordan læser jeg med dette program, der er ingen read-funktion.
17. januar 2000 - 14:38
#1
Read funktionen er interrupt styret....altså når der modtages noget data, så hopper den til en funktion, hvor du så kan læse dataen.
Jeg mener den hedder "OnPacketReceived"
18. januar 2000 - 09:26
#2
Jeg formoder at du HAR installeret TComThread i dit IDE. Herefter lægget du den bare på din form, Vha. F11 får du object-inspector'en frem of vælger fane nr. 2 derpå (den der hedder Events) og dobbeltklikker på 'OnPacketReceived'. Herved får du adgang til en event-handler som giver dig det som er modtaget, hver gang der modtages noget på den valgte COM-port. Componenten er 'threaded', dvs. den kører egentlig i sit eget lille program, uafhængigt af hvad du ellers laver. I princippet kan du derfor sende SAMTIDIGT med at du modtager. (Det er selvfølgelig en sandhed med modifikationer - men programmet vil faktisk virke sådan.)
Jeg har lavet et simpel program til kommunikation mellem to PC'ere via et NULL-modem kabel vha. komponenten. Jeg har to TEdit componenter på formen - en til den tekst jeg vil sende, og en til den jeg (evt.) modtager. Jeg har derudover en knap til at sende det som jeg har indtastet. Event-handlerne til knappen og 'OnPacketReceived' ser sådan her ud:
void __fastcall TfrmMain::comPortPacketReceived(TObject *Sender,
AnsiString &buffer)
{
edtReceive->Text = buffer;
}
void __fastcall TfrmMain::btnSendClick(TObject *Sender)
{
comPort->Write(edtSend->Text);
}