commodore.gen.tr

Genel Kategori => Genel Sohbet => Konuyu başlatan: ozkano üzerinde Temmuz 06, 2007, 13:51:33 ÖS



Konu Başlığı: Visual Basic
Gönderen: ozkano üzerinde 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

 8)


Konu Başlığı: Ynt: Visual Basic
Gönderen: coze üzerinde 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)


Konu Başlığı: Ynt: Visual Basic
Gönderen: ozkano üzerinde 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


Konu Başlığı: Ynt: Visual Basic
Gönderen: LW3D üzerinde Temmuz 06, 2007, 14:06:32 ÖS
Sana 4 tane fonksiyon...İşlerini görür.. :D

Ö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.


Konu Başlığı: Ynt: Visual Basic
Gönderen: coze üzerinde 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.


Konu Başlığı: Ynt: Visual Basic
Gönderen: ozkano üzerinde Temmuz 06, 2007, 14:19:01 ÖS
saolun sorunumu çözdünüz


Konu Başlığı: Ynt: Visual Basic
Gönderen: ozkano üzerinde 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"



Konu Başlığı: Ynt: Visual Basic
Gönderen: ozkano üzerinde 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


Konu Başlığı: Ynt: Visual Basic
Gönderen: LW3D üzerinde Temmuz 06, 2007, 19:52:17 ÖS
sen bir programcı bul, kendisine bir Amiga1200 hediye et :) o sana yazsın istediğini :P

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