Elektronik teraziyle haberleşme üzerine..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Elektronik teraziyle haberleşme üzerine..

Mesaj gönderen aLonE CoDeR »

Selamlar.
Densi Nets adında bir teraziyle Comport kullanarak haberleşmeye çalışıyorum.İletişimle alakalı bir doküman mevcut ve buradan yola çıkarak teraziye ApdComport bileşeni aracılığıyla komut gönderiyorum lakin teraziden herhangi bir tepki gelmiyor.Bileşenin log dosyasına baktım komutlar porta yazılmış, ancak karşıdan herhangi bir cevap yok..Dokümandaki komutlarda ise;

Kod: Tümünü seç

RS-232c Port Initial
Baud Rate – 115,200, Data 8 Bit, Stop Bit - 1, Even Parity.
Data Length
Data length is field’s length that marks blackly.

CMD	Data Length	Data Field	Check Sum	CR


Check Sum
Checksum adds each data of Data Field part and produces as follows.
23h+94h+…+36h=12345678h ( 4Bytes, Data Type: long)
12345678h(Hex Decimal) = 305419896d(decimal)
Check sum (LSB 2 Bytes): 9(39h), 6(36h)
-----------------------------------------------------------------------------
ENQ (0x05) 
 ACK (0x06)
Command 
ESC	0x35	0x30	0x0d	0x0a
Return Command 
ESC	0x35	0x30

şeklinde anlatılmış ve bunları değişik formatlarda gönderdim, yine sonuç yok..Konu ile ilgili yorumlarınızı almak isterim.

//Edit:
Dokümanlarla birlikte gelen program sorunsuz bir şekilde haberleşmeyi sağlıyor..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Com Port bileşeninin (ApdComport) ayarlarını ..
..
Baud Rate – 115,200, Data 8 Bit, Stop Bit - 1, Even Parity.
..
e göre düzenledin mi?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Evet düzenledim..
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Terazinin dağıtıcısıyla irtibat kurduk ve farklı bir doküman gönderdiler, şöyle bir komut satırını bold font şeklinde yazmışlar;

Kod: Tümünü seç

5. Returned sale information
ENQ = 0x05, ACK = 0x06, EOT = 0x04, STX = 0x02,  
ETX = 0x03, NAK = 0x15, CR = 0x0D
yine farklı formatlarda yazmama rağmen bir tepki vermiyor.İlginç :roll:
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

bLue aLonE yazdı:Terazinin dağıtıcısıyla irtibat kurduk ve farklı bir doküman gönderdiler, şöyle bir komut satırını bold font şeklinde yazmışlar;

Kod: Tümünü seç

5. Returned sale information
ENQ = 0x05, ACK = 0x06, EOT = 0x04, STX = 0x02,  
ETX = 0x03, NAK = 0x15, CR = 0x0D
yine farklı formatlarda yazmama rağmen bir tepki vermiyor.İlginç :roll:
Sadece bir fikir ancak, belki durum bu olabilir. Bir keresinde Nokia telefonun kızılötesi bağlantısıyla oynarken, bir türlü iletişim kurdurtamamıştım. En sonunda bağlantı hızını sizin örneğinizdeki 115,200'den daha aşağılarda bir değere çekince sorun çözülmüştü. Yani dokümantasyon içerisinde gerekli bağlantı hızı belirtiliyor mu?

Bildiğim kadarıyla mikroişlemcilerle yapılan seri bağlantılar çok yüksek baud rate'leri desteklemiyor. Sorun bu olabilir. Saygılarımla ve Başarılar.

Not : Pardon sizden yaptığım alıntıya tekrar baktım da, şimdi orada returned sale information diyor. Büyük ihtimalle orada bir yazım hatası var. Bu metin aslında returned scale information (yani döndürülen terazi bilgisi) olmalı. Yani belgeyi görmedim ancak, büyük ihtimalle porta bir şey yazdığınızda, terazinin size döndüreceği bilgiler bunlar.

Yani orayı koyu yazmışlar ki, bu bilgiyi terazi geri döndürecek diye. Tekrar başarılar.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Öncelikle fikirlerin için teşekkürler.

Baud Rate değerini ilk mesajımdaki alıntı yaptığım bölümde deklare etmiştim ki bunu dokümanlardan paste ettim, 9600 değeriyle de denedim, sonuç değişmedi.Diğer konuda ise, returned sale information ibaresinin döndürülen değer anlamına geldiğini elbette ki biliyorum lakin dokümanlarda sadece bu kısmın belirgin şekilde yazılması komutların formatı üzerine yorum yapabilecek arkadaşlar için bir fikir verebilir düşüncesiyle buraya taşıdım, komutlar ilk yazdığım bölümdekiyle aynı..
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

