• 16-10-2012, 13:11:27
    #10
    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
  • 16-10-2012, 17:26:31
    #11
    Kimlik 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}';

    Alıntı
    Function ConnectToUSB:boolean;
    var
    Aygit : String;
    Handle : Cardinal;
    begin
    Aygit:='\?\USB#Vid_R10SSB&Pid_1453#5&1234567&0&1#{ abcde-efgh-blah-blah-blah}';
    Handle:=CreateFile(PAnsiChar(Aygit), GENERIC_WRITE OR GENERIC_READ,
    FILE_SHARE_WRITE OR FILE_SHARE_READ, NIL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED OR FILE_ATTRIBUTE_NORMAL, 0);
    if Handle <> INVALID_HANDLE_VALUE then
    BEGIN
    Result:=True;
    END
    ELSE
    BEGIN
    Result:=False;
    END;
    end;
    COM uzerinden baglanti kuracak olsaydi
    Aygit:='Com1/2/3'; artik her ne ise yazilabilirdi.

    saygilar.
  • 16-10-2012, 17:57:05
    #12
    dediğim gibi vendor ve product id yi kullanmışsın, bu iki id olmadan zaten yapman imkansız. yukarıda açıkladığım her şey zaten bunla ilgiliydi. ben sadece işin teknik tarafta nasıl yürütüldüğünü anlattım.usb için handshake gerçekleştirilmeden bu işlem yapılamaz.
  • 17-10-2012, 00:00:21
    #13
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    dediğim gibi vendor ve product id yi kullanmışsın, bu iki id olmadan zaten yapman imkansız. yukarıda açıkladığım her şey zaten bunla ilgiliydi. ben sadece işin teknik tarafta nasıl yürütüldüğünü anlattım.usb için handshake gerçekleştirilmeden bu işlem yapılamaz.
    tekrar merhaba,

    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:26
    #14
    dü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