2013년 5월 28일 화요일

Serialize Setup Program from P&E

금번에 개발 중인 GPRS 디바이스의 FCC and CE 인증을 준비중이다.
이제 테스트 플랜을 다 만들어 기관에 의뢰하여 검증하였고, 어제 Purchase order를 place하였다. 우리가 이용하는 인증대행기관은 EMC Technologies 라는 기관으로 여기서 조금 떨어진, 그래도 빅토리아 주에 위치하는 기관이다. (한번 방문한적이 있다)

아직, 그쪽에서 스케줄 오거나이징 한것은 아직 결과를 받아보지 못했으나,
준비하는 중, serial number assignment 관련하여, 매니저가 선임 엔니지어와 함께 논의하여 결론지으라 지시했다.

선임 엔지니어는 뭔가를 들여다보고 있더니, P&E에서 구입한 Cyclone Pro의 User Manual을 건네준다. 그안에 보니, 12장에  Automatic Serial Number Mechanism이란게 있다.

이 회사에서 산 Cyclone Pro를 이용해서, 우리 회사에서 제조하는 콘트롤러에 이미지 파일을 다운로딩하고 있는데, 그러니까 주로 SAP Stand-alone Programming 용도로 쓰고 있었다.

이 장비에 그런데, 시리얼 번호 부여 기능이 있다고 한다. 사용자가 원하는 위치와, 시리얼 번호의 규칙을 정한 다음에, 파일을 생성한 후, 이걸 기반으로해서, 사용자가 원하는 위치의 온보드 플래시 메모리에 시리얼번호를 넣어주는 것이다. 그리고서 파일이 갱신되어 시리얼번호가 하나 증가된다.

시리얼 번호 부여는, 이번에만 필요한게 아니라, 실제로 제조하여 판매할때 더욱 필요한 것이라, 그걸 감안하여 이런걸 쓰자고 이걸 나에게 보여주는 것이다.

매뉴얼을 받아다 보니, 꽤 쓸만했다. 프로그램을 뒤져서 찾아 해보니 프로그램은 쪼금 어설프긴 해도, 사용도 쉽고..


프로그램은 실행시 모양이 요렇게 생겼다.
규칙을 정하는 부분과, Starting address를 설정하는 부분으로 구성되 있다.
Starting address 부분은, MCU의 데이터쉿에 나오는 플래시 메모리 구성을 참고하여 설정했다.

이걸 저장하면 *.ser이란 파일이 생성된다.
그다음, 파일 이미지를 쓰는 프로그래밍 소프트웨어를 실행한다. (물론 싸이클론 프로를 타겟 디바이스와 연결 후)

P&E 프로그램 깐 거 중에서 인터렉티브 프로그램 중, 해당되는 MCU 타입에 따라 맞는 프로그램을 실행한다.  

(오늘은 여기까지..)  퇴근 시간이다. 

QT에서 MySQL 쓸 수 있게 설정.

Qt에는 기본적으로 MySQL을 쓸수 있게 되어있지 않다. Qt 책에 보면, 라이선스 제약 때문이라고 그러던데, Qt의 오픈소스 에디션에 모든 드라이버가 제공되지 않음.

각설하고, MySQL을 쓸수 있게 하려면 "뭔가"를 해줘야 하는데,,
회사에서 금번에 컴퓨터를 바꾸면서, 새로 그 작업을 다시 해줘야 했다.
기억이 안나서, 다시 그작업을 하려니 또 시간이 걸린다.

이번에는 과정을 좀 자세히 정리해야 할 것 같다.

(1) 먼저 Qt에는 소스파일 패키지가 설치되어 있어야 함.
      -> 확인방법 : 소스가 설치된 위치로 이동:
      -> 나의 경우는  C:\Qt\4.8.4\src\plugins\sqldrivers\mysql
             이 안에, mysql.pro와 main.cpp가 들어 있었다.

(2) MySQL을 깔아야 함. (이건 C:\MySQL에 설치하였음)
       ->  mysql-connector-c-6.0.2-win32.msi를 깔았음.

