Results 1 to 11 of 11

Thread: IT1 Industrial Weighing Terminal data opnemen

  1. #1
    Christophe
    Join Date
    Jan 2004
    Location
    Belgium, West-Vlaanderen, Nieuwkerke
    Posts
    459

    IT1 Industrial Weighing Terminal data opnemen

    Dag,

    momenteel ben ik in bezit van een IT1 industrial weighing terminal.
    Graag zou ik het gewicht willen uithalen die op de display staat.

    Hiervoor gebruik ik TCPClient.
    Volgens de uitleg in de pdf
    zou ik een 'RN1' moeten versturen om zo data te verkrijgen.

    Een verbinding met IT1 heb ik kunnen opzetten met de TCPClient.
    Maar bij een poging om data optehalen, dan moet ik blijven wachten.
    Waarschijnlijk moet ik op de IT1 iets uitvoeren, maar kan het niet weten wat ik verkeerd opzet.

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Buffer :  TIdBytes;
    begin
      self.Memo1.Lines.Clear;
      self.IdTCPClient.Host := edtIp.Text;
      self.IdTCPClient.Port := StrToInt(edtPort.Text);
      self.IdTCPClient.Connect;
      if self.IdTCPClient.Connected then
      begin
        self.Memo1.Lines.Add('connected');
        self.IdTCPClient.IOHandler.Write('RN1');
        self.IdTCPClient.IOHandler.InputBuffer.Clear;
    
        self.IdTCPClient.IOHandler.ReadBytes(Buffer, 100);  // <-- hier wordt er gewacht, maar weet niet waarom
    
    
      end;
      self.IdTCPClient.Disconnect;
    end;
    Iemand kennis met de IT1 industrial weighing terminal?

  2. #2
    Ik zou de InputBuffer.Clear voor de write doen.

    Maar moet je die RN1 niet afsluiten met een #13#10 ?
    Kan me bijna niet voorstellen dat je dat commando niet 'af moet sluiten' voordat je wat terugkrijgt.

  3. #3
    Is het misschien mogelijk/toegestaan om een stukje handleiding te posten?

  4. #4
    Christophe
    Join Date
    Jan 2004
    Location
    Belgium, West-Vlaanderen, Nieuwkerke
    Posts
    459
    In bijlage deel van hoe de data ophalen.
    Dus het afsluiten met #13#10 zou ik moeten afsluiten.
    Wijzigingen uitgevoerd, maar lukt nog niet. Blijft hangen op self.IdTCPClient.IOHandler.ReadBytes(Buffer, 100);


    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Buffer :  TIdBytes;
    begin
      self.Memo1.Lines.Clear;
      self.IdTCPClient.Host := edtIp.Text;
      self.IdTCPClient.Port := StrToInt(edtPort.Text);
      self.IdTCPClient.Connect;
      if self.IdTCPClient.Connected then
      begin
        self.Memo1.Lines.Add('connected');
        self.IdTCPClient.IOHandler.InputBuffer.Clear;
        self.IdTCPClient.IOHandler.Write('RN1'+#13#10);
        self.IdTCPClient.IOHandler.InputBuffer.Clear;
    
        self.IdTCPClient.IOHandler.ReadBytes(Buffer, 100);
    
    
      end;
      self.IdTCPClient.Disconnect;
    end;
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	Tech16.PNG 
Views:	54 
Size:	85.8 KB 
ID:	8154  

  5. #5
    Christophe
    Join Date
    Jan 2004
    Location
    Belgium, West-Vlaanderen, Nieuwkerke
    Posts
    459
    De pdf kon ik niet opzetten, dus om mijn onedrive geplaatst.
    https://1drv.ms/b/s!Atci2OUkV5TgiBoT...gRwCl?e=Qk5HoR

    Om de data optevangen staat op pagina 90.

    Foto display:
    Click image for larger version. 

Name:	Display.jpg 
Views:	51 
Size:	97.0 KB 
ID:	8155
    Last edited by cra; 20-Apr-21 at 00:25.

  6. #6
    Ok. Blijkbaar geeft dat ding wel #13#10 terug maar hoef je die niet te sturen bij commandos.

    Maar ik zie dat wel < en > omheen staan.
    < Command Parameter Data >

    Probeer dus eens <RN1> te sturen.

  7. #7
    Christophe
    Join Date
    Jan 2004
    Location
    Belgium, West-Vlaanderen, Nieuwkerke
    Posts
    459
    Ook al eens uitgeprobeerd met <RN1> maar blijft hangen op de readbytes.

  8. #8
    Christophe
    Join Date
    Jan 2004
    Location
    Belgium, West-Vlaanderen, Nieuwkerke
    Posts
    459
    Yoepi, is me gelukt.

    met volgende uittevoeren

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Buffer :  TIdBytes;
      strInfo: String;
    begin
      self.Memo1.Lines.Clear;
      self.IdTCPClient.Host := edtIp.Text;
      self.IdTCPClient.Port := StrToInt(edtPort.Text);
      self.IdTCPClient.Connect;
      if self.IdTCPClient.Connected then
      begin
        self.Memo1.Lines.Add('connected');
        self.IdTCPClient.IOHandler.InputBuffer.Clear;
        self.IdTCPClient.IOHandler.WriteLn('<RN1>');
        self.IdTCPClient.IOHandler.InputBuffer.Clear;
        strInfo := self.IdTCPClient.IOHandler.ReadLn();
      end;
      self.IdTCPClient.Disconnect;
    end;

  9. #9
    En als je dan readbytes(buffer, 2) doet? Ipv 100.

    Ik heb het zo even niet voor me van indy maar het kan zijn dat jij wacht op 100 characters. En indy keert pas terug als die ook echt 100 characters gelezen heeft of een timeout komt.

    Volgens mij moet je dus ook eerst kijken hoeveel er in de buffer zit te wachten.
    (Heb even geen voorbeelden voor je. Ik werk ook niet met indy.)

  10. #10
    Ah, ja. Readln leedt tot #13#10 en dat geeft die ook terug dus readln werkt dan prima.

    (Probleem de dus inderdaad dat die 100 het aantal was wat je wilde hebben maar het apparaat nooit 100 characters terug gaf)

  11. #11
    Christophe
    Join Date
    Jan 2004
    Location
    Belgium, West-Vlaanderen, Nieuwkerke
    Posts
    459
    Merci @rvk voor de hulp.
    Een paar tips doorsturen kan wonderen leveren. bedankt

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •