C# 스크립트 활용법

버전 v1.13.965 에서는 C# 스크립트를 사용하여 가공 데이타(텍스트및 바코드 개체)를 변경하는 기능이 추가되었습니다.

editor_barcode 데모 프로젝트에서는 사용자가 이벤트 핸들러 코드를 아래와 같이 직접 작성하여 가공 데이타를 변환 처리하였습니다.

// marker.OnTextConvert += Text_OnTextConvert 를 사용하는 기존 방법
private string Text_OnTextConvert(IMarker marker, ITextConvertible textConvertible)
{
    var currentLayer = marker.CurrentLayer;
    var currentLayerIndex = marker.CurrentLayerIndex;
    //var currentEntity = textConvertible as IEntity;
    var currentEntity = marker.CurrentEntity;
    var currentEntityIndex = marker.CurrentEntityIndex;
    var currentOffset = marker.CurrentOffset;
    var currentOffsetIndex = marker.CurrentOffsetIndex;

    switch (currentEntity.Name)
    {
        case "MyBarcode1":
            return $"SIRIUS2 {currentOffsetIndex}";
        case "MyText1":
            return $"SIRIUS2 {DateTime.Now.ToString("HH:mm:ss")} {currentOffsetIndex}";
        default:
            // Not modified
            return textConvertible.SourceText;
    }
}

이런 하드 코딩(hard-coded) 된 방식 대신 아래와 같이 외부에서 작성된 C# 스크립트 파일로 대체가 가능합니다.

 marker.TextConvertScriptFile = "demo1.cs";

위와 같이 script 폴더내에 미리 작성된 ‘demo1.cs’ 파일을 지정하게 되면 해당 코드가 컴파일(Compile) 되고 사용자 객체(UserScript) 인스턴스가 자동으로 생성됩니다. 또한 아래와 같이 스크립트 탭 화면의 코드 편집기에 C# 코드가 출력됩니다.

C# 스크립트 편집기 화면

위 demo1.cs 파일에서는 OnTextConvert 함수를 오버라이딩(override) 하여 앞서 하드 코드된 이벤트 핸들러의 기능을 직접 구현하고 있습니다. 또한 SerialNo 와 같이 속성(Property)을 추가하여 외부 창에서 이를 출력하고 편집하는 부가 가능을 제공합니다.

사용자가 추가한 속성(Property) 값 목록 편집 모습

실제 가공(F5) 을 진행하면 스크립트의 코드에 의해 SerialNo 속성값이 +1씩 지속적으로 증가하게 되고, 최종적으로 1018 으로 변경된 것을 확인할 수 있습니다. 또한 편집기(Editor)에서 해당 바코드 개체를 선택해 보면 변환된(마지막으로 가공된) 텍스트 데이타(Converted Text) 역시 ‘SERIAL 1017’ 임을 확인할 수 있습니다.

C# 스크립트에 의해 내부 데이타가 변경된 후 가공된 모습

외부 C# 스크립트 기능을 사용하면 마커(IMarker)에 의해 가공 시작, 종료, 텍스트 데이타 변환 등의 이벤트 시점에 다양한 사용자의 스크립트 처리가 가능해 집니다. 또한 개별 사용자의 요구사항에 맞도록 확장 지원이 가능해지므로 그 활용도가 매우 높습니다. ‘script\sample.cs’ 파일을 참고해 보면 해당 이벤트 핸들러의 사용법이 제공됩니다.

(참고) UserScript 객체는 ScriptBase 으로 부터 상속받아 구현되어야 하며, Marker 속성을 통해 IRtc, ILaser, IRemote, IPowerMeter 와 같은 객체의 접근을 제공하고 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top