R
hab das mit dem ctBlocking grad mal in meinem Testprogramm ausprobiert und es funktionierte. Mach ich das in meinem Hauptprogramm werden die Messwerte kurz angezeigt und dann wird das Programm beendet. Woran könnte das liegen? Ich erhalte folgende Fehlermeldung :
Im Projekt Project1.exe ist eine Exception der Klasse ESocketError aufgetreten. Meldung:
"Windows-Socket-Fehler: Eine bestehende Verbindung wurde softwaregesteuert durch den Hostcomputer abgebrochen(10053), auf API 'recv" Prozess wurde angehalten.
lasse ich das ctBlocking weg oder nehme ctNonBlocking gibts keinen Fehler aber auch keinen Messwert.
(Was man noch wissen muss ist, dass mein Messgerät nach jedem ReceiveBuf die Verbindung verliert. Ich muss also immer wieder neu verbinden.)
Mein Code sieht jetzt so aus:
__fastcall Awi::Awi(bool CreateSuspended)
: TThread(CreateSuspended),
ch4GehaltFerm(0),
socket(new TClientSocket(NULL))
{
socket->Host = "192.168.0.37";
socket->Port = 2080;
socket->ClientType = ctBlocking;
}
//---------------------------------------------------------------------------
__fastcall Awi::~Awi()
{
socket->Close();
delete socket;
}
//---------------------------------------------------------------------------
void __fastcall Awi::Execute()
{
while(!Terminated)
{
memset(send,0,32);
memset(rec,0,128);
socket->Open();
socket->Socket->SendBuf(send, 32);
Sleep(100);
socket->Socket->ReceiveBuf(rec, 128);
ErfasseWerte();
Sleep(1000);
}
}
//---------------------------------------------------------------------------
void Awi::ErfasseWerte()
{
ch4GehaltFerm = ((rec[22]<<8) + rec[23])/10.0;
}