genelde (karşılaştığım hepsinde) terazilerin continuous modu vardır. buna alırsınız, sonra porttan sürekli data basar. bu varmı? baud rate ve parity ayarları nasıl, kablonuz doğru bağlımı? programınızla denemeden önce hyper terminalden bağlanıp deneme yaptınızmı?
.-.-.-.-.-.-.-. ^_^
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Tam emin olmamakla birlikte continuous modu yok gözlemlediğim kadarıyla.Baud rate için 115200 demişler, parity even olarak yazılmış.Hyper terminal zaman aşımı hatası veriyor ancak ACom adında, arabirim tarzında(aslında arabirim sayılmaz, normal bir uygulama) program veriyorlar, bununla denediğimde sorunsuz veri alışverişi yapabiliyorum.ApdComport'un loglarına baktığımda porta yazıldığını görüyorum komutların, anladığım kadarıyla komutların formatını/syntaxını yanlış yazıyorum ben.Transmit Data bölümünde şöyle örneklenmiş;

Kod: Tümünü seç

ENQ (0x05) 
 ACK (0x06)
STX (0x02) 
Data Length (3Bytes)  (*)
Send ID 
0x30	0x32
Network Department Code (2 Bytes) 
Group Code (2 Bytes) 
PLU No (8 Bytes)  
Unit Price (8 Bytes) 
Item Code (6 Bytes) 
Cook By Date (3 Bytes) 
Shelf Life (3 Bytes) 
Native Code (3 Bytes) 
PLU Tare (5 Byte) 
PLU Type (1 Bytes) 
Title Code (1 Bytes) 
Commodity Name-1 (28 Bytes Char) 
Commodity Name-2 (28 Bytes Char) 
Ingredient Line-1 (56 Bytes) 
Ingredient Line-2 (56 Bytes) 
Ingredient Line-3 (56 Bytes) 
Ingredient Line-4 (56 Bytes) 
Ingredient Line-5 (56 Bytes) 
Ingredient Line-6 (56 Bytes) 
Ingredient Line-7 (56 Bytes) 
Ingredient Line-8 (56 Bytes) 
Ingredient Line-9 (56 Bytes) 
Ingredient Line-10 (56 Bytes) 
Check Sum (3Bytes) 
ETX (1Bytes) 
CR (0x0d) 
 ACK (0x06) OR NAK (0x15) OR EOT (0x04) 
EOT (0x04)=End of Data 
? işaretleri ok işaretlerinin yerine çıkıyor düz metinde..Burdan yola çıkarak çok farklı kod formatları oluşturarak gönderme yaptım ancak bir tepki alamadım.Gözümden kaçan birşeyler var ama çözemedim :x
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Türlü doküman mevcut nette, üreticinin sitesinde Türkiye'den birinin örnek isteği de var ancak hiçbir örnek yok ortalıkta ya da gizli kapaklı dağıtıyorlar.Bu kadar mı tıkanır bunun çözümü anlamadım gitti..
Anadolu27
Üye
Mesajlar: 35
Kayıt: 04 Nis 2006 11:42
Konum: Nizip

Mesaj gönderen Anadolu27 »

Merhaba,

Yardım dosyasını tarayıp resim olarak buraya veya bir siteye koyabilirmisin.
Veya varsa pdf,doc larını.. yazdıkların dan bişey anlaşılmıyor.. hangi komut nerde başlıyor nerde bitiyor belli değil.

Ayrıca cihaza veriyi gönderirken belli formatta gönderip bunun doğruluğunuda CheckSum olayı ile gönderdiğin bilginin sonuna yazmalısın.
CheckSum olmadan olmaz..

Genel mantık olarak bu cihazarla haberleşme mantığı:

Bilgisayar> müsaitmisin(ACK)
Cihaz>Evet(ACK),Hayır(NAK)
Bilgisayar>(STX)+Komuts+ChekcSum+(EOT)
Cihaz>KomutuSağlıklıAldım(ACK) veya SağlıklıALamadımTekrarla(NAK)
vs şeklinde gider..

dediğim gibi ilgili yardım dosyalarını görmemiz lazım..

Ayrıca Baudrate olaylarında mesafe uzaksa genel standart olan 9600 kullan veya daha düşük hızları.. yakın mesafede sıkıntı olmaz.. Data kablonuda Elektrik kablolarından uzak tutmaya çalış.

Sağlıcakla....
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Yazdığım komut formatlarında/syntaxlarında hata olduğu konusunda hemfikiriz :) Dokümanı buradan indirebilirsin, ilgin için teşekkürler..

http://www.proder.com.tr/Developer/NetsDocument.doc
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

