1

Konu: c# barcode

Arkadaşlar vfp da böyle bir function vardı ve barcode yazdırıyordum fakat c# a dönüştüreyim dedim malesef
olmadı nerede hata yaptım acaba ?

vfp kodları

FUNCTION _StrTo128C(tcString)
  LOCAL lcStart, lcStop, lcRet, lcCheck, lcCar, ;
    lnLong, lnI, lnCheckSum, lnAsc
  lcStart = CHR(105 + 32)
  lcStop = CHR(106 + 32)
  lnCheckSum = ASC(lcStart) - 32
  lcRet = ALLTRIM(tcString)
  lnLong = LEN(lcRet)
  *--- La longitud debe ser par
  IF MOD(lnLong,2) # 0
    lcRet = '0' + lcRet
    lnLong = LEN(lcRet)
  ENDIF
  *--- Convierto los pares a caracteres
  lcCar = ''
  FOR lnI = 1 TO lnLong STEP 2
    lcCar = lcCar + CHR(VAL(SUBS(lcRet,lnI,2)) + 32)
  ENDFOR
  lcRet = lcCar
  lnLong = LEN(lcRet)
  FOR lnI = 1 TO lnLong
    lnAsc = ASC(SUBS(lcRet,lnI,1)) - 32
    lnCheckSum = lnCheckSum + (lnAsc * lnI)
  ENDFOR
  lcCheck = CHR(MOD(lnCheckSum,103) + 32)
  lcRet = lcStart + lcRet + lcCheck + lcStop
  *--- Esto es para cambiar los espacios y caracteres invalidos
  lcRet = STRTRAN(lcRet,CHR(32),CHR(232))
  lcRet = STRTRAN(lcRet,CHR(127),CHR(192))
  lcRet = STRTRAN(lcRet,CHR(128),CHR(193))
  RETURN lcRet
ENDFUNC





c# a dönüştürdügüm kodlar


       public static string StrTo128C(string m_gbarcode)
        {



            string lcStart = Encoding.Default.GetString(new byte[] { 105 + 32 });
            string lcStop = Encoding.Default.GetString(new byte[] { 106 + 32 });
           
       
           byte[] abData = System.Text.Encoding.Default.GetBytes(lcStart);

           int lnCheckSum = abData[0]-32;

       
            string lcRet = m_gbarcode.Trim();


            int lnLong = lcRet.Length;

            if (lnLong % 2 == 0)
            {

                lcRet = "0" + lcRet;

                lnLong = lcRet.Length;
            }

           

            string lcCar = "";

            for (int i = 1; i < lnLong; i +=2)
            {

                int deger = int.Parse(lcRet.Substring(i, 2).ToString())+32;
                lcCar += ((char)deger).ToString();

            }


            lcRet = lcCar;
            int tt;

            lnLong = lcRet.Length;
           
            for (int j = 1; j < lnLong+1 ; j++)
            {
                tt = j - 1;

                abData = System.Text.Encoding.Default.GetBytes(lcRet.Substring(tt, 1));
                int deger = (abData[0] - 32) * j;
                lnCheckSum += deger;
     
               

            }



             int degcev = (lnCheckSum % 103) + 32;
         

             string lcCheck sad(char)degcev).ToString();

             lcRet = lcStart + lcRet + lcCheck + lcStop;



           lcRet =lcRet.Replace( ((char)32).ToString(), ((char)232).ToString() );
           lcRet = lcRet.Replace(((char)127).ToString(), ((char)192).ToString());
           lcRet = lcRet.Replace(((char)128).ToString(), ((char)193).ToString());


            return lcRet;

        }

Bilgi Paylaşıldıkça Artar...!

2

Re: c# barcode

public static string StrTo128C(string m_gbarcode)
{
    string lcRet = m_gbarcode.Trim();
    if (lcRet.Length % 2 != 0)
    {
        lcRet = "0" + lcRet;
    }

    byte[] lcCar = new byte[lcRet.Length/2];
    for (int i = 0; i < lcRet.Length; i += 2)
    {
        int value;
        lcCar[i/2] = (byte)((int.TryParse(lcRet.Substring(i,2), out value)
        ? value
        : 0) + 32);
    }

    int lnCheckSum = 105;
    for (int j = 0; j < lcCar.Length; j++)
    {
        lnCheckSum += (lcCar[j] - 32) * (j+1);
    }

    var lcCheck = (byte)(lnCheckSum % 103 + 32);
    
    byte[] ret = new byte[lcCar.Length + 3];

    ret[0] = (byte)(105 + 32);
    lcCar.CopyTo(ret,1);
    ret[lcCar.Length + 1] = lcCheck;
    ret[lcCar.Length + 2] = (byte)(106 + 32);
    
    for (int i = 0; i < ret.Length; i++)
    {
        if (ret[i] == 32) {ret[i]= 232;}
        else if (ret[i] == 127) { ret[i] = 192; }
        else if (ret[i] == 128) { ret[i] = 193; }
    }
    
    return Encoding.ASCII.GetString(ret);
}

3

Re: c# barcode

Çetin Bey ;
İlginize ve Emeğinize Çok Teşekkürler
Barkod yazıcısının enteresan tepkisi benim de değiştirdigim kodla normal yazıcıya yazıyor
ve okuyor fakat zebra barkod yazıcısına gönderdigimde barkodu okumuyor barkod okuyucu
sizin kodlardada aynı durum var.Ama vfp ile hem kagıta yazılanı hemde barkod yazıcıdan yazılanı
okuyor bunu anlayamadım üretilen metin aynı ama c# cristal reporttan gönderdigimde dediğim sonuç
çıkıyor ben de çok ugraşmadım zebranın kendi kodları ile yazadırdım   geçti gitti
enterasan olay.Tekrar emeğinize saglık.

Bilgi Paylaşıldıkça Artar...!

4

Re: c# barcode

Zebra'nın PCL i (PrinterControlLanguage ) çok iyidir. Hem de çok kaliteli baskı verir. Eltron falan hep Zebra'nın
OEM ürünü sanırsam.