(3) mysql 소스가 설치된 위치로 이동 ==> (1)번의 위치로 이동

(4) Modify the file mysql.pro



    (수정할 포인트)  INCLUDEPATH와 LIBS 부분을 추가.


(5) qmake mysql.pro와 make를 실행

(6) 그러면, 네 개의 파일이 생겨남.  
      -> libqsqlmysql4.a / libqsqlmysqld4.a / qsqlmysql4.dll / qsqlmysqld4.dll
      -> 이 파일들이 C:\Qt\4.8.4\plugins\sqldrivers   에 저장됨.

(7) 그리고서 DOS prompt에서 다음을 실행하여 libmysql.dll 을 생성하여야 함
      -> go to C:\MySQL\lib\opt에서
      -> reimp -d libmysql.lib      (reimp.exe는 인터넷에서 다운로드함)
      -> dlltool -k -d libmysql.def -l libmysql.a

(8) 이렇게 생성된 libmysql.dll을 C:\Qt\4.8.4\bin 에 넣어야 함.
     (물론, C:\Qt\4.8.4\bin은 PATH에 잡혀있어야 함)


<마지막으로 주의사항>
프로젝트 파일인 .pro에 QT+=sql을 삽입한 후 실행해야 함.
=> QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");


다음의 글은 참고.




 

2013년 5월 23일 목요일

RealTerm 사용기 - 하이퍼터미널 대체

이번주에는 회사에서 노트북(여기서는 랩탑이라 부르는)을 지급했다.
현재는 데스크탑을 쓰고 있었는데, 리스 만료기간이 되어, 그에 맞추어
데스크탑을 다 회수하고, 랩탑으로 교체하기로 했다고 한다.

새 기계를 받으면 언제나 좋지만, 더러운 책상도 한번 정리하고,
자료도 한번 싹 정리하고..
그렇지만 개발 툴 등을 정리하는것이 성가시다.

그저께인 수요일날 지급이 되고, IT 가이가 친히 MS 관련 소프트웨어는
백업을 받아주었으나, 나머지는 각자 알아서 하란다.
개발하는 사람이 거의 없어서리,,, 우리를 배려 전혀 안한다.. -_-

가장 골치 아플것으로 예상했던, CodeWarrior 툴은, 의외로 쉽게 rehost했다
라이센스를 사고서, 여기 홈페이지가서, 이 툴을 쓸 PC의 유니크한 아이디
나같은 경우 ethernet address를 집어넣고서 license를 generate한 후 이걸 피씨에 특정
위치에 두고 썼었다.

rehost는 이번 경우처럼 PC를 replacement할 때, 라이센스를 기존 기기에서 다른 기기로
옮기는 과정을 말한다. Freescale에 가니, HOW to rehost 라는 친절한 동영상이 있어서리
이걸보고 그대로 따라했다. 쉽게 되었다.
여기까지가 수요일에 한 일이고.
어제는 우리 아이들 학교에 안가는 날이라 (curriculum day - 이런날이 꼭 하루씩있다.
선생님은 나오는데 아이들은 안가는 날. Pupil free day라고도 한다)

연가내고, 집에서 애들 뒤치닥거리하고,
오늘 나와서 이 귀찮은 일들을 또 시작했다.

웬만큼, 정리하고서, 실제 개발환경에 문제가 없는지, 테스트 하다보니,
새로운 랩탑에는 Hyperterminal이 없다.  윈도우즈 7에 이거 없다는 얘기를 옆에 동료가
예전에 한게 생각났다. . 어 정말 없다.. 그분께 여쭤보니, 음.. 그거 없어서 자기는 집에서
realTerm을 쓴단다.  이거가 더 좋다고 free 니까 다운받아 쓰라고 알려준다.

고맙게도.. 받아서 해보니.  인스톨은 쉬우나, 실행시 에러가 나면서 안된다.

==>Error Messsag를 받았다.  Error accessing the OLE registry.
==> 내용인 즉, OLE registry에 접근하지 못한다.. 라는 내용.

