서론


보통 통신을 할때, 일반적으로 JSON 혹은 XML 양식의 데이터를 사용한다고 그냥 느낌으로 알고 있다.

그런데 대부분의 회사들은 기존의 XML 양식을 많이 다룬다고 한다.

왠만하면 혼자서 XML, JSON 둘 중에 뭐쓸까? 고민을 하는거라면 JSON 쓰라고 한다.

왜냐면 간단하게 혼자 구현하기 좋거든.


그런데 기존의 시스템이 기본 XML 양식을 쓴다고 하면 그냥 인터넷 적당히 보고 베껴서 사용하면 된다.

문제는 그냥 기본 XML 양식이 아니라는 것이다. XML 양식을 활용한 WSDL 양식이 있다.

뭐 다른거 더 있겠지만 나는 현재 WSDL이라는 양식을 다루고자 한다.


Android를 활용해서 웹에서 WSDL 양식의 데이터를 받아와서 사용하는 것을 진행중이다.

처음에는 그냥 XML 양식인 줄 알았는데 자세히 보니깐 양식이 쬐끔 다르다.

무슨 SOAP 이라는 것을 사용한다고 한다.

그리고 툴 중에서는 SOAPUI 라는 것이 있는데 이것을 활용해서 WSDL의 구조를 쉽게 볼 수 있다.


그런데 대부분의 인터넷 예제들 찾아봤는데 길고 뭐라하는지도 잘 모르겠고 한글로 정리해놓은 블로그가 좀 보이기는 하는데 빠르게 가져다 쓰도록 해놓지는 않고 메소드 하나하나에 대해서 정리해놓아서 사용하기 매우 번거로웠음.

그래서 일단 가져다 쓸 수 있도록 하고 코드에 대한 추가설명을 하도록 하겠음.


WSDL (Web Services Description Language)


웹 서비스 기술언어 또는 기술된 정의 파일의 총칭으로 XML로 기술된다. 웹 서비스의 구체적 내용이 기술되어 있어 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등이 기술된다.


WSDL 1.0은 SOAP 툴킷에 웹 서비스를 기술하기 위해 IBM, 마이크로소프트, Ariba에 의해 개발되었다.


WSDL은 네트워크의 엔드포인트나 포트의 총집합으로서의 서비스를 기술한다. WSDL의 사양은 XML형식을 제공한다.


WSDL은 자주 SOAP과 XML 스키마와 결합하여 인터넷 상에 웹 서비스를 제공하기 위해 사용되기도 한다.

웹 서비스에 연결되는 클라이언트 프로그랜은 WSDL 파일을 읽어들여 서버에 어떻나 조작이 가능한지를 결정할 수 있다.



버전 WSDL 버전 2.0은 W3C 권고안이다.

모든 HTTP 요청 메소드에 바인드하는 것을 허용함으로써 WSDL 2.0 사양은 RESTful 웹 서비스에 대한 더 나은 지원을 제공하며 구현하기가 훨씬 더 쉬워졌다.


모양은 아래와 같이 생겼다.

태그 내에 속성이 많이 들어있음.

[그림 1-1] WSDL 양식의 데이터


SOAP (Simple Object Access Protocol)


HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환되는 프로토콜이다.

SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. SOAP에는 몇 가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(RPC)패턴으로, 클라이언트에서 서버쪽으로 메시지를 요청하고, 서버는 메시지를 즉시 응답하게 된다. SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송과 상호 중립성의 개념을 가져왔다.


SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 헤더는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 바디부분은 주요한 대부분의 정보를 다룬다.



SoapUI


처음에 WSDL을 파싱하기 전 까지는 몰랐던 툴이다. 이번에 공부하면서 조금 알아봤는데 생각보다 네임밸류 있는 툴이다. SOA(Service-Oriented Architecture) 및 REST(Representational State Transfer)를 위한 오픈 소스 웹 서비스 테스팅 앱이다.


SoapUI는 SOAP 및 REST 웹 서비스, JMS, AMF를 테스트 하고 HTTP(S) 및 JDBC 호출을 수행할 수 있다.

뭐 그래서 이 툴을 가지고 WSDL 양식의 데이터를 서버와 테스트하는데 도움을 좀 많이 받았다.

이것으로 테스트를 진행한 이후에 해당 테스트를 바탕으로 코드에 데이터를 적절하게 넣어주면 된다.



결과보고서.zip

프로젝트 수행계획서 제출본 - 수정본.docx


m100에 관해서 제가 도울 수 있는 부분에 대해서는 도와드리겠습니다. 답글 달아주세요.


프로젝트 : 공장 조립부에서 사용중인 테블릿을 스마트 글래스로 대체하기 위함.



목차


1. 소개

