1차원 바코드 Code 128

총 108개의 문자를 표현할 수 있으며 시작(3) 종료(2)는 문자수에서 제외됩니다.
BARCODE의 구성원리는 알아보았으니 실직적으로 code128의 원리를 파보도록 하겠습니다.
code128의 사양(Specification)

그림처럼 총 6개의 구역으로 이루어져 있습니다.

1.Quiet zone
2.Start symbol
3.Encoded data
4.Check symbol
5.Stop symbol
6.Final bar (often considered part of the stop symbol)
7.Quiet zone

Quiet zone

Quiet zone은 바코드의 앞/뒤에 존재하게 되며 특별히 code128이 아니더라도 모든 바코드에서는 앞/뒤 여백이 있어야 합니다…사실 표준기관에 quiet zone spec을 보면 반드시 아무것도 인쇄해서는 안되는 영역이며 반드시 보장되어야 하는 영역이라고 명시되어 있습니다.
(약식 바코드 까지 EAN-8? 같은 것도 포함되는지는 모르겠네요)

보통 내용문자 *10의 크기를 가져야 합니다.

이 영역이 사실 디코딩 수준을 결정하기에 딱1개의 양쪽에 *10크기로 비워 라는 아니긴 합니다만, Normal, More Aggressive, One Side EB, Anything 등의 디코딩을 위한 방식이 있으나..넘어가도록 하겠습니다 일단은 양쪽에 *10 크기로 비우는 걸로 ㅎ

Start symbol

존재목적이라 함은…이제 바코드가 시작된다를 알립니다…허무한가요..;;

code 128에는 3종류의 codeset이 존재합니다, 128a, 128b, 128c라고 한다고 저는 알고있는데 이게 정말 공식적인 명칭인지는 확실하지 않으니 이부분이 궁금하시면 따로 확인을 해보시면 될 듯 합니다…저는 딱히 안 궁금해서 ㅠㅠ

– 2018-11-02 추가 시작
Code 128 A: Partial ASCII set, no lower case, but ASCII control chars (TAB, CR/LF etc.)
Code 128 B: Full ASCII set, no ASCII control chars
Code 128 C: Only digits 0-9, encoded in pairs, very compact code
A,B,C 의 명칭이 그 닥 공식화 되어있지 않지만 대충 A,B,C라고 부르네요 그냥 다들 ㅡㅡ;;
각 코드셋이 수용할 수 있는 범위가 명시 되어있는 정보를 찾아서 내용을 추가합니다.
– 2018-11-02 추가 끝


code128 codeset별 codevalue 참고

코드표에서 보면 Start Code A(211412), Start Code B(211214), Start Code C(211232)
가 명시 되어있는 것을 확인하실 수 있습니다.
예를 들어 Start Code B(211214)
11010010000 211214 는
검검흰검흰흰검흰흰흰흰 으로 이루어진
■■□■□□■□□□□ 처럼 생긴 바코드로 표현이 되겠지요

Encoded data

여긴 말그대로 데이터입니다.
소스로 구현시에는 가장 복잡하게? 들어가겠죠 ㅎ?, 데이터 다루는 부분은 따로 정리하겠습니다.

Check symbol

체크섬 공식에 의한 검증코드값이 같이 들어갑니다, 이건 메세지가 리더기에서 정확하게 읽혔는가 검증하기위한 값이라고 생각하시면 됩니다.

문자열의 자리 수 * 문자 값 들의 합에 103으로 나눈 나머지에 해당하는 코드 값이 code128에서 Check symbol 값이 되겠습니다.

LeeJungKyu <- 이건 나중에 소스에서 다시 설명 드리겠지만 codeset A냐 codeset B냐의 검증을 거쳐보면 codeset B라는 결론이 나는 문자열입니다..해서!!!

LeeJungKyu 문자열을 Start Code B로 시작하는 값을 code128로 한번 만들어 보겠습니다.

L : 첫번째 자리니까 1 * L의 문자 값 => 1 * 44

??? : 여기서 왜 L의 문자 값이 44인가 갑자기 이해가 안가시는 분들은 barcode 128 codeset 가셔서 128B값에 대문자 L 인곳으로 가보시면

Value 128A 128B 128C Font position
(Common/Barcodesoft) Bar/Space
Code Latin-1 Pattern Widths
44 L L 44 76 L 10001101110 132131