해결방법은...  realTerm이 깔린 자리로 가서(나같은 경우, C:\program file\BEL\ 인가?)
거기에서 realTerm.exe의 property를 연후, 권한을 바꾸어주면된다.

"Run this program as an administrator"

그렇게 바꾸고 나면 실행이 되는데, 첨에는 뭘 어케 셋팅하는지 헷갈리나.
자세히 살펴보면, 하이퍼터미널에서 셋했던 것 보드레잇 같은거 설정하는 탭을
발견할 수 있다.

이젠 잘 돌아간다~

2013년 3월 25일 월요일

써커스 구경하기. (Stardust circus)

조금만 더 버티면 이스터 휴가다. 4일 연휴.. 후후.  각설하고,

지난주 토욜에는 약간 남쪽으로 내려간 곳에서 (어딘지 나도 잘 모르겠다)
써커스를 한다고, 그걸 보러갔다.

약간은 허허 벌판 같은 곳에, 아주 커다란 천막을 쳐놓고,  토욜에는 두번 써커스를 한다고해서 오후 2시껄 보러갔다.

표를 끊기 위해 한시간 일찍 도착.  그런데 사람들이 거의 없다. 차가 우리거 말고 하나 더있다. 음.. 이거 봐도 괜찮은 건지. 걱정스럽다.  어떤 아줌마를 만났는데, 이 써커스 어떠냐고 물어보니, 여기는 동물도 많이 나오고 괜찮다고 그런다.  다른 써커스에 비해 괜찮다고.

표를 끊고서, 점심을 먹기 위해 바로 근처에 위치한 맥도널드로 갔다.
웬걸.. 서커스 보러온 사람들이 다 여기서 점심먹나부다. 무쟈게 사람이 많다.

우리도 햄버거 먹고서, 10분전쯤 다시 천막으로 갔더니 거짓말처럼 차들이 꽉들어찼다.

서커스는 두시간 가량 진행되었는데, 중간에 쉬는시간도 있고.  사실 생각했던거보다 내용이 알찼다. 동물도, 맨처음에 나온 사자.. 두마리의 사자가 너무나 커서, 압도 당했다.  사자 쑈부터 해서, 말 열마리 나와서 쑈하고, 원숭이, 개, 염소, 등등. 참 종류도 가지가지였다.  동물원에서 보다 더 많은 동물을 보는 듯...  그리고 작은 사자 (cub)도 있었고..
쉬는 시간에는 horse riding 타임이 있어서 아이들한테 조그만 말도 태워줄수 있었다.
동물 말고도, 서커스에 늘 등장하는, 그네 타기.. (예쁜 백인들이 그네를 잘도 탄다..ㅎㅎ) 아크로벳. 등등.  특히 애들이 완전 매료되었다.

시간이 되면 함 구경해볼만하다. 
http://www.stardustcircus.com.au


2013년 1월 28일 월요일

QT - qDebug() 사용하기.

Qt 스터디를 어느정도 했다고 치고, 요즘 하고 있는 것은 windows에서 만든 TCP 기반 server 프로그램을 Qt로 바꾸고 있다.

다중의 client가 이 서버를 향해 데이터를 전송하기 위해, 연결 요청을 하고, 데이터를 전송하면 이 서버는 연결 요청을 받아 연결을 설정하고 데이터를 받아 파일에 저장한다.

처음에 Tcp 연결에 관해 Qt를 공부해보고 예제 프로그램을 살펴보니 (C++ GUI Programming with Qt 4, second edition 참조) Windows API를 가지고 event 기반으로 프로그래밍 하는 것 보다 오히려 쉬워 보였다. 

프로그램 하는 과정에서, 매우 찾기 어려운 에러를 찾아야 하는 경우가 생겼는데, 이때 디버깅 툴이 있는지 뒤져보게 되었다.  뭐 복잡한 디버깅 툴보다, 쓰기 편한 qDebug()라는 것이 있었다.

