Spoke too soon, Just realised I am getting horrendous CPU usage. This is
what I have at the moment. Any Ideas? I suspect a problem with the loop.
Think I need to put a sleep in somewhere but not sure where.

procedure TServerSerial.Execute;
begin
{*************************************
Get settings from database
*************************************}
     conn5 := TZConnection.Create(nil);
     query5 := TZQuery.Create(nil);
     query5.Connection := conn5;
     try
          try
             conn5.Protocol := DBType;
             conn5.HostName := '';
             conn5.Database := DBName;
             conn5.User := DBUser;
             conn5.Password := DBPass;
             conn5.Connect;
             query5.SQL.Clear;
             query5.SQL.Text := 'SELECT col_sys_id, col_site_id FROM sys_col
WHERE col_active = 1 AND col_id = 1';
             query5.Open;
             query5.Last;
                       sysType5 :=
query5.FieldByName('col_sys_id').AsString;
                       SiteID5 :=
query5.FieldByName('col_site_id').AsString;

             //query1.SQL.Clear;
             query5.SQL.Text := 'SELECT * from sys_par where sys_id =
'+sysType5;
             query5.Open;
             query5.Last;
                       PhoneSysID5 := query5.FieldByName('sys_id').AsString;
                       RegExpStr5 :=
query5.FieldByName('start_str').AsString;
                       RegExpEnd5 := query5.FieldByName('end_str').AsString;
             query5.Close;
             finally
             query5.Free;
             conn5.Free;
             DataParse5 := TdataParse.Create(PhoneSysID5, SiteID5,
RegExpStr5, RegExpEnd5);
             DataParse5.Resume;
         end;
        except
        on E: Exception do
        Log(E.message);
     end;


   with Fser do
    begin
    RaiseExcept:=false;
      if active = true then begin
      Log('Serial Port used is '+PortNo);
      Connect(PortNo);
      Config(Baud,databits,parity,stopbits ,softwarefl,hardwarefl);
        try
        repeat
        LCMD := Recvstring(1000);
          if (LastError = 0) and (LCMD <> '') then //Data was received
without any issues
          begin
          myconverterfunc5:=...@callconv5;
          myconverterfunc5(LCMD);
          end
          else if LastError <> ErrTimeOut then //No data was received and it
was not a timeout, so something else is wrong
         break; //break and try to rebind and the continue with loop
        until terminated;
        except
        on E: Exception do
        log(E.message);  //write error
        end;
        if LastError<> 0 then log(GetErrorDesc(LastError));
      end;
    end;
end;



2009/7/2 Werner Hauptfleisch <[email protected]>

> Good to hear!
>
> On Wed, Jul 1, 2009 at 11:24 PM, lloyd thomas <[email protected]>wrote:
>
>> Thanks Guys, your solution seems to have worked. left it a month and still
>> going strong.
>>
>> Lloydie T
>>
>> 2009/5/27 lloyd thomas <[email protected]>
>>
>> Thanks Guys,
>>>                     I will give the previous solution a go to see if
>>> it resolves my problem. It will take a couple of days though to get a
>>> definative answer though.
>>>
>>> Lloydie T
>>>
>>> 2009/5/27 Werner Hauptfleisch <[email protected]>:
>>> > Hi,
>>> >
>>> > Please see original post to this thread by Lloyd Thomas on my 23rd
>>> (source
>>> > code located at http://pastebin.com/m5e3de129)
>>> >
>>> > This code can be reflected or altered in lines 223 onwards :). I do not
>>> > think it is necessary to exit the thread, but simply reconnect to the
>>> port
>>> > again (off course, the thread could be restarted if required...really
>>> up to
>>> > Lloyd to see if he can use it and solve his problem)
>>> >
>>> > Cheers!
>>> >
>>> > On Wed, May 27, 2009 at 4:26 PM, Markku Uttula <
>>> [email protected]>
>>> > wrote:
>>> >>
>>> >> Werner Hauptfleisch wrote:
>>> >> > You are right - sorry sucked that out of my thumb as a quick
>>> indication
>>> >> > to a possible solution, maybe this will work:
>>> >> >
>>> >> > repeat
>>> >> >      LCMD := Recvstring(1000);
>>> >> >      if (LastError = 0) and (LCMD <> '') then //Data was received
>>> >> > without any issues
>>> >> >      begin
>>> >> >          myconverterfunc1:=...@callconv1;
>>> >> >          myconverterfunc1(LCMD);
>>> >> >      end
>>> >> >      else if LastError <> ErrTimeOut then //No data was received and
>>> it
>>> >> > was not a timeout, so something else is wrong
>>> >> >          break; //break and try to rebind and the continue with loop
>>> >> > until terminated;
>>> >>
>>> >> Does "break" set the "terminated"? As I don't know what goes on around
>>> >> this loop (whether terminated is a local, global, or system provided
>>> >> variable) I can't know :)
>>> >>
>>> >> If it does, quickly that looks like it could work. I need to say that
>>> I
>>> >> don't have Delphi here, so I'm only guessing - my comments are not
>>> based
>>> >> on any kind of testing on my behalf.
>>> >>
>>> >> --
>>> >> Markku Uttula
>>> >>
>>> >>
>>> >>
>>> ------------------------------------------------------------------------------
>>> >> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
>>> >> is a gathering of tech-side developers & brand creativity
>>> professionals.
>>> >> Meet
>>> >> the minds behind Google Creative Lab, Visual Complexity, Processing, &
>>> >> iPhoneDevCamp as they present alongside digital heavyweights like
>>> >> Barbarian
>>> >> Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
>>> >> _______________________________________________
>>> >> synalist-public mailing list
>>> >> [email protected]
>>> >> https://lists.sourceforge.net/lists/listinfo/synalist-public
>>> >
>>> >
>>> >
>>> ------------------------------------------------------------------------------
>>> > Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
>>> > is a gathering of tech-side developers & brand creativity
>>> professionals.
>>> > Meet
>>> > the minds behind Google Creative Lab, Visual Complexity, Processing, &
>>> > iPhoneDevCamp as they present alongside digital heavyweights like
>>> Barbarian
>>> > Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
>>> > _______________________________________________
>>> > synalist-public mailing list
>>> > [email protected]
>>> > https://lists.sourceforge.net/lists/listinfo/synalist-public
>>> >
>>> >
>>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> synalist-public mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/synalist-public
>>
>>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> synalist-public mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/synalist-public
>
>
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public

Reply via email to