뙇 하고 확인하실 수 있습니다.

그럼 다시 정리해 보겠습니다.

L : 첫번째 자리니까 1 * L의 문자 값 => 1 * 44 = 44
e : 두번째 자리니까 2 * e의 문자 값 => 2 * 69 = 138 ( 사실 여기에서 힌트가 codeset A에선 소문자 e 표현이 없습니다 )
e : 세번째 자리니까 3 * e의 문자 값 => 3 * 69 = 207
J : 네번째 자리니까 4 * J의 문자 값 => 4 * 42 = 168
u : 다섯번 째 자리니까 5 * u의 문자 값 => 5 * 85 = 425
n : 여섯 번째 자리니까 6 * n의 문자 값 => 6 * 78 = 468
g : 일곱 번째 자리니까 7 * g의 문자 값 => 7 * 71 = 497
K : 여덟 번째 자리니까 8 * K의 문자 값 => 8 * 43 = 344
y : 아홉 번째 자리니까 9 * y의 문자 값 => 9 * 89 = 801
u : 열 번째 자리니까 10 * u의 문자 값 => 10 * 85 = 850

분명 공식은 문자열의 자리 수 * 문자 값 들의 합에 103으로 나눈 나머지 라 했습니다 ㅋ

2018-11-16 추가 및 수정 ** 중요
체크섬계산에 관한 엄청난 잘못된 점이 있어서 ㄷㄷ…수정합니다
다른 건 틀린 게 없는데 더할 때 맨처음에 StartSymbol 의 문자 값(Value)을 더해야 합니다, 그러니…결국 ㅠㅠ Checksum 값이 여기서 먼저 보신분처럼 하면 다르겠죠 결국 그걸로 바코드 찍히긴 합니다만….검증시에 계속 에러가 나고있었네요…. 죄송합니다 ㅠㅠ


그러면!!!
104(Start Code B 의 Value) + 44 + 138 + 207 + 168 + 425 + 468 + 497 + 344 + 801 + 850 = 3,942 4,046

3,942를 103으로 나누면 = 38.271844660194176
4,046을 103으로 나누면 = 39.2815533980583

참고 : 여기서 나머지를 구하는건 나머지를 구하는 알고리즘을 따로 찾아보시기 바랍니다.(산수시간인가요 ㅎㅎ?)

여기서 몫 : 38 / 나머지 : 28
여기서 몫 : 39 / 나머지 : 29

이란 결과를 얻을 수 있습니다, 그럼 2829 이 표현되는 codeset B에 <= 기호가 Check symbol이 되겠습니다.!!!!

Start symbol/LeeJungKyu<=/Stop symbol

최종 이런 모습이 데이터가 되겠네요..나중에 확인했는데 틀리면 망신인데요…..
하…다시 노가다를

Start Code B : 211214 => 11010010000

L : 132131 => 10001101110
e : 112214 => 10110010000
e : 112214 => 10110010000
J : 112133 => 10110111000
u : 124211 => 10011110010
n : 241112 => 11000010100
g : 122114 => 10011010000
K : 112331 => 10110001110
y : 212141 => 11011011110
u : 124211 => 10011110010
< : 322112 => 11100110100
= : 322211 => 11100110010

Stop pattern : 2331112 => 1100011101011
LeeJungKyu 란 문자를 code128식의 바코드 형태로 변경하면
2112141321311122141122141121331242112411121221141123312121411242113221123222112331112
가 되는 겁니다 .

마지막으로 패턴으로 변경하면
110100100001000110111010110010000101100100001011011100010011110010110000101001001101000010110001110110110111101001111001011100110100111001100101100011101011

0과 1로 그림을 그리는데 1개의 숫자는 일정한 사이즈로 선을 그립니다 여기서 맨 처음 Quiet zone 을 다시 생각해보면 1개의 숫자가 그어지는 선의 10배만큼씩 좌우로 여백을 주고 안에다 그려야 한다는 말이었다고 이해가 되시는 지 모르겠습니다.