bLue aLonE yazdı:Yazdığım komut formatlarında/syntaxlarında hata olduğu konusunda hemfikiriz :) Dokümanı buradan indirebilirsin, ilgin için teşekkürler..

http://www.proder.com.tr/Developer/NetsDocument.doc
Hocam farkında mısınız ancak bu metin Network protokolü diyor. Yani sizce burada bir tuhaflık yok mu?

Demek istediğim şu ki, verilen belge standart seri port iletişiminden çok TCP/IP iletişimine benziyor.

Bu konuda uzman değilim, ancak bu işlemde doğrudan bazı komutlar yazılarak bir şeyler yapılabileceğini düşünmüyorum.

Ayrıca metin içerisinde gönderilen veriler, sunumcu verileri kısmında bir şeyler listelenmiş ancak bunların ayrıntıları, formatları vs.'si gösterilmemiş.

Alınan veri kısmı için de aynı şey geçerli.

Sadece bir fikir, o yüzden hatalıysa kusura bakmayın. Ancak benim görüşümce seri port sanki bir TCP/IP soketiymiş gibi davranmalı burada. Ki bunun nasıl yapıldığı konusunda hiç bir fikrim yok.

Neyse google sayesinde bir şeyler bulabildim.

Aşağıdaki linkte yalnızca protokol değil, verilerin ayrıntıları da var. Umarım yardımcı olur.

http://www.acomrus.ru/protocols/NETS_TCP%20protocol.pdf

Aşağıdaki link te RS232 protokolünü anlatıyor, ki benim görüşümce, eğer seri port kullanacaksanız aşağıdaki protokolü kullanmanız gerekiyor, yukarıdakini değil: :)

http://www.acomrus.ru/protocols/NETS_RS ... otocol.pdf

Suçlama olarak algılanmasın sonuç olarak dağıtıcı, bir tüccar bu gibi işlerden anlamaz, ancak büyük ihtimal, dağıtıcının size verdiği metin yanlış. Belki makine üzerinde ayrıca ethernet soketi de var ve size verilen link onun için.

Ayrıca protocols klasöründe pek çok diğer döküman da var. Bunları inceleyebilirsiniz. Hatta dll'den vs.'den bahsediyor. Bir göz atsanız iyi olur.

Başarılar ve saygılar.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Öncelikle ilgin için teşekkürler.

Verdiğin linklere ek olarak benzer linklere de daha önce ulaşıp download ettik ve inceledik ancak gözlemlediğim kadarıyla anlatılanların hepsi aynı şeyler.TCP/IP olayını okur okumaz yanlış yapıyormuşuz dedim ben de ancak cihazda network bağlantı soketi/girişi yok sadece bir RS232 girişi mevcut.Anladığım kadarıyla dokümanlarda verilen bilgiler genelleme yapılarak yazılmış, örnekleme yapılmamış.Anadolu27'nin verdiği örnekleri baz alarak yapmamız gerekli ancak benzer birçok formatta veri göndermeme rağmen tepki vermiyor.Cihazla iletişim kurulamıyor diycem verdikleri yazılım okuyor yazıyor rapor alıyor her şeyi yapıyor.Üreticiye mail attım cevap vermediler.Geçici çözüm olarak gönderdikleri programın veritabanıyla bağlantı kurdum ve bu şekilde iletişim sağladım ama içime sinmedi her şeye rağmen :?
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bir şey daha dikkatimi çekti, Anadolu27'nin dediği gibi cihaza müsait misin diye komut gönderiyorum hani bir tepki gelirse ona göre hareket edeyim diye gene tık yok.Bileşenin diğer eventlerine de kod yazdım ki acaba farklı bir olay gerçekleşiyor da ben mi gözlemleyemiyorum diye, o da yok.Tam bir muamma...
Anadolu27
Üye
Mesajlar: 35
Kayıt: 04 Nis 2006 11:42
Konum: Nizip

Mesaj gönderen Anadolu27 »

MErhaba,

Biraz zaman aşımana uğradı cevabım ama ..

Verdiğin dökümanı inceledim.

Şimdi sen ilk önce cihaza ENQ göndermelisin. cihazda sana ACK sinyali göndermeli. ilk basamak budur.

eğerki cihazdan cevap alamıyorsan iki sebebi olabilir.
1- Bağlantı kablonda sorun olabilir. (Test için bu kabloyu iki bilgisayarın seri portunu kulanarak bilgi gönder.)
2- Sen gönderdim dediğin ENQ sinyalini yanlış gönderiyor olabilirsin.
(Gönderim yapan kodu yazman lazım buraya.)

Tabi bu işlemler senin yapmaya çalıştığın işin ilk basamakları.
sonrasın daha karışık.. yani amcama istediği formatta bilgileri sıralayıp göndermelisin vs...

Sağlıcakla..
Cevapla