2. 기능 - Regonition

3. 데모를 위한 Android Screen Monitor



1. 소개



여름 방학 때, 학교에서 볼보그룹코리아 창원지점의 P&IT 부서에서 현장실습을 갔다.


4주간의 프로젝트 기간 중 1주차는 부서 안내와 교육 등 받으면서 프로젝트 설정하기 위한 시간으로 보냈다.


회사에 있던 스마트 글래스 m100을 활용해서 '공장 조립부의 테블릿을 대체하기 위한 스마트 글래스' 프로젝트를 진행했다.


해당 프로젝트는 스마트 글래스의 가능성을 알아보기 위한 프로젝트였다.


공장에 대한 이해도가 낮은 우리는 상무님의 요구사항에 맞추어서 프로그램을 개발하기 시작했다.


Vuzix m100에 대한 소개는 다음과 같다.




API Level : 15 ( = 갤럭시s1 ~ 갤럭시 s2)


회사 : Vuzix


가격 : 약 1,000,000원


RAM : 1gb


flash : 4gb


voice : 지원 가능


Android Studio 지원.


이처럼 Vuzix는 API부터 엄청나게 낮고 RAM과 용량 전부 갤럭시 s1 정도의 사양이다. 이것은 약 2012년대의 스마트폰 사양으로 스마트폰이 보급되기 시작할 때라서 라이브러리가 매우 적다. 그런데 도대체 왜 1,000,000원씩이나 하는지는 잘 모르겠다. 이거로 시작할라는데 화면은 매우 작아서 잘 보이지도 않는다.


하여튼 이러한 스마트 글래스로 작업을 시작했다. Android Studio에서 앱 작동을 위해서 Vuzix m100 SDK 설치하고 머 이것저것 했는데 잘 안 되었다.

그러다가 그냥 컴파일 버전 15로 맞추고 그냥 Run 눌렀는데 된다. 이유는 아직 모르겠는데 다른 컴퓨터도 테스트해본 결과 그냥 된다.

그래서 해당 기기를 가지고 우리는 상무님이 말한 요구사항에 맞추어서 진행하였고 아래 그림은 해당 프로젝트의 흐름도이다.




 


2. 기능 - Recognition



개발을 QR code 기능을 이용해서 데이터를 받아와서 해당 데이터로 URL을 접속한 이후 웹 데이터를 파싱하는 방식으로 진행했다.

여러가지 기능 중 가장 중요하다고 생각되는 Recognition에 대한 설명을 하도록 하겠다.


개발을 위해서 STT 기능이 필요해서 Android에 적용되는 구글 라이브러리와 몇 가지 더 사용해보았는데 외부망이 필요하거나 m100이랑 호환이 안되는 경우가 대부분이었다. 그래서 조금 더 찾아보니 누군가 만들어놓은 Vuizx m100 STT 라이브러리가 있었다. 해당 라이브러리를 사용하는 것은 순식간에 되서 현재 사용중이고 해당 링크는 다음과 같다.

https://github.com/scottw-vuzix/M100Empty

해당 링크에서 사용중인 com.vuzix.speech.jar 라이브러리를 그대로 가져와서 사용했다.


해당 라이브러리 안을 살펴보니 api 3 레벨의 Speech To Text 라이브러리를 사용하는 것을 발견했다.

그리고 단어 목록이 수록되어있고 해당 단어들을 글어와서 사용이 가능하다.

private void restrictWords()

라는 함수에서 필요한 단어만 골라서 사용이 가능하다.

그리고 직접적인 단어장을 만들기 위해서는 Vuzix에 문의해보았는데 돈을 주어야 한다고 한다. 자세한 내용은 더 이상 물어보지 않았는데 필요할 경우 Vuzix에 바로 문의해보자.


단어장 추가는 다음과 같이 addGrammer를 이용한다.

addGrammar(Constants.GRAMMAR_CAMERA);

(Kotlin에서 개발한 github 자료도 발견했는데 18년 10월 12일 마지막 업데이트가 되기도 했는데 누군가 계속 개발중인 프로젝트도 있는듯하다. 링크는 다음과 같다.

https://github.com/vuzixtokyo/vuzix_speechrecognition_sample

이 링크 또한 recognition을 포함한 프로젝트임이 분명하다.)



3. 데모를 위한 Android Screen Monitor



https://adakoda.github.io/android-screen-monitor/

페이지에서 다운받아서 이용하면 된다.

이를 위해서 버전에 맞는 jdk 설치를 해야한다. 그리고 adb와 java 등 환경변수 설정으로 경로를 미리 만들어두는 것이 편하다.

이러한 과정이 끝나면 'java -jar asm.jar' 입력하면 실행이 됨.





+ Recent posts