왜 도대체 2331112가 1100011101011로 변환되는가를 고민하시는 분들이 계실 까봐…
barcode 128 codeset 여기를 다시 보시죠 자세히..ㅋㅋ
Widths죠? Pattern이고요 Widths는 규칙이 있습니다..사실 이게 저도 정확하게 궁금한 부분인데 Widths값이 Pattern값으로 변환되는 규칙은 저는 BWB(Black White Black)으로 외워서 알고있거든요…깊게 찾아보지 않고 그냥 그렇게 외우고 있습니다 ㅠㅠ
즉 말해서 블랙화이트블랙순으로 Widths의 값만큼 그리는 겁니다 블랙을 1 화이트를 0으로 하면
2331112를 풀어 말하면 블랙2 화이트3 블랙3 화이트1 블랙1 화이트1 블랙2 이렇게 되는 거죠 이걸 그대로 0과1로 표현하되 1이상의 숫자는 반복하는 거로 적으면 그냥
1100011101011 이 됩니다 ㅋㅋ 잘 아시는 분 댓글 좀 제가 잘못 알고 있는 거면 전 망했네요..

숫자가 연속되면 두꺼워지는 것 처럼 보이겠죠 바코드에서 많이 보던 느낌 살아나죠?

실제로 바코드로 그려진 이미지 입니다, 만약!! 아주 만약 정말 이걸 수작업으로 오차없이 그리실 수 있다고 하면(사실 바코드가 선의 농도도 체크한다는데..이건 나중에 알아봐야 할 듯합니다) 재미삼아 해보세요..

요즘은 리더기 아니더라도 앱으로 리더기들이 많아서 찍어 보시면 재미있을지도 모릅니다 - _-

Stop symbol

사실 위에서 다뤘습니다..순서도 뒤죽박죽이네요 ㅋㅋ 이것 역시 마지막이라는 신호입니다.

우선 이론 편…여기서 마치겠습니다
왜???이론 편이냐??????
전 이거 그냥 공부하려고 정리한 건 아니거든요 ㅡㅡ;;
이 1차원 바코드 그리러 Visual Studio 켜야 지 않겠습니까 ㅋ?
감사합니다.

Backflush

간단히 말해 선 집행 후 처리 라고 보면 될 듯 합니다.
빈번하게 나가는 재고를 일일이 기록하면서 보관하면 기록하는데 낭비되는 시간이 많을 것.
이 때문에 빈번하게 나가는 재고를 우선 작업을 하고 나서 나중에 처리를 한다고 생각하면 되겠습니다.

backflush는 재고 불출의 한 방법입니다.
생산은 Input을 output으로 바꾸는 것을 의미합니다.
즉 order을 하게 되면 input의 부품은 재고에서 사라지고 가치가 부과된 제품이 나오는 거죠.
이를 재고 장부 측면에서 보면 부품은 불출(issue)되어야 하고 새로운 제품이 입고(receipt)되어야 하죠.
이를 처리하는 간단한 방법이 backflush입니다.
제품이 완성되면 해당 order에 필요한 자재를 BOM과 같은 소요자재목록표를 이용해 자동으로 해당 수량만큼 불출하는 것입니다.
원래는 반복생산에서 나왔지만 편리성 때문에 주문제작(make-to-order)방식에서도 많이 사용하고 있습니다.

2019-02-14 추가
“백플러시”의 경우 보통 마감때문에 벌어지는 데이터 보정작업 ERP재고와 실재고를 마감시에 맞추는 일괄작업 이라는 느낌으로 많이 표현하고 있는 듯 하며
올바른 방법이라기보단 현실과 DATA세상과의 실제 벌어질 수 밖에 업는 괴리값들로 인한 강제 싱크작업이란 느낌이 많이 드네요…

POP (Point Of Production, 생산시점관리 시스템)

생산계획 및 작업지시에 의거 생산현장에서 발생하는 각종 정보, 즉 계획 대비 실적관리, 재고관리, 재공관리, 불출관리, 불량정보관리, 설비가동/비가동 정보관리, 라인별/공정별 생산현황 정보를 실시간으로 집계, 분석, 조회할 수 있는 시스템입니다.

ZIN CorporationPOP

PR, PO(Purchase Order, 구매 발주)

Order Sheet와 같은 뜻으로 사용되는 용어로서 일종의 개별계약서이다. 매매계약이 성립된 후에 계약내용을 확인하기 위하여 수입업자가 작성하여 수출업자에게 송부한다.

