Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: Visual Basic  (Okunma Sayısı 7465 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ozkano
Uzman
*****
Mesaj Sayısı: 3.514



Üyelik Bilgileri WWW
« : Temmuz 06, 2007, 13:51:33 ÖS »

selam beyler, uzun sureden beri düşündüğüm kendi işimle ilgili bi projede takıldım, sorun şu, ben ağaç kaplaması satıyorum, ve bunların stogunu tutmak oldukça zor bu yuzden barkod olayına geçiyorum, biz malları birden fazla farklı fabriklaradan tedarik ediyoruz ve gelen her malın barkodu farklı yani standart üretilmiş ürünler değil yani dukkan da 100.000 tane kaplama paketi varsa bunların hepsinin barkodu farklı

şuan bende symbol un ufak bir barkod okuyucusu var, bu makina ile 150 tane barkodu okutturup hafızaya alıyom ve pc ye aktarmak istiyorum, bu makina satılırken yanında software le gelmiyor sadece SDK ları var buyuzden kendim VB de program yazmak zorundayım

şuan da çoğu işlem gitti ufak bir kısmı kaldı,

konu şu barkod okuyucu dan aldıgım verileri duzenlemem gerekişyor

mesela barcode dan 

2953032
3053032

bu iki datayı aldım, bunu hesaplar ken 

2953032

Boy = 295
En = 30
Yaprak= 32

Yani 295*30*32 = m2 data sına ulaşmam lazım

 2953032 -> 295*30*32
 3053032 -> 305*30*32 soncuna nasıl ulaşırım

aklıma ilk gelen sayıları sol dan yada sağdan eksiltmek


2953032 mesela 295 olarak nasıl yazarım

 Karizmatik
Logged

A500,A500+,A600,A1000,A1200,A2000,A3000,A4000,CDTV,CD32,A1,MacMini,R2HV,C64,48K,Ps,Ps2,Ps3
Xbox,Xbox360,Nes,Snes,N64,N64Ique,Gamecube,Wii,PcEngine,PcEngineGT,PcEngineDUO,TurboGrafx,NeoGeoAES
NeogeoCD,NeoGeoMVS,NeoGeoPocket,MegaDrive,SegaCD,MultiMega,Saturn,Dreamcast,Jaguar,Lynx,Cps1
Cps2,System11
coze
Uzman
*****
Mesaj Sayısı: 1.672


Hieh hieh hieh heh ...


Üyelik Bilgileri WWW
« Yanıtla #1 : Temmuz 06, 2007, 13:59:41 ÖS »

VB bilmiyorum ama C'de integer division kalani atar. O yuzden 2953032/10000 diyerek 295'e ulasabilirsin.

en son iki basamaga ulasmak icin modulus % operatorunu kullanman gerekir. 2953032%100=32 (uzluk modda 32 gibi)
Logged

Retro Hincal Uluc
ozkano
Uzman
*****
Mesaj Sayısı: 3.514



Üyelik Bilgileri WWW
« Yanıtla #2 : Temmuz 06, 2007, 14:02:44 ÖS »

295 mesela değin gibi ulaşa bilirim 30 ve 32 sayılarına nasıl ulaşa bilirimi ?

amacım 2953032 sayısını xxx xx xx haline getirmek ve bu 3 sayıyı kullanmak
Logged

A500,A500+,A600,A1000,A1200,A2000,A3000,A4000,CDTV,CD32,A1,MacMini,R2HV,C64,48K,Ps,Ps2,Ps3
Xbox,Xbox360,Nes,Snes,N64,N64Ique,Gamecube,Wii,PcEngine,PcEngineGT,PcEngineDUO,TurboGrafx,NeoGeoAES
NeogeoCD,NeoGeoMVS,NeoGeoPocket,MegaDrive,SegaCD,MultiMega,Saturn,Dreamcast,Jaguar,Lynx,Cps1
Cps2,System11
LW3D
Yönetici
*****
Mesaj Sayısı: 11.417


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #3 : Temmuz 06, 2007, 14:06:32 ÖS »

Sana 4 tane fonksiyon...İşlerini görür.. Kahkaha

Öncelikle gelen sayının uzunluğunun doğru olup olmadığını kontrol etmek faydalı olacaktır. LEN ile bunu öğrenebilirsin. left$, right$ ya da MID$ ile elindeki değişkeni parçalara ayırabilirsin..

Kolay gelsin
    
    RIGHT$ (string, adet)
    String ifadesinin sağından adet miktarı kadar karakteri geri döndürür. Genel yazım biçimi şu şekildedir:
met = RIGHT$("Mehmet", 3)

    LEFT$ (string, adet)
    String ifadesinin solundan adet miktarı kadar karakteri geri döndürür. Genel yazım biçimi şu şekildedir:
meh = LEFT$("Mehmet", 3)


    MID$ (string, sol_bas, adet)
    Girilen string ifadesinde sol_bas ile verilen değerdeb başlayarak; adet kadar, sağa giderek yeni bir string geri döndürür. Genel yazım biçimi şu şekildedir:
meh = MID$("tarak", 1,3) 'Sonuç "tar" olacaktır.


   LEN (string)
    Bir string'in uzunluğunu bulmak için kullanılır. Genel yazım biçimi şu şekildedir:
uzunluk = LEN("Çekoslavakyalılaştıramadıklarımızdanmısınız") 'Sonuc 43 olacaktır.

Not: http://www.ilkokuma.com/bilgisayar/Basic.htm  sitesinden alınmıştır.
« Son Düzenleme: Temmuz 06, 2007, 14:08:04 ÖS Gönderen: LW3D » Logged

coze
Uzman
*****
Mesaj Sayısı: 1.672


Hieh hieh hieh heh ...


Üyelik Bilgileri WWW
« Yanıtla #4 : Temmuz 06, 2007, 14:07:26 ÖS »

32 icin dedigim gibi modulus kullanman gerekiyor. 30 icin ise once bolme sonra modulus yapabilirsin.

2953032/100=29530
29530%100=30

tabi bu arada tum bu dediklerim 2953032 integer ise gecerli aslinda c'de olsa bunu cart diye string'e cevirip sscanf ile filan parcalayabiliriz aritmetikle ugrasmaya gerek yok.

VB ve string processing / string manipulation filan diye aratirsan bir suru ornek gelecegini tahmin ediyorum.

edit : lw3d olayi bitirmis ben yazarken geldi mesaj.
« Son Düzenleme: Temmuz 06, 2007, 14:09:50 ÖS Gönderen: coze » Logged

Retro Hincal Uluc
ozkano
Uzman
*****
Mesaj Sayısı: 3.514



Üyelik Bilgileri WWW
« Yanıtla #5 : Temmuz 06, 2007, 14:19:01 ÖS »

saolun sorunumu çözdünüz
Logged

A500,A500+,A600,A1000,A1200,A2000,A3000,A4000,CDTV,CD32,A1,MacMini,R2HV,C64,48K,Ps,Ps2,Ps3
Xbox,Xbox360,Nes,Snes,N64,N64Ique,Gamecube,Wii,PcEngine,PcEngineGT,PcEngineDUO,TurboGrafx,NeoGeoAES
NeogeoCD,NeoGeoMVS,NeoGeoPocket,MegaDrive,SegaCD,MultiMega,Saturn,Dreamcast,Jaguar,Lynx,Cps1
Cps2,System11
ozkano
Uzman
*****
Mesaj Sayısı: 3.514



Üyelik Bilgileri WWW
« Yanıtla #6 : Temmuz 06, 2007, 14:49:01 ÖS »

boy = Left$(bstrBarcode, 4)
               en = Mid$(bstrBarcode, 5, 2)
                 yaprak = Right$(bstrBarcode, 2)
                 metrekare = (boy * en * yaprak) / 10000
                 toplam = bstrBarcode + bstrBarcode
                 
                 
                   
                    DisplayInBCWindow metrekare & " " & "m2"

Logged

A500,A500+,A600,A1000,A1200,A2000,A3000,A4000,CDTV,CD32,A1,MacMini,R2HV,C64,48K,Ps,Ps2,Ps3
Xbox,Xbox360,Nes,Snes,N64,N64Ique,Gamecube,Wii,PcEngine,PcEngineGT,PcEngineDUO,TurboGrafx,NeoGeoAES
NeogeoCD,NeoGeoMVS,NeoGeoPocket,MegaDrive,SegaCD,MultiMega,Saturn,Dreamcast,Jaguar,Lynx,Cps1
Cps2,System11
ozkano
Uzman
*****
Mesaj Sayısı: 3.514



Üyelik Bilgileri WWW
« Yanıtla #7 : Temmuz 06, 2007, 18:24:30 ÖS »

sırada 2. sorunsalımız, dataları başarılı bir şeiklde almayı başardım şimdiki sorun dataları kumulatif olarak nasıl toplarım

datalar if ve else komutları dögusu doğrultusunda geliyor bunları ekrana basabiliyorum ama bunları nasıl toplarım

Public Sub Command1_Click()
    Dim nRC As Long
    Dim nNumOfBarcodes As Long
    Dim i As Long
    Dim j As Long
       
    Dim arrbyteBarcode(99) As Byte '100 elements
    Dim nBytesRead As Long
    Dim bstrBarcode As String
    Dim bstrTmp As String * 50
   
   
    'Determine if we can read the data
    nRC = csp2ReadData
       
    If nRC > 0 Then
        'cs1504 has barcodes!
        nNumOfBarcodes = nRC
       
     
           
        'Check to see that we are in ascii mode...
        If csp2GetASCIIMode = PARAM_ON Then
       
       
           
            For i = 0 To (nNumOfBarcodes - 1)
                nBytesRead = csp2GetPacket(arrbyteBarcode(0), i, 100)
               
                If nBytesRead > 0 Then
                    'bstrBarcode = "Rcvd:"
                 
                   
                    DisplayInBCWindow bstrTmp
                    bstrBarcode = " "

                                                       
                    ' display the barcode is ascii
                    ' skip the length, type, .... timestamp
                    For j = 13 To (nBytesRead - 5)
                   
                   
                   
                   
                   
                   
                 
                        bstrBarcode = bstrBarcode & Chr(arrbyteBarcode(j))
                        'DisplayInBCWindow Chr(arrbyteBarcode(j))
                   
                    Next j
                     
                   
                  Boy = Mid$(bstrBarcode, 4, 3)
                  en = Mid$(bstrBarcode, 8, 2)
                 yaprak = Left$(bstrBarcode, 3)
                 metrekare = (Boy * en * yaprak) / 10000
                 m2 = Left$(metrekare, 4)
                 
                 
                    DisplayInBCWindow m2 & " m2"
                   
                    'DisplayInBCWindow Boy & " x " & en & " x " & yaprak & " = " & metrekare & " " & "m2"
                   
                    'DisplayInBCWindow bstrBarcode & " " & yaprak
                   
                   
                 
                   
                   
                   
                   
                   
               
                End If
            Next i
        Else
            'Add binary mode packets handling here..
            DisplayInBCWindow "Binary Mode ON"
        End If
       
    Else
        DisplayInBCWindow "No Barcodes to Read."
    End If
   
End Sub



bstrBarcode barkod okuyucadan alınan asci şeklinde datalar bunlar ı nasıl toplarım ve gelen dataların formatı 6,9 ben bunları 6,9 yerine 6,90 da yapmak istiyorum
Logged

A500,A500+,A600,A1000,A1200,A2000,A3000,A4000,CDTV,CD32,A1,MacMini,R2HV,C64,48K,Ps,Ps2,Ps3
Xbox,Xbox360,Nes,Snes,N64,N64Ique,Gamecube,Wii,PcEngine,PcEngineGT,PcEngineDUO,TurboGrafx,NeoGeoAES
NeogeoCD,NeoGeoMVS,NeoGeoPocket,MegaDrive,SegaCD,MultiMega,Saturn,Dreamcast,Jaguar,Lynx,Cps1
Cps2,System11
LW3D
Yönetici
*****
Mesaj Sayısı: 11.417


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #8 : Temmuz 06, 2007, 19:52:17 ÖS »

sen bir programcı bul, kendisine bir Amiga1200 hediye et o sana yazsın istediğini

Eğer önceki yöntemle, string'i parçalara ayırıyorsan yani 9 basamaklı veriyi, bölüyorsan, yazılım onu alfanumerik olarak algılıyor. Senin onları numerik yani sayısal değere çevirmen gerek. Bu dönüşümden sonra aritmetik işlemler sorun olmaz.

yani..

Kod:
Boy = Mid$(bstrBarcode, 4, 3)
                  en = Mid$(bstrBarcode, 8, 2)
                 yaprak = Left$(bstrBarcode, 3)
                 metrekare = (Boy * en * yaprak) / 10000
                 m2 = Left$(metrekare, 4)

metrekareden önce boy,en,yaprak'ı sayıya çevirmen lazım..Yazılım onları karakter olarak algılıyor.

PHP'de kullanılacak fonksiyon intval() ama Vbasicte nedir bakalım.. Bulmak oldukça uzun sürdü  

val()

Birde .'dan sonraki buçuk kısmı için değişken sınıflarına bir bak. integer, float vs. türü tanımlamalar vardır. Metrekare değişkenini tanımlaman durumunda sanırım istediğin formatta görünür.. yukardaki kodda m2 değişkeni anlamsızlaşacaktır..onu çıkart..

kolay gelsin

Logged

Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: