SharedIT | 묻고 답하기(AMP)

1차원 바코드 생성 및 출력을 마이플랫폼과 연동해보신분 계신가요??

선배님들 안녕하세요~ 가입후에 첫글이네요 반갑습니다 ㅎㅎ

전산직 1년차인 새내기입니다!


다름이아니라 마이플랫폼으로 개발된 물류 프로그램을 리뉴얼 하려고합니다.


리뉴얼하려는 부분은 1차원 바코드가 부착된 제품을 바코드 스캐너로 읽어들여 검수가 완료되면 

이 제품들이 담겨 출고될 박스 바코드를 생성하고 바코드 프린터를 통해 출력하는 기능입니다.


기존에 마이플랫폼 시스템에 검수하고 바코드를 읽어들이는 부분은 포함이 되어있는데 희한(?)하게도

바코드 생성 및 해당 바코드를 프린터로 출력하는 부분은 c# 기반 별도의 프로그램으로 있더라구요..

물론 db는 같은것을 사용합니다. 


해당 프로그램은 모두 같은 외주사에서 개발 했는데 유지보수 계약이 종료되었고, 

약간의 문제로 c#으로 코딩된 프로그램의 소스는 받을수 없습니다.

그리고 문제는 유지보수도 유지보수지만 차차 기존의 RFID 바코드에서 수동 검수인 1차원 바코드로 

전환을 하고자 하는 계획이 있습니다. 따라서 해당 기능을 제가 모든 측면에서 유지보수해야 할뿐만아니라

물류 프로세스에서 큰 부분을 차지하게될겁니다.

그래서 이왕 이렇게 된거 제가 다루어왔던 마이플랫폼으로 새로 개발을 해보자는 계획중입니다.

바코드 프린터도 몇대 더 들일 예정이구요.


일단 현재는 마이플랫폼에서 제공한 바코드 출력 샘플을 보고 출력 테스트중입니다.

해당 샘플에서는 mscomm32.ocx를 이용한 시리얼 통신으로 출력 명령을 거는것같은데 

위와 같이 주석으로 간단한 설명은 되어있지만 막상 해당 내용을 구글링해보니 정보가 없더라구요..

위 샘플은 15년전에 만들어진거라 투비소프트에서도 당시 담당자분이 안계시다고 하고요..


이러한 상황인데 세가지 질문 드리려고 합니다.

  • 1.위 샘플만 가지고 어찌저찌 출력은 되는 상태입니다. 하지만 지금상태로는 문제가 생겼을시에 참고 자료가 저 샘플밖에 없어 리스크가 있을것 같은데, 이런 경우는 돈이 들더라도 마이플랫폼 연동 경험을 갖춘 프린터 관련 업체에 견적을 맡기는게 좋을까요?? 웬만하면 제가 개발하고 싶지만 1년차라 경험이 없어 어느정도 수준인지 몰라 여쭙니다 ㅠㅠ

  • 2.프린터를 더 들일 예정이라서 알아보니 제브라 같은경우는 라벨 출력하는 자체 소프트웨어를 보유중이더라구요. 이러한 소프트웨어를 쓰면 기존 마이플랫폼과 연동은 안되지만 성능은 확실할것같은데 차라리 이런것을 사용하는게 나을것인지 궁금합니다.

긴 글 읽어주셔서 감사드립니다. 프로젝트를 잘 해보려는 열의만 많고 실력이 많이 부족하네요..

혹시나 관련 경험이 있으신 선배님들이 계시다면 도와주십사해서 글 남겨봅니다. 감사합니다!!





Tags : 태그가 없습니다.

3개의 답변이 있습니다.

wansoo
  0 추천 | 약 3년 전

첨부한 이미지에서


가장 아래에 있는 


fncOutPut ( "A20,0,0,4,3,3,N,"+chr ( 34 )+"5001"+chr ( 34 )); 부분이


함수를 호출하는 구문에 되겠고요.




