benim anlattıklarım sistemin çalışma prensibi bu işin temeli budur bundan farklı bir yolu yoktur. Yukarıda yazmayı unutmuşum, aldığınz cihaz api desteği veriyorsa zaten o kullanılarak basit bir şekilde yapılabilir ancak eski bir cihaz ise dediğim şekilde uğraşarak yapılabilir. Veri okuma işlemini de söyledim usb,seri port ya da paralel porttan gelen verileri kolaylıkla port readerlar ile okuyabilirsiniz buradaki okumanın amacı ilk başta bahsettiğim şekilde api kullanmadan yapılacak ise izllenecek yoldur.
usb lerin çalışması sistemi seri-paralel porta göre çok daha farlıdır. Öncelikle bir aygıta erişmek için programınızla ve cihaz arasında handshake olması şarttır. Cihaz ve programın handshake i için 3 tane seri numara gereklidir ama bunun 2 si zorunludur. Bunlar vendor ve product ID dir. bu iki id olmadan programa veri göndermek imkansızdır. Eğer cihazın sdk sı var ise zaten bunlar gömülüdür ve onun aracılığı ile yollanabilir, değilse o zaman cihazdaki bu idleri bulup ona göre iletişim sağlamalısınız aksi halde veri gönderme işlemini yapamazsınız. Yani olay sadece bilgisayarın usb portuyla bitmez, önemli olan cihazla handshake yaptırmaktır.
http://www.lvr.com/winusb_article.htm
buraya bi göz atabilirsiniz.
Ben olayın biraz daha teknik boyutunu anlatıyorum, yüzeysel olarak hazır sistem apilerini kullanırsanız onlar sizin yerinize bu işi yapıyor. Cihazın ne olduğu konusunda fikrim yok ama en temel şekilde çalışması dediğim şekildedir eğer usb destekliyse. Win api leriyle direk veri yollamazsınız, usb portunu neye göre seçeceksiniz, buradaki prensipler seri-paralel port gibi belli referans adreslerine sahip değildir. (&h378 gibi) usb de port seçiminden ziyade vID ve pID(vendor id,product id) ye göre işlem yapılır. Ancak cihazın kendi apisi varsa bu idler bunun içine gömülüdür. İşin teknik tedayı bu
iyi çalışmalar
POS Programlama
13
●5.322
- 16-10-2012, 17:26:31Kimlik doğrulama veya yönetimden onay bekliyor.ertan hocam tekrar merhaba,
numarator sisteminde kullanilacak, pos cihazinin urettigi kodu alip termal yazicidan bastirilacagi islemi icin o kadar derin bir aygit sistemi bilgisine gerek yok.
win apileri ile direkt olarak usb portlari araciligi ile bagli cihazlarla iletisim kurabilirsiniz. asagida ornek bir snippet verdim. d7 surumunde derleyip deneyebilirsiniz.
Aygit:='\?\USB#Vid_R10SSB&Pid_1453#5&1234567&0&1#{abcde-efgh-blah-blah-blah}';
COM uzerinden baglanti kuracak olsaydiAlıntı
Aygit:='Com1/2/3'; artik her ne ise yazilabilirdi.
saygilar. - 17-10-2012, 00:00:21tekrar merhaba,ertan2002 adlı üyeden alıntı: mesajı görüntüle
ertan hocam, vendorID ve productID ile yapmayacagim gibisinden bir ongorude bulunmadim. sanirim bir yanlis anlasilma oldu, konuyu tekrar bastan gozden gecirdigimde de konudaki verdigim eksik bilgi kisimlarini tekrar duzenledim. onceki mesajimda winAPI ile kolay bir sekilde programlanabilecegini izah ettim ve ardindan bir GUID, VID ve PID ile handshake islemini gerceklestiren 3. bir external toola ihtiyac duymadan direk delphi / pure api bir snippet paylastim.
iyi forumlar - 17-10-2012, 01:22:26düzelmenizden önce bu id ler yoktu bilmem ne adı v.s. yazmıştınız doğru olan şuan ki gibidir. usb mimarisi çok farklı ve zordur bu yukarıda anlattıklarım temel iletişim prosedurleriydi.
ikinci kısım da arkadaşla konuşmam üzere kullandıkları pos cihazı firmasının katologlarına baktığımda iletişimin şifreli olarak sağlandığı yazılmakta. Yurtdışı firma görevlisiyle görüştüğümde api desteğinin olduğunu ve ücretsiz olduğunu söyledil ama öncelikle geliştiriler için bir paket (sdk yi kast ediyor) ve bu şeyin eğitimine katılması gerektiğini belirtti.
(They are not. You'll need to purchase a Developer's Package, and attend a training session first. Information on this process can be found .....)
asıl demek istediğim bu iş o kadar kolay değil. Ben kendi tasarladığım cihazda bile belirli bir algoritma koyarak bazı işleri yaptırıyorum giriş şifresi bilgisi dışında cihazla iletişim sağlanması mümkün değildir ki bu üründe de herhalde sadece vID,pID ini kullanarak istenilen iletişim sağlanamaz.
neyse çok uzatmaya gerek yok, sadece elektronikçi kimliğimle bu işlerin sanıldığı gibi veri gönderip alma ile olmadığını söylemeye çalıştım
iyi çalışmalar