PR PO
P.O : PURCHASE ORDER (구매 발주)
B.O.M : BILL OF MATERIAL (도면상에 표기하는 재질 등을 비롯한 자재 정보 리스트)
P.O.R (PR) : PURCHASE ORDER REQUISITION (구매 발주 요청서)
POR은 설계쪽에서 발행하여 구매로 보내는 구매발주요청서이며,BOM(자재목록표)와 POS(구매사양서,Purchase Order Specification)과 같이 보냅니다. POS는 구매물품의 규격등을 표시한 도면이나 자료 등을 말하구요.
POR을 접수한 구매에서는 업체로 PO(구매발주서)를 보내지요.

Silo

풋바심 작물이나 목초를 채워 엔실리지(ensilage)를 만들기 위하여 돌·벽돌·콘크리트 등으로 만든 저장고. 저장탑. 순화어는 저장탑',저장 창고’.

2018-11-05 추가 시작

사일로는 단순하게 저장을 위한 용도이기도 하지만 그 저장 이라는 의미가 다음공정으로 가기위한 대기상태인 경우가 많은듯 합니다, 흔히 말하는 창고 개념은 아니었더라고요, 포장 사일로 이런식으로 표현하면 포장되기위한 공정에 직전에있는 저장상태 정도로 인식하면 될듯하고 배합 사일로 이건 1개의 원료가 아닐때 혼합을 위한 사일로 용도로도 사용되는듯 합니다 화학 공정을 정확하게 아직 이해한 상태는 아니지만 저장탑, 저장 창고 처럼 위에 명시한 용도로 사용되는건 산업군마다 느낌이 조금씩은 다른듯 합니다.

2018-11-05 추가 끝

2018-11-21 추가

스타크레프트 1 하다보니..(심심해서 ….) 테란 핵 만들면 옆에 붙는게 nuclear silo 였다

WMS (Warehouse Management System, 창고관리시스템)

WMS(Warehouse Management System)은 기업 ’전체 재고 에 대한 가시성을 제공하고 제조 업체 또는 도매 유통 업체부터 물류 창고, 소매 유통 업체, 그리고 마지막으로 매장 진열대에 이르기까지 공급망 주문 이행 업무를 관리하는 소프트웨어 솔루션입니다

EP(Engineering Plastics, 엔지니어링 플라스틱)

EP라는 약어를 사용하는 용어는 아마 엄청 많을 것이지만….
지금 화학MES 공정에서 자주 등장하는 EP가 무엇일까 찾아보다가 정리합니다.

일반 플라스틱의 물적 특성과 비슷하지만, 내열성과 내구성이 보다 뛰어나서 ‘고기능성 플라스틱’이라고도 불립니다. 그래서 전자기기의 케이스나 자동차의 외장 부품 등에 자주 사용되죠.

Serial 통신

시리얼이란?
시리얼은 거의 모든 PC에서 표준으로 사용되는 디바이스 통신 프로토콜입니다. 시리얼의 개념을 USB의 개념과 잘 구분하십시오. 대부분의 컴퓨터에는 2개의 RS232 기반 시리얼 포트가 있습니다. 시리얼은 또한 여러가지 디바이스에서 계측을 위한 일반 통신 프로토콜이며, 여러 GPIB 호환 디바이스에는 RS232 포트가 장착되어 있습니다. 뿐만 아니라, 원격 샘플링 디바이스로 데이터 수집을 하는 경우에도 시리얼 통신을 사용할 수 있습니다.

시리얼 통신의 개념은 간단합니다. 시리얼 포트는 정보의 바이트를 한번에 한 비트씩 순차적으로 송수신합니다. 한번에 전체 바이트를 동시에 전달하는 병렬 통신과 비교하면 시리얼 통신은 속도가 느리지만 훨씬 간단하며 장거리에도 사용할 수 있습니다. 예를 들어, 병렬 통신용 IEEE 488 스펙을 보면 기기간 케이블링은 총 20 m 미만이어야 하며, 두 개의 디바이스간은 2 m 미만이어야 합니다. 반면 시리얼 통신은 최대 1.2 Km의 통신거리를 보장합니다.