이 구문에서 fncOutPut ()이라 정의된 함수... 즉, 첨부한 이미지의 제일 윗쪽에 정의되어 있는 함수


function fncOutPut ( pStr )


{


     AxComm0.Output = pStr + chr ( 13 ) + chr ( 10 );


}


를 호출하게 되는 것인데요.




주석 처리인 //  으로 함수 호출에 사용된 내용들이 쭉~ 설명되어 있네요.


fncOutPut ( "A20,0,0,4,3,3,N,"+chr ( 34 )+"5001"+chr ( 34 ));


구문을 이용해서 호출할때 사용한 파라미터인,


"A20,0,0,4,3,3,N,"+chr ( 34 )+"5001"+chr ( 34 ) 의 각각의 의미에 대해서


설명해 둔것이 되겠고요.


즉, 제일 앞에 있는 A는 텍스트로 포멧에 해당하는 것이고,


다음에 20은 x축의 값 ( 왼쪽에서 오른쪽으로 얼마나 이동해서 위치하냐에 해당)


그 다음에 0은 y축의 값 ( 윗쪽에서 아랫쪽으로 얼마나 이동해서 위치하냐에 해당)


그 다음의 0은 회전에 해당하는 값 ( 출력하려는 내용을 얼마나 회전 시킬 것이냐 )


그리고, 다음의 4는 폰트 종류,


다음의 3은 x 폭의 크기 값 ( 출력하려는 문자의 가로 길이 )


그 다음의 3은 y 높이의 크기 값 ( 출력하려는 문자의 세로 길이 )


그리고, N은 Normal을 의미하게 되겠고요.




나머지, chr ( 34 )+"5001"+chr ( 34 ) 이 바코드로 출력하려는 데이타에 해당하겠네요.


chr ( 34 )는 ascii 값 34에 해당하겠고... 아스키코드표를 참조해 보면 숫자 1이라는걸 알 수 있겠고요.


그 다음에 5001 값과 다시 chr ( 34 )에 해당하는 1을 붙인 "150011" 을 바코드로 출력하는 형태가 될걸로 보여지네요.




호출할때 전달한  "A20,0,0,4,3,3,N,"+chr ( 34 )+"5001"+chr ( 34 )  값은


function fncOutPut (pStr) {} 함수의 pStr 매개 변수에 전달되게 되겠고요.




fncOutPut () {} 함수 안에 정의된 코드는 


 AxComm0.Output = pStr + chr (13) + chr ( 10 );


만 달랑 있는 간단한 형태가 되겠고요.


AxComm0 이라는 객체의 멤버 변수 중에 Output에 전달받은 매개변수값인 문자열에다 뒷쪽에 chr (13)과 chr ( 10 )을 붙여서 값을 지정해주고 있고요.


chr (13)은 carriage return에 해당하고, chr ( 10 )은 Line fee에 해당하고요.


DOS 및 Window에서 한줄을 아래로 내릴때 줄의 끝에다 chr (13)과 chr ( 10 ) 붙여서 처리하고 있고요.


캐리지 리턴은 말 그대로 같은 라인의 제일 첫번째 칸으로 이동하는 것이고, 라인 피드는 한줄을 내리는 걸 의미하고...


AxComm0 객체의 Output이라는 멤버 변수에 문자열을 입력해 넣기만 하면 바코드를 출력하게 되는 걸로 보여 지네요.




위 내용은 개발자가 자신의 방식으로 코딩을 해서 개발한 내용이기 때문에 표준화된 방법이라 할 수는 없겠고요.


특정인의 머리속에서 나온 코드이기 때문에 구글 같은 걸 이용해서 검색한다해서 나올 가능성은 없겠고요.


개발자가 달아둔 주석을 참고해서 나름의 설명을 적어 봤습니다.


코드에 버그가 있을수도 있고, 개발자가 잘못된 설명을 적었을 수도 있고, 설명을 해석하는 입장에서 잘못 해석해서 적었을 수도 있기 때문에 참고만 하시길 바라고...


