條碼編碼 Code39

2021-10-11 19:16:34 字數 3512 閱讀 2312

近來在研究條碼的實現,遇到一些坑,現在把自己遇到的一些情況分享一下。

世界上約有225種以上的條形碼

,一般較流行的有 39碼、ean碼、upc 碼、128碼,以及專門用於書刊管理的isbn、issn等。

我們先從code39碼開始:

39碼具有以下特性:

條碼的長度沒有限制,可隨著需求作彈性調整。但在規劃長度的大小時,應考慮條碼閱讀機所能允許的範圍,避免掃瞄時無法讀取完整的資料。

起始碼和終止碼必須固定為「 * 」字元。允許條碼掃瞄器進行雙向的掃瞄處理。由於39碼具有自我檢查能力,故檢查碼可有可無,不一定要設定。 條碼占用的空間較大。

可表示的資料報含有:0~9的數字,a~z的英文本母,以及「+」、「-」、「*」、「/」、「%」、「$」、「.」等特殊符號,再加上空白字元「 」,共計44組編碼,並可組合出128個ascii code的字元符號,如表所示。

表 ascii code字元符號與39碼對照表

這裡就只研究0~9的數字,a~z的英文本母,以及「+」、「-」、「*」、「/」、「%」、「$」、「.」等特殊符號,再加上空白字元「 」,這44組編碼,其他ascii碼的組合暫時不考慮;

code 39碼的編碼規則是:

1、9條線表示乙個字元;

2、黑線表示1,空線表示0;

3、線寬的表示w,窄的表示n;

4、條形碼的首尾各乙個*標識開始和結束;

5、寬條和窄條的比率為2-3之間;

6、字元和字元之間的有空白間隔;

7、校驗位可不做編碼;

編碼對映表如下:字元

邏輯型態 字元

邏輯型態 a

110101001011

wnnnnwnnwn n

101011010011

nnnnwnnwwn b

101101001011

nnwnnwnnwn o

110101101001

wnnnwnnwnn c

110110100101

wnwnnwnnnn p

101101101001

nnwnwnnwnn d

101011001011

nnnnwwnnwn q

101010110011

nnnnnnwwwn e

110101100101

wnnnwwnnnn r

110101011001

wnnnnnwwnn f

101101100101

nnwnwwnnnn s

101101011001

nnwnnnwwnn g

101010011011

nnnnnwwnwn t

101011011001

nnnnwnwwnn h

110101001101

wnnnnwwnnn u

110010101011

wwnnnnnnwn i

101101001101

nnwnnwwnnn v

100110101011

nwwnnnnnwn j

101011001101

nnnnwwwnnn w

110011010101

wwwnnnnnnn k

110101010011

wnnnnnnwwn x

100101101011

nwnnwnnnwn l

101101010011

nnwnnnnwwn y

110010110101

wwnnwnnnnn m

110110101001

wnwnnnnwnn z

100110110101

nwwnwnnnnn 0

101001101101

nnnwwnwnnn +

100101001001

nwnnnwnwnn 1

110100101011

wnnwnnnnwn -

100101011011

nwnnnnwnwn 2

101100101011

nnwwnnnnwn *

100101101101

nwnnwnwnnn 3

110110010101

wnwwnnnnnn /

100100101001

nwnwnnnwnn 4

101001101011

nnnwwnnnwn %

101001001001

nnnwnwnwnn 5

110100110101

wnnwwnnnnn $

100100100101

nwnwnwnnnn 6

101100110101

nnwwwnnnnn .

110010101101

wwnnnnwnnn 7

101001011011

nnnwnnwnwn 空白

100110101101

nwwnnnwnnn 8

110100101101

wnnwnnwnnn 9

101100101101

nnwwnnwnnn

這裡的邏輯形態,並不包括每個字元之間的空白間隙,所以在編碼的時候要再加乙個0,很多資料上都未提醒著一點,注意別踩坑。

現在直接上**:

#include #include #include #include "lcd.h"

//ÿ����ʾ�ַ���ӧ������

const char *code39databuf[43]= ;

char *code39_code(char *chartoshow, u8 len)

cheakid = cheaksum%43;

sprintf((char*)lcd_id,"lcd id:%d",cheakid);//

lcd_showstring(30,40,210,24,24,lcd_id);

//�����ǿհ�����9�����صŀհ�

strcat(pixelptr, space_code39);

//��������ʼ�ַ�*

strcat(pixelptr, bstartendbuf);

for (int i = 0; i < len; i++)

//у��

// strcat(pixelptr,code39databuf[cheakid]);

//�����ǽ����ַ�*

strcat(pixelptr, bstartendbuf);

return pixelptr;

}int code39_display( char *code39_data , u8 len)

else}}}

物聯網編碼 條碼

網際網路的編碼是ip位址,用於標識連入網際網路上的每台主機,它是每台主機唯一標識。在ipv4中,乙個ip位址由32個二進位制位元數字組成,通常被分割為4段,每段8位元,並用點分十進位制表示,每一段的取值範圍是0 255,最多容納的機器數是 255x255x255x255 約42億台。據cisco 到...

python自然語言編碼轉換模組codecs介紹

python對多國語言的處理是支援的很好的,它可以處理現在任意編碼的字元,這裡深入的研究一下python對多種不同語言的處理。有一點需要清楚的是,當python要做編碼轉換的時候,會借助於內部的編碼,轉換過程是這樣的 複製 如下 原有編碼 內部編碼 目的編碼 python的內部是使用unicode來...

編碼方式 EAN13商品條碼的結構和編碼方式

ean13商品條碼為ean條碼系統中的標準碼,共由13為數字組成 3位國家 4位廠商 5位產品 1位檢查碼 其排列如圖1。ean13商品條碼的結構和編碼方式如圖2 ean13商品條碼的結構包括 1 國家 由國際商品條碼總協會授權,我國的 位690 695,凡是我國核發的商品條碼均冠上690 695其...