통상 엔지니어들은 ASCII 데이터를 전송할 때 시리얼 통신을 사용합니다. 이 때 송신용 (Tx), 수신용 (Rx), 그라운드용 (GND)의 세 가지의 전송 라인을 사용하여 통신합니다. 시리얼은 비동기식이므로 포트는 한 라인에서 데이터를 전송하고 다른 라인에서 데이터를 수신합니다. 핸드쉐이킹용 라인도 사용 가능하지만 필수 요구사항은 아닙니다. 시리얼 통신의 가장 중요한 특징에는 보드 속도 (baud rate), 데이터 비트, 정지 비트, 패리티가 있습니다. 두 개의 포트가 통신하기 위해서는 이러한 파라미터가 반드시 적절하게 맞춰져야 합니다.

보드 속도는 통신의 속도를 측정하는 수치이며 초당 비트 전송 숫자로 표시됩니다. 예를 들어 300 보드 속도는 초당 300 비트를 의미합니다. 엔지니어들이 흔히 말하는 클럭 주기는 보드 속도를 의미합니다. 따라서 프로토콜에 4800 보드 속도라고 나오는 경우 클럭이 4800 Hz로 작동한다는 뜻입니다. 즉, 시리얼 포트는 4800 Hz로 데이터 라인을 샘플링합니다. 전화선의 일반적인 보드 속도는 14400, 28800 또는 33600입니다. 보다 높은 속도도 가능하지만 그 경우 디바이스를 분리할 수 있는 거리가 줄어들게 됩니다. 따라서 엔지니어들은 디바이스가 같은 장소에 위치해 있는 디바이스 통신에 높은 보드 속도를 사용하게 되며, 그 예로 GPIB 디바이스를 들 수 있습니다.
데이터 비트는 전송되는 실제 데이터 비트의 측정값을 의미합니다. 컴퓨터가 정보 패킷을 보낼 때 실제 데이터의 양은 전체 8 비트가 되지 않습니다. 데이터 패킷의 표준 값은 5, 7, 8비트입니다. 어떤 정보를 전송하느냐에 따라 어떤 세팅을 선택할 지를 결정해야 합니다. 예를 들어, 표준 ASCII는 0 ~127 (7 비트)의 값을 가집니다. 확장된 ASCII는 0 ~ 255 (8 비트)를 사용합니다. 전송하려는 데이터가 단순 텍스트 (표준 ASCII)일 경우, 패킷당 7비트의 데이터를 보내면 통신에 무리가 없습니다. 패킷은 단일 바이트 전송을 의미하며, 시작/정지 비트, 데이터 비트, 패리티가 포함됩니다. 실제 비트의 수는 선택된 프로토콜에 따라 달라지므로 모든 경우를 포괄하는 “패킷”이라는 용어를 사용합니다.
정지 비트는 단일 패킷에 대한 통신의 종료를 알리는 데 사용됩니다. 일반적인 값은 1, 1.5, 2 비트입니다. 데이터는 모든 라인을 통해 클럭되며 각 디바이스에는 고유의 클럭이 있기 때문에 두 개의 디바이스는 동기화가 되지 않을 가능성이 있습니다. 따라서 정지 비트는 전송의 종료를 알려줄 뿐 아니라 클럭 속도 오류를 방지하기 위한 완충 역할을 합니다. 더욱 많은 비트가 정지 비트에 쓰이면 다른 클럭을 동기화할 수 있지만 데이터 전송 속도는 느려집니다.
패리티는 시리얼 통신에서 에러를 체크하는 데 사용됩니다. 패리티에는 짝수, 홀수, 마크, 스페이스 패리티의 네 가지 형태가 있습니다. “패리티 없음”을 사용할 수도 있습니다. 짝수 및 홀수 패리티를 이용하면, 시리얼 포트는 패리티 비트 (데이터 비트 뒤에 따라옴)를 특정 값으로 설정함으로써 전송에 logic-high bits가 짝수개 또는 홀수개 있음을 나타냅니다. 예를 들어, 데이터가 011이고 짝수 패리티를 선택했다면 logic-high bits가 짝수개 있으면 패리티 비트는 0 입니다. 홀수 패리티를 선택했다면 logic-high bits가 홀수개 (3개)이므로 패리티 비트는 1이 됩니다. 마크 패리티와 스페이스 패리티는 데이터 비트를 체크하는 기능이 없으며 단지 마크 패리티의 경우 패리티를 높게, 스페이스 패리티의 경우 패리티를 낮게 설정합니다. 따라서 수신 디바이스가 비트의 상태를 확인할 수 있게 되므로 소음으로 인한 데이터 방해 여부나 송수신 디바이스 클럭 동기화 여부 등을 알 수 있습니다.