정확한 내용은 직접 해당 코드를 컴파일해서 실행해 보고, 앞뒤 다른 코드 부분들도 분석해보고 하면서 결정해야 할 거라 생각합니다.


wansoo | 약 3년 전

chr (10)    을  붙여서 글을 올리면 위와 같은 block 메시지가 표시되면서 적은 글이 몽땅 다~ 날라 가버리네요.

무섭습니다.

애써 길게 적은 글을 Ctrl+A, Ctrl+C를 해 두지 않았다면 몽땅 다 날려 버리고, 다시 글 적는걸 포기해 버릴뻔했네요~ㅎㅎㅎ

정확하게 어느 문구때문에 블락되는지 찾으려 글을 수차례 적었다 지우고 반복해서 겨우 올렸네요~

xxx () 와 같이 함수 형태의 문구를 붙여서 적으면 블락처리되어 버리는 것 같네요.

wansoo | 약 3년 전

xxx()는 올라가지면 chr ()을 붙여서 적으면 블락되어 버리네요~ ^^;;

toybee55 | 약 3년 전

감동의 물결이네요ㅠㅠ

이렇게 정성스러운 긴글로 도와주셔서 너무 감사드립니다..

알려주신 내용 잘 참고해서 꼭 업무에 적용시킬수 있게 하겠습니다

감사합니다!!!

빨간신발
  0 추천 | 약 3년 전

바코드는 그냥 폰트만 설치하시면 가능합니다.

바코드 폰트 설치하고 메모장에서 폰트 바꾸고 타이핑하시면 바코드로 찍히고...

일반 프린터로 출력해서 바코드 리더기로 리딩도 가능합니다.

문제는 바코드 전용 프린터로 출력인가 보네요.

지금같은 문제로 인해 프린터 제조사에서 api를 제대로 제공하지 않으면 나중에 유지보수가 어려움이 있고

바코드 프린터 자체 출력 소프트웨어가 대량 처리하기 쉬운 인터페이스로 제공되면 이 방법도 괜찮을 듯 하지만 실 사용자가 번거로워서 못 쓰겠다고 하면 꽝입니다.

toybee55 | 약 3년 전

선배님 고견 감사합니다!

말씀하신것처럼 실 사용하시는 공장분들이 기존 형태의 화면을 선호하실거고 아직 문의는

안했지만 자체 소프트웨어도 구매를 해야될 가능성이 높아 말씀하신 후자의건은 일단 최후의

방법으로 보류해놨습니다ㅠㅠ

말씀하신대로 api를 제대로 제공해주는 업체로 컨택 해보는것도 계획해보겠습니다.

감사드립니다^^

wansoo
  0 추천 | 약 3년 전

바코드 포멧 type 들이 여러가지 있는데, 사용하고 있는 바코드 type이 어떤 것인지 부터 확인해서 처리해야 할 것 같고요.,

많이 사용되는 바코드 type은 바코드 폰트로 만들어져 있기 때문에, 일반 글자를 프린팅하듯이 바코드 폰트를 이용해서 출력할수도 있고요.

바코드 읽고, 출력하는 모든 소스 코드를 직접 건드리거나 개발하기는 쉽지 않고, 대부분 이미 만들어져 있는 바코드 입출력 라이브러리를 호출하는 형태로 처리하기 때문에 입출력하는 라이브러리를 어떤걸 사용하고 있고, 어떤 파라미터 값들로 어떻게 호출하면 되는 지 정도를 확인해서 사용하면 될걸로 보여 지네요.

toybee55 | 약 3년 전

선배님 답변 감사드립니다 ^^

말씀하신대로 찾아보니 code 128로 출력되는 샘플이었네요. 바코드 출력이 되긴합니다..

그런데 말씀하신 파라미터에대한 설명이 위의 소스코드처럼 주석으로 달려있지만,

더 자세한 정보를 알아보기위해 구글링 해봐도 정보가 안나오네요 ㅠㅠ

정성스러운 답변 감사드립니다~~!!