우리가 프로그램하면서 의심스러운 부분에 printf()를 끼워넣어, 메시지를 출력해보는 방식처럼 메시지를 뿌려주게 도와주는 방법이다.

(1) # include 삽입하기. :


(2) qDebug() << "error message.... ";   // 이런식으로.. 또는 qDebug("error");
(3) project file에 한줄 추가하기 :  CONFIG += console

마지막 세번째 줄은, 메시지를 출력할 디바이스를 콘솔로 정하는 설정이다.  저것을 못찾아서, 아무리 qDebug()를 삽입해도 메시지가 출력되지 않았다.  qDebug() 에다 넣어줄 데이터는 QString 포맷이다.

2012년 12월 5일 수요일

Serial Port 를 열때의 주의점 (COM10 이상의 경우)

소스파일은 내가 만든 것이 아닌데, 그 소스를 내가 물려받아 modify한 적이 있다. 이 프로그램은 시리얼 포트를 열어서, 거기에 연결된 디바이스의 데이터를 다운로드하는 조금은 간단한 프로그램인데, 올초에 내가 수정을 가했기 때문에 내가 유지를 하고 있다.

그런데, 한달도 전에, 미국 사무실의 Alex라는 사람이, 이걸 쓰는데 안된다는 것.
문제를 살펴보니, 이 프로그램은 첨부터 너무 단순하게 만들어져 있어서, 오직 COM1 포트만을 들여다보고, 열리지 않으면 그냥 에러처리하고 튀어 나가게 되어 있었다. alex는 그런데, 노트북(랩탑)을 쓰고 있었고, 거기에는 시리얼 포트가 없으니, USB 포트를 시리얼로 바꾸는 드라이브를 깔아서 시리얼 포트를 잡아 쓰고 있었다.

Device Manager로 확인을 부탁한 결과 COM1이 아닌, COM16을 붙잡고 있었다.  이럴경우, 프로그램을 고치기 귀찮은 나머지, 그냥 COM16을 COM1으로 변경해주고, 프로그램을 돌리면 아무 문제가 없을듯... (이거 변경은, My Computer->Property->Device Manager로 들어가서 하면 됩니다)

하지만, 그래도 그런거 뭐 간단히 고쳐서 보내자 해서, COM16을 읽도록 함 바꿔보았다.
이거 하고나서, 포트 넘버를 받아들이는 간단한 인풋을 만들어 넣어야지.. 하고 생각했는데..
고쳐서 던져줬더니, 그래도 계속 에러가 나는 상황...

그게 왜그런가.. 계속 뒤져보니,,, 이런 이런.
msdn 사이트에 답이 있었다..

http://msdn.microsoft.com/en-us/library/aa363858%28v=VS.85%29.aspx


HANDLE WINAPI CreateFile(
  _In_      LPCTSTR lpFileName,
  _In_      DWORD dwDesiredAccess,
  _In_      DWORD dwShareMode,
  _In_opt_  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  _In_      DWORD dwCreationDisposition,
  _In_      DWORD dwFlagsAndAttributes,
  _In_opt_  HANDLE hTemplateFile
);

주욱 내려가서, Communication resource 쪽에 이런 문구가.. 흑.

To specify a COM port number greater than 9, use the following syntax: "\\.\COM10". This syntax works for all port numbers and hardware that allows COM port numbers to be specified.


음.. 9를 넘어가는, 그러니까 10부터는, 앞에다가 \\.\ 를 append해줘야 한단다.
실제로, 이건 C나 C++ 코드상에서 이렇게 붙여야 함. \\\\.\\COM16

그래서, 첨에 고쳤을떄, 단순히,
CreateFile(TEXT("COM1")....)
==> CreateFile(TEXT("COM16").... ) 했더니 COM16을 열지 못했던것.

이건 이렇게 고쳐야 함.
==> CreateFile(TEXT("\\\\.\\COM16"),.....)

아이고,,, 이것도 모르고,...  머리만 쥐어뜯었네.