RS232 개요
RS232는 IBM 호환 PC에서 쓰이는 시리얼 연결입니다. 엔지니어들은 컴퓨터를 센서 또는 모뎀에 연결하거나 계측기 컨트롤 등 여러 용도로 RS232를 사용합니다. RS232 하드웨어는 최장 15 m (50 ft)까지 통신 가능하며, PC 시리얼 포트와 디바이스간 포인트 투 포인트 연결로만 사용이 국한됩니다. 이러한 이유로 인해 추가의 RS232 시리얼 포트가 요구되기도 합니다. 표준 PC RS232 시리얼 포트 및 여러 시리얼 인터페이스 공급업체는 시리얼 통신에서 데이터 송수신에 Win32 API를 사용합니다. Win32 API는 원래 모뎀 통신을 위해 개발되었으며 전체 RS232 프로토콜을 실행하지 않으므로 특정 디바이스와 통신할 수 없습니다.

내쇼날인스트루먼트는 PCI, USB, PCMCIA, ExpressCard, PXI, 이더넷 등 여러 다양한 플랫폼에서 RS232 시리얼 인터페이스를 제공합니다. 플랫폼에 따라 NI Serial 인터페이스는 1, 2, 4, 8 및 16 포트 버전으로 사용 가능합니다. 또한, NI RS232 시리얼 인터페이스는 최고 1 Mb/s의 고속 보드 속도, DMA 전송을 통한 CPU 최소 사용, 최적화된 2000 V 포트간 절연, 구성 가능한 비표준 보드 속도와 같은 향상된 기능을 제공합니다. NI의 모든 시리얼 인터페이스에는 NI-Serial 드라이버 소프트웨어가 포함되므로 전체 RS232 프로토콜을 실행하고, 신속한 어플리케이션 개발을 위한 하이레벨, 사용하기 쉬운 함수를 제공합니다.

라고 합니다 ( 발췌본입니다 )

포장 공정에서 라벨프린터에 PLC랑 I/F를 위한 기반작업중이라 남겨놓습니다.!!

EIF (External Interface Files, 외부연계파일)

외부연계파일(EIF)은 사용자가 식별할 수 있는 논리적으로 연관된 데이터 그룹 또는 제어정보로, 다른 어플리케이션의 경계 내부에서 유지되고 측정 대상 어플리케이션이 참조한다. 외부연계파일(EIF)의 주요 의도는 측정 대상 어플리케이션 경계 내의 하나 또는 그 이상의 단위 프로세스를 통하여 참조된 데이터를 보관하는데 있다. 이것은 특정 어플리케이션에서 외부연계파일(EIF)로 측정된 것은 반드시 다른 어플리케이션의 내부논리파일에 존재해야 함을 의미한다.

이라는 데 확실히 감이 안 잡히네요…

2018-11-21 추가
EIF라는게 물리적은 파일일줄 알았는데….S/W형태로 EIF 서버를 구축해서 PLC나 마킹기 전자저울 등의 정보를 수집하는 망을 통한 I/F를 프레임웍화 해 놓은 하나의 시스템을 말하는 경우가 많다는 걸 알았습니다…UI <-> EIF서버 <-> PLC(마킹기 등등..)의 정보전달을 전담하는 역할을 하더라고요..

SCM(Supply Chain Management, 공급망 관리)

공급망관리 연구실 (Operations & Supply Chain Management Laboratory)에서는
생산 시스템의 계획에서부터 운영 및 물류에 이르는 생산에 관련된
전반적인 분야를 연구하고 있다.

산업공학이 다루는 여러 가지 학문 분야 중에서도
공급망관리, 재고관리, 일정계획, 시뮬레이션을 다루고 있으며
제조업체 및 서비스업체의 공급망에 대한 최적 설계와 운영 전략 제시를 연구하고 있다.

주로 사용하는 기법은 수리계획법, 휴리스틱 및 메타휴리스틱 기법, 시뮬레이션을 사용하고 있으며,
프로토타입 시스템 개발도 수행하고 있다.

연구 과제들을 수행하기 위하여 Tex, Gauss, Arena, Siman, Lindo, Lingo 등의 주요 소프트웨어와
Visual Basic, Delphi, C, C++, Visual C++, Java, C#, API, MS SQL,등의
프로그래밍 언어들을 활용하고 있다.