장비제어개발관한이야기(23)
-
유용한 시간관련 클래스[MFC/C++]
오늘 포스팅할 내용은 타이머관련한 내용입니다. 장비제어를 하다 보면 실제로 시간개념이 많이 들어갑니다. - 500ms 동안 실린더를 작동하고 다시 실린더 동작을 원래 대로 돌아가라. - 3000ms 동안 카메라에서 응답이 없다면 알람을 발생하여라. - 200ms 후에 모터구동을 시작하여라 꼭 장비제어 뿐만 아니라 알고리즘의 걸리는 시간이 측정 쓰레드의 생성시간 등등 안쓰는데가 많습니다. 간단히는 Sleep(500); 등의 구문으로 대기하는 경우가 많죠. 하지만 장비제어서는 정확한 시간관리가 필요하기 때문에 MFC 개발을 하게 되면 QueryPerformanceFrequency() 를 이용하여 시간을 파악하여 동작을 시킵니다. 다른 분야의 분들도 많이 쓰는 API라 생각됩니다. 매번 WINAPI를 호출해서..
2021.01.10 -
간단한 장비제어를 위한 시리얼 통신(C++/MFC)
안녕하세요 Young입니다. 장비회사에서 시리얼통신이란? 자동화설비 제어 프로그램시에서는 RS232통신을 사용하여 바코드나 OCR리더기, 기타 통신에 많이 이용되고 있습니다. 특히, 바코드부분에서는 거의 RS232 통신을 이용하여 제어하고 있습니다. 저희 회사에서는 주로 쓰는 바코드는 DataLogic 이나 코그넥스(Cognex) 인데, 전부 시리얼통신으로 사용하고 있습니다. 주 통신 시나리오는, 시리얼통신으로 특정 소프트웨어 트리거프로토콜을 보낸뒤에 응답받는 구조받는 시퀀스로 구성됩니다. 시리얼통신에 대해 자세히는 아니더라도 기본적은 통신 프로토콜에 대한 이해+사용법을 숙지해야 장비개발에 어려움이 없을 듯합니다. 간단히 사용하려면, 기본적인 사용법은 MFC에서는 거의 비슷하기 때문에 한번 보시고 실제 ..
2021.01.07 -
[UTIL] Beyond Compare 없으면 안됩니다.
안녕하세요, YoungM입니다. 오늘은 장비개발 하면서 많이 사용하는 'Beyond Compare' 라는 프로그램에 대해서 소개 하려 합니다.물론, 장비개발뿐만 아니라 개발을 하게 버전관리가 필요한 프로젝트라면 전부 필요 할꺼라 생각합니다. (모든 프로젝트는 버전관리필요함^^) 어제도 사용하고 내일도 사용할 프로그램입니다. 대학생때, 이 프로그램을 몰라서 소스 끼리 항상 눈 빠지게 비교 노가다 하다가 시간을 전부 까먹었던 추억이 있습니다. 너무 좋은 프로그램이라 구매를 추진해서 회사에서 아주 잘 쓰고 있는 프로그램입니다. 개발자로서 시작하시는분 들은 필요 사용법을 알아 두시는게 진리입니다. 그냥 믿으세요^^ 사용법도 엄청 간단합니다. 쓰다 보면 개발 뿐만 아니라 다른 분야에서도 활용성 있게 쓸수 있는 프..
2021.01.07 -
Bayer 변환과 카메라 제어
안녕하세요. 초보 장비개발자 입니다. 오늘 포스팅 할 내용은 카메라제어 부분에서 BayerConversion 부분입니다. 이 부분은 간단히 말하자면 일종의 압축해제 입니다. 카메라는 BayerPattern 이라는 압축된 형태의 컬러포맷을 프레임그레버쪽으로 전송하게 되고 그것을 다시 RGB 형태로 변환하는 작업을 해야 합니다. 그 BayerPattern 다음과 같습니다. Bayer변환을 해보자! 이 형태를 기존 데이터의 3배 RGB 형태로 변환하게 됩니다. 변환하는 방법에 따라 여러가지로 나뉘어 집니다. Pixel Doubling Interpolation Bilinear Interpolation 각 방법에는 속도와 화질에 상관 관계가 있습니다. 자세한 내용은 비전관련 책을 참조 하면 잘 설명이 되있습니다...
2021.01.06 -
장비제어에서 소켓통신이 필요한 순간...
신규장비를 하면은 한달이 어떻게 지나가는지 모를정도로 시간이 빨리 지나갑니다. 힘들기도 하고, 보람되기도 합니다.. 요즘들어서는 코딩보다 멍때리는 시간이 많아 지는거 같아 슬프기도 합니다. 자동화 장비 관련 일을 하다 보면, 변위센서, 각종 모터드라이브들을 사용하다 보면은 소켓 통신을 사용할 일이 많습니다. 이 소켓통신은 무엇인가? 소켓통신은 말그대로 소켓을 기반으로 한 통신입니다.. 뭐, 컴퓨터공학 전공자라면 누구나 아는 내용이지만, 나도 그렇고 다들 7계층 이라던가 그런것 까지 이론으로 공부 했을꺼라 생각됩니다. 간단하게 설명하자면 통신을 위한 일종의 약속으로 보면 이해가 빠를 듯 합니다. 일단, 장비제어를 하기위해서는 많은 개념은 필요없고, 어느 정도 기반지식이면 접근하는데 크게 무리가 없을 듯합니..
2021.01.06 -
심플하고 강력한 MFC,C++ 용 XML 파서(CMarkup)
자료도 소장할겸, 여러가지 겸사겸사 블로그를 시작하였습니다. 많이 모르지만 도움이 되었으면합니다. 파라미터의 저장 과 읽기 MFC 기반 장비제어를 하면서 위치정보 나 각종 파라미터 저장시에는 저희 회사 전통적으로 기본적인 파일입출력(바이너리)을 사용하였습니다. 그러나 파일입출력의 경우 가독성이 제로에 가깝고 수시로 바뀌는 파라미터가 감당이 안되서 마크업기반 언어인 XML을 사용하기로 결정 하였습니다. 개발자가 혼자라서 뭐 결정이라고 할 것도 없네요. XML 기반 라이브러리를 여러가지 찾아 보았습니다. 그 중 에서 심플하고 속도에서 강점을 내세우면서 STL 만을 사용하여 플랫폼 이식에도 뛰어난 오픈소스를 찾았습니다.노드당 최대 4Gbyte의 정보를 저장하게 되면 뻗어버리는(?) 단점만 빼고 훌륭한 라이브러..
2021.01.05