2012년 11월 16일 금요일

모나쉬(monash) 시티 카운실의 방학프로그램 (holiday program) ; Term 3

한국에 계신 분께서 궁금해 하시길래, 지난번 모나쉬 시티 카운실의 방학프로그램을 스캐닝했던것을 올려보고자 한다.

우리 아이는 Glendal Primary School에 다닌다. (글렌웨이벌리 소재)
아프터스쿨 케어를 운영하는 기관은 캠프 오스트렐리아(www.campaustralia.com.au) 다. 캠프 오스트렐리아에서 우리 애 학교에 비포/아프터 스쿨을 운영하는 것이다.

텀1,2,3는 방학이 짧아서 2주정도인데, 그래도 누군가 바줄 사람이 없으니 어디다 맡길지 고민하게 된다. 애들이 학교에 들어가기 전, 다니던 차일드케어센터는 비싸기는 하지만, 방학이 없이 공휴일을 제외하면 매일 보낼 수 있으니 편했다.

한데 학교에 들어가고 보니, 방학이 있어서 애를 어따 맡겨야하나 고민하게 되었다. 우리 사무실에 있는 애키우는 엄마들은 대부분 비슷하다. 그래서 어디다 맡기는지 정보를 공유하기도 한다.

텀1과 2에는, 잘 모르기도 하고, 둘째도 아직 센터에 있기도 해서 그냥 센터로 보냈다. 그런데 애가 점점 커가니 이제는 센터가기 싫다고 한다. 그래서 텀3의 방학에는 (아마 10월이었나) 우리 애 친구 엄마한테 물어보니. (이엄마도 일하는 엄마라 애를 어딘가에 맡겨야하는 상황) 이 학교에 monash city council에서 운영하는 holiday program이 있는데 괜찮다고 한다. 무엇보다 비용이 싸다. (센터는 하루에 거의 100불. 여기는 하루에 40-50불 근방 : CCB, CCR 감안하지 않은 순수 비용)
정보는 어디서 얻지??  학교에 리셉션 데스크에서 자료랑 등록 폼을 나눠준단다.
바로 달려가서 알아보니, 부킹 마감일이 3일정도 밖에 남지 않았다. 부랴부랴 등록폼 작성해서, 직접 갔다주면 편하련만,, 폼에 보니 반드시 우편으로 보내란다.. 결국, 익스프레스로 보내서 겨우 등록에 성공.

아참, 위에서 말한, 캠프 오스트렐리아에도 물어보았다. 니네도 할리데이프로그램 운영하지? 그랬더니, 이 학교에서는 운영안하고, 다른 곳이란다, 마운트뷰인가에 한다고 했다. 그 외에도 다른 곳에도 운영하는듯. 암튼, 마운트뷰는 우리집에서 머니까, 그냥 모나쉬 카운실에서 운영하는 프로그램을 선택한 것,

2주 기간인데, 방학의 마지막날은 내가 휴가를 쓰고 안보내기로 했다. 그래서 9일을 보냈다. 애는 아주 좋다고 했다. 특히 영화본 날은 정말 재밌어 했고, 가장 좋아한 프로그램은 사이언스 실험 프로그램. 이건 어디 대학 professor가 와서 했던거 같다. 그거 보고 온날은, 학교 다녀와서 엄마 아빠를 졸졸 쫓아다니면서 입에 침을 튀기면서 설명해주었다.

암튼, 혹시 궁금하실 분들을 위해, 프로그램 안내서를 스캔해서 올려본다.  텀4의 등록폼은 언제나오는지 모르겠는데, 나오는대로 다시 올려보겠다.


아마존 7주년, 그리고 퇴사

밑에 보니 아마존 6주년 포스트가 있네. 그 포스트 후 다시 1년 반의 시간이 지남. 시간은 왜 이렇게 빨리 흐르는거야. 지금은 2026년 8월. 2026년 2월말이 아마존 근무 7주년이 되던 때이고, 4월달에 퇴사를 했다. 7년 1개월 정도만에 ...