Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

COM port i vaga od 60000 kg

[es] :: Pascal / Delphi / Kylix :: COM port i vaga od 60000 kg

[ Pregleda: 2185 | Odgovora: 16 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dogriz
Sombor

Član broj: 29744
Poruke: 186
*.so-sombor.com.



Profil

icon COM port i vaga od 60000 kg31.05.2005. u 08:09
Firma za koju radim neke softvere je napravila kolsku vagu koja se preko COM porta povezuje na displej.
U celoj priči nema računara i moja ideja je da umesto sa displejom, vagu povežem sa PC računarom i napravim jednostavan softver (bruto, neto masa, štampa...).
Ono što vaga šalje je praktično samo jedan podatak, tj. masa. Mene interesuje kako da u Delphi programu hvatam signal koji se šalje na COM port?
Ostalo ću već lako rešiti (eventualne konverzije, provere itd.).
Do sada sam samo slao podatke na COM port pomoću npr. ovakvog koda:
Code:

var
  FPort: Integer; //koristi se kao Handle Com porta
...
begin
  FPort := CreateFile (pchar('COM1'), GENERIC_READ or GENERIC_WRITE,0,NIl, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  EscapeCommFunction(FPort, SETDTR);
  //odredjeni vremenski interval...
  EscapeCommFunction(FPort, CLRDTR);
end

a neka elektronika bi dalje radila svoj deo posla, što, mislim, nema nikakve veze sa onim što mi sada treba.

Svaka konstruktivna ideja je dobrodošla.

tnx unapred

PS: Ne znam koji je tip vage, niti bilo šta drugo, jedino sam video digitalni displej, vagu i COM port. A Win na PC računaru treba da je XP.
31.05.2005. u 08:09 

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 614
*.zaslon-telecom.si.



Profil

icon Re: COM port i vaga od 60000 kg31.05.2005. u 08:21
Ako ti treba pouzdana komunikacija s COM portom, pokušaj s TurboPower Async komponentama. Ima ih na sourceforge-u, i besplatne su.

ss.
When something is hard to do, then it's not worth doing.
31.05.2005. u 08:21 

dogriz
Sombor

Član broj: 29744
Poruke: 186
*.so-sombor.com.



Profil

icon Re: COM port i vaga od 60000 kg31.05.2005. u 08:28
OK, probaću, ali interesuje me da li kako da rešim problem bez dodavanja novih komponenata, korišćenjem recimo Timera i sl?
31.05.2005. u 08:28 

morlic
Milos Orlic
Beograd

Moderator
Član broj: 6081
Poruke: 731
*.139.EUnet.yu.



Profil

icon Re: COM port i vaga od 60000 kg31.05.2005. u 09:17
Ako hoces bez komponenti pogledaj u MSDN-u odlican clanak:

ms-help://MS.MSDNQTR.2003FEB.1033/dnfiles/html/msdn_serial.htm

Ali bolje je da uzmes neku komponentu, nema potrebe da izmisljas toplu vodu, pogotovo ako ne znas kakvi su podaci koje vaga salje.

Pogledaj SynaSer na http://www.ararat.cz/synapse/ . Komponenta je lagana, i lako se koristi.
31.05.2005. u 09:17 

mP-programer
Marko Jovanovic
mikroElektronika - webmaster
Beograd, Vozdovac

Član broj: 48573
Poruke: 27
*.81.beocity.net.

ICQ: 306242071
Sajt: www.mikroe.com


Profil

icon Re: COM port i vaga od 60000 kg04.06.2005. u 19:47
Jos jedna odlicna komponenta za serijski port autora Dejana Crnile pod
nazivom comport sa raznim primerima.
Link: http://sourceforge.net/projects/comport/

Bavim se programiranjem pic mikrokontrolera i povezujem se sa PC-jem
preko serijskog porta. PIC se na PC kaci preko usarta. Verujem da je vaga
uradjena sa PIC-om(ili nekim drugim mikrokontrolerom). Pogledaj uputstvo za
vagu i koje su komande za iscitavanje zeljenih vrednosti. Ova komponenta
se vrlo lako koristi i ja je dosta koristim.

Pozdrav.
Stop, Dave…
My mind is going…
I can feel it…
I can feel it…
Stop… Please…
HAL 9000
04.06.2005. u 19:47 

dogriz
Sombor

Član broj: 29744
Poruke: 186
*.so-sombor.com.



Profil

icon Re: COM port i vaga od 60000 kg06.06.2005. u 07:23
Nisam još došao do uputstva za vagu, ali pretpostavljam da će [url]http://sourceforge.net/projects/comport[/url] komponenta dobro da obavi posao. Pregledao sam malo i sviđa mi se kako je čovek odradio posao.

Hvala svima,
pozdrav!
06.06.2005. u 07:23 

bego_26
Pomagac bagera
Bihac-BiH

Član broj: 40780
Poruke: 182
91.191.30.*



Profil

icon Re: COM port i vaga od 60000 kg01.06.2008. u 23:27
Evo nadam se da moderatori nece ljutiti sto sam ozivio ovu temu.

Ja pokusavam napraviti program za vagu do 50000 kg.

Onaj glavni modul vage je prikopcan COM port racunara, ja sam se odluco da koristim TComPort komponentu.

Eh sad sa onim primjerom sto je dosao uz komponentu uspijem ocitavati sta stize na COM Port.
Dolazi sljedece: "(| 00" ovo 00 je kilaza do sam provjerio. ali modul vage salje svake 0,5 sec rezultat vaganja.

Ja kad stavim da se to ispisuje na nekoj Label ono ispisuje ali treperi svaki put kad dobije novo osvjezenje na COM port.

Mene zanima: - kako da se novi rezultat ispisuje na istoj Labeli "glatko" znaci da nema onog treptanja vec da prelazi sa
jednog broja na drugi kada teret nailazi na vagu.
- koko se rjesiti ovih ludih znakova na pocetku (to su sigurno Start-Bit-ovi)

Eto toliko.

Unapred zahvaljujem.

Pozz.
01.06.2008. u 23:27 

juha5803

Član broj: 74797
Poruke: 46
*.teol.net.



Profil

icon Re: COM port i vaga od 60000 kg02.06.2008. u 05:51
Ja sam to radiona dva načina. Elektronika jedne vage je imala mogućnost da radi na način kao kod tebe (kontinuirano slanje) ali i po "prozivci". Ovaj drugi način je lakši jer biraš trenutak uzimanja težine. Kod druge je bio slučaj da radi kao kod tebe i tu sam "lovio" uzorak i iz njega vadio šta mi treba. U nizu koji ti šalje vaga imaš i zaglavlje u kojem je obično adresa vage pa tek onda težina. Kod nekih tipova (npr. vagonske) imaš u zaglavlju i adresu mjernog mjesta (mali, beliki vagon ili sl.). Je li ti problem samo treperenje?
02.06.2008. u 05:51 

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 993
195.178.63.*

ICQ: 101830817


Profil

icon Re: COM port i vaga od 60000 kg02.06.2008. u 08:34
ako ti je problem samo treperenje,
dodaj proveru i ispisuj tezinu samo pri promeni tezine. ako postoje varijacije dodaj granicnu kontrolu od par kg.

Dragi boze koji jesi, gore na nebesima
Sorry što te davim u ovaj kasni sat
Ali, ja prije svitanja imam jos par pitanja
02.06.2008. u 08:34 

bego_26
Pomagac bagera
Bihac-BiH

Član broj: 40780
Poruke: 182
92.36.246.*



Profil

icon Re: COM port i vaga od 60000 kg02.06.2008. u 09:20
Citat:
juha5803:  Je li ti problem samo treperenje?


Evo treperenje cu pokusati rijesiti kako mi je @Deep|Blue predlozio.

Ostaje jos da iz citavog String-a "(| 00" koj istize na COM port izdvojim samo "00" jer je to dio koji ispisuje tezinu.

Hvala na brzom odgovoru.
02.06.2008. u 09:20 

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 1234
*.adsl-a-1.sezampro.yu.



Profil

icon Re: COM port i vaga od 60000 kg02.06.2008. u 09:24
> Eh sad sa onim primjerom sto je dosao uz komponentu uspijem ocitavati sta stize na COM Port.
> Dolazi sljedece: "(| 00" ovo 00 je kilaza do sam provjerio. ali modul vage salje svake 0,5 sec rezultat vaganja.

Šalje čak i kada se ništa ne meri?

> Ja kad stavim da se to ispisuje na nekoj Label ono ispisuje ali treperi svaki put kad dobije novo osvjezenje na COM port.

Label se iscrtava samo kada se promeni njen sadržaj, kako vaga ne može slati različite težine dok traje jedno merenje zaključak je da nešto ne radiš dobro, šta tačno možemo samo nagađati bez koda.

> - koko se rjesiti ovih ludih znakova na pocetku (to su sigurno Start-Bit-ovi)

Kojih ludih znakova? Daj nam primer šta je to što dobijaš. Imaj u vidu da ako to šalje sama vaga, samo ona može i prestati da šalje, ti jedino možeš filtrirati (ignorisati) ono što te ne zanima.
02.06.2008. u 09:24 

juha5803

Član broj: 74797
Poruke: 46
*.teol.net.



Profil

icon Re: COM port i vaga od 60000 kg02.06.2008. u 13:50
> - koko se rjesiti ovih ludih znakova na pocetku (to su sigurno Start-Bit-ovi

Niz koji stiže sa vage je vjerovatno fiksne dužine (ako nije tajna, koji model vage?), nije problem to staviti u string i čitati od pozicije koja ti treba! Kod mene je niz dugačak 12 bajtova,
konkretno prva tri bajta su adresa vage i mjernog mjesta, a od 4 do 11 bajta je težina u Kg.
02.06.2008. u 13:50 

bego_26
Pomagac bagera
Bihac-BiH

Član broj: 40780
Poruke: 182
92.36.246.*



Profil

icon Re: COM port i vaga od 60000 kg02.06.2008. u 14:58
Citat:
juha5803: >

Niz koji stiže sa vage je vjerovatno fiksne dužine (ako nije tajna, koji model vage?)


Nije tajna model indikatora je: http://www.averyweigh-tronix.c...E1105+multi-function+indicator

Citat:
savkic: > Eh sad sa onim primjerom sto je dosao uz komponentu uspijem ocitavati sta stize na COM Port.
> Dolazi sljedece: "(| 00" ovo 00 je kilaza do sam provjerio. ali modul vage salje svake 0,5 sec rezultat vaganja.

Šalje čak i kada se ništa ne meri?

Kojih ludih znakova? Daj nam primer šta je to što dobijaš. Imaj u vidu da ako to šalje sama vaga, samo ona može i prestati da šalje, ti jedino možeš filtrirati (ignorisati) ono što te ne zanima.


Da vaga šalje i kad nema opterecenja znaci kad je 0 kg ona salje "(| 00" kad je konstantno opterecenje recimo 100 kg ona salje: "(| 100" svakih 0,5 sec.

Sutra saljem screenshot.

poz..

02.06.2008. u 14:58 

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 993
89.216.79.*

ICQ: 101830817


Profil

icon Re: COM port i vaga od 60000 kg19.06.2008. u 22:20
pa dobro, ali sto ti se javlja treperenje, ako radis osvezavanje na promenu tezine?
Dragi boze koji jesi, gore na nebesima
Sorry što te davim u ovaj kasni sat
Ali, ja prije svitanja imam jos par pitanja
19.06.2008. u 22:20 

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 42
*.adsl.net.t-com.hr.

ICQ: 13387003


Profil

icon Re: COM port i vaga od 60000 kg07.07.2008. u 11:35
Ja sam razvio cijeli sustav za uzimanje odvaga i analiza, i kasniji obraćun, skladišne obrade i sl. za silose i žitoprerađivače. Evo, baš sam ovih dana pustio u pogon 4-5 sezonu otkupa žita i radi bezprijekorno. jedini zaheb je što sam projekt pokrenuo učeći Delphi u tadašnjoj verziji / i bazirao se na BDE i paradoxu, i o tako program gura bez problema.

Ja radim sa 4 serijska porta. Radim sa analizacijskom/laboratorijskom vagom, kolnom/mosnom vagom od 60T, analizatorom DickeyJohn i LED displayem za prikaz info rezultata za korisnike koji čekaju. Poprilično je složeno, gledaju se tipovi evidencije tj.r adi li se o ulazu ili izlazu robe, itd itd.. i prema tome program vodi oepratera i sam zna akda uzeti koji podatak (kada broto, akda taru, akda čeka analizu i sl. jesu li svi parametri u tolerancijama i sl.).

Koristio sam boomerang lib za serijsku komunikaciju, tada u verziji 4, kasnije i verziju 5. I radi odlično. Sve sam parametrizirao, njegove tipove enumerirao i "deenumerirao" da ih mogu natrpati u comboboxeve u coltrol panelu program itd, itd...

Vaga ti šalje neprestani niz podataka. Ti trebaš promatrati trenutnu vrijednost, i ako se nova vrijednost razlikuje od prethodne, umeš je u obzir. Ono što je još bitinije je da ti podaci u serijskoj komunikaciji "cure" i izcure kad se prelije buffer, pa možeš uhvatiti svakakvog smeća i budalaština. Zato moraš znati očistiti pdoatke i pročitati ono što ti treba.

Evo jedan primjer gdje čitam podatak sa vage:

Code:


 with comVaga do
    begin
    Baudrate     := TSetVaga.Baudrate;
    Databits     := TSetVaga.Databits;
    DeviceName   := Enum2str(TypeInfo(TPort), Ord(TSetVaga.DeviceName));
    FlowControl  := TSetVaga.FlowControl;
    Parity       := TSetVaga.Parity;
    Stopbits     := TSetVaga.Stopbits;
    ReadBufSize  := TSetVaga.ReadBufsize;
    WriteBufSize := TSetVaga.WriteBufsize;
    ReadTimeout  := TSetVaga.ReadTimeout;
    WriteTimeout := TSetVaga.WriteTimeout;



procedure TfrmAktOdvaga.comVagaRxChar(Sender: TObject; Count: Integer);
var
  br: Integer;

begin
//try
  ctemp := comVaga.Retrieve(Count); // string iz ulaznog buffera vage i njegova duljina

  for br := 0 to Count do
    begin
      case cTemp [br] of
        #02..#03  : cTempx := '';
        #20..#57  :
               begin
                  cTempx := cTempx + cTemp[br];
                   // niz veći od 7 znakova rastavljamo na faktore
                  if length(cTempx) >=7 then
                   begin
                    Masa := strtofloatdef(midstr(cTempx,1,7),0.00);


                      abLed1.Checked:= true;

                    if Modmjer = pocetno then

                      case ModVage of
                        Tbrutto:
                               begin
                                  odvaga.dBrutto := masa;
                                  odvaga.dNetto  := 0;
                               end;
                        TTara  :
                               begin
                                  odvaga.dTara   := masa;
                                  odvaga.dNetto  := 0;
                               end;
                        TNetto :
                               begin
                                  odvaga.dBrutto := masa;
                                  odvaga.dNetto  := 0;
                               end

                      end

                    else

                      case ModVage of
                        Tbrutto:
                               begin
                                  odvaga.dBrutto := masa;
                                  odvaga.dNetto  := ABS(odvaga.dBrutto - odvaga.dTara);
                               end;
                        TTara  :
                               begin
                                  odvaga.dTara   := masa;
                                  odvaga.dNetto  := ABS(odvaga.dTara - odvaga.dBrutto);
                               end;
                        TNetto :
                               begin
                                  odvaga.dBrutto := masa;
                                  odvaga.dNetto  := ABS(odvaga.dBrutto - odvaga.dTara);
                               end
                      end;

                         edBrutto.Text  := floattostr (odvaga.dBrutto);
                         ednetto.Text   := floattostr (odvaga.dNetto);
                         edTara.Text    := floattostr (odvaga.dTara);
                         vagaOK.Enabled := true;
                         vagaok.UpdateControlState;
                         vagaX.Enabled  := true;

                   end;

               end;
      end;
   end;

except
  obradagreske(TGreska.mjerenje:='vaga');
end;
end;



Primjer sa analizatorom (isto serijska komunikacija je malo "umniji":
Code:

procedure TfrmAktOdvaga.comDickRxChar(Sender: TObject; Count: Integer);
var
  bra, brb, brclr : integer;
 var tmpdlg: string;
begin
try
  cTznak := comDick.Retrieve(Count);  //string iz buffera i njegova duljina
  brb := 0;
  while not (cTznak[brb] in [#$0A..#128]) do inc(brb);
  // filtriramo smeće koje port ponekad pošalje
  for bra := brb to Count do
    begin
      case cTznak[bra] of
        #$0D, #$0A  : if length(trim(cListic[brd])) <> 0 then inc(brd);
        #20..#128   :

           begin
            cListic[brd] := cListic[brd] + cTznak[bra];
            cListic[brd] := stringReplace ( cListic[brd], #$2E, #$2C, [rfReplaceAll]);
            if cListic[brd] = '====================' then
              begin
              {
              ovdje obrađujemo polje stringova i kasnije razbijamo podatke u
              zasebne varijable
              }
               obradiListic;
               if Temporium.p3 = 9 then
               begin
                 tmpdlg := '';
                 for brclr := low(clistic) to high (clistic)  do  tmpdlg := tmpdlg + cListic[brclr] + #13;
                 tmpdlg := trim(tmpdlg);
                 messagedlg (tmpdlg, mtInformation    , [mbOk],0);
               end;
               // praznimo variable zbog prihvata novog podatka
               beep;
               comDick.PurgeIn;
               for brclr := low(clistic) to high (clistic) do  cListic[brclr] := '';
               brd := 0 ;
               abLed2.Checked:= true;
              end;
           end;
      end;
    end;
except

    MessageDlg('Pogreška u prijemu podataka sa analizatora', mtError    , [mbOk],0);
    comDick.PurgeIn;
    for brclr := low(clistic) to high (clistic) do  cListic[brclr] := '';
    brd := 0 ;    Abort;
raise;
end;




A ima tu još dosta koda, koji čisti podatke, analizira ih, validira, poravnava, slaže po redosljedu jer analizator šalje različit i dinamički skup parametara i sl. a sve je zapravo parsiranja 40-kolonskog duplikata ispisa za serijski termalni printer no te algoritme (iako nisu vruhunska tajna) ipak ne mogu objavljivati zbog poslovne tajne.
God is real unless is declared as integer.
07.07.2008. u 11:35 

mret
Radovan Bacovic
Oracle, Java, Delphi, MySQL developer
Novi Sad

Član broj: 78386
Poruke: 22
91.148.89.*

Sajt: www.baco.co.rs


Profil

icon Re: COM port i vaga od 60000 kg23.07.2008. u 09:50
postovanje,
evo malo da se ukljucim u temu...

firma u kojoj radim se vec dve godine bavi aplikacijama za nagazne vage i moje
iskustvo govori da se preko COMPORT komponente mogu resiti sve varijante vagi.
posto mi isporucujemo samo softver u kombinaciji COMPORT komponente + definicija u INI
fajlu, onda ne brinemo cak ni o modelu mernog uredjaja i distribuiramo uvek istu varijantu programa.

ako ne postoji ogranicenje u koriscenju komponenti, svakako je najbolje resenje ovo gorenavedeno, jer je
softver nezavisan od tipa mernog instrumenta.
u svim ostalim varijantama smo imali puno problema i glavobolje (verujte mi) sa drzanjem jedne verzije zbog razlicitih sekvenci koje stizu sa razlicitih mernih instrumenata

pozdrav
23.07.2008. u 09:50 

juha5803

Član broj: 74797
Poruke: 46
*.teol.net.



Profil

icon Re: COM port i vaga od 60000 kg23.07.2008. u 20:40
Pametno rješenje, nisam se toga sjetio
23.07.2008. u 20:40 

[es] :: Pascal / Delphi / Kylix :: COM port i vaga od 60000 kg

[ Pregleda: 2185 | Odgovora: 16 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.