|
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) 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 |