본문 바로가기 메뉴 바로가기

구스의 엔지니어 세상

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

구스의 엔지니어 세상

검색하기 폼
  • 엔지니어 세상 (451)
    • National Instruments (247)
      • LabVIEW (94)
      • LV OOP (4)
      • DAQmx (30)
      • DIAdem (25)
      • RIO (18)
      • Vision (10)
      • 통신 (14)
      • VeriStand (2)
      • TestStand (6)
      • RF (9)
      • 기타.. (35)
    • NATI 소식 (2)
    • IT 소식 (1)
    • 프로그래밍 팁s (98)
      • C#, .NET (16)
      • Android (1)
      • Excel(Macro, VBA) (19)
      • 프로그래밍 방법론 (12)
      • Database (8)
      • 기타 (25)
      • Swift..(iOS) (1)
      • R (1)
      • Python (15)
    • MAC 팁s (11)
    • Windows팁s (26)
    • Blog 팁s (1)
    • Good Apps (63)
    • Hardwares (2)
  • 방명록

NI MAX에 떠있는 장비 리스트 가져오기

NI MAX의 장비에 대한 리스트를 가져오기 위해서는 NI System Configuration API를 이용해야 합니다. 아래의 자료를 보시면 아시겠지만, NI System Configuration API는 LabVIEW, CVI, .NET(C#)만 지원하고 있습니다. 따라서 C언어에 대한 API를 바로 사용할 수는 없습니다. 관련 예제는 아래의 그림과 같이 본 경로에서 확인할 수 있습니다. C:\Users\Public\Documents\National Instruments\CVI\Samples\nisyscfg\ShowAllHardware 그럼 정말 C, MFC에서는 NI 장비 리스트를 받을 수 없는 것일까요? 방법이 없는것은 아닙니다.LabVIEW, CVI 혹은 C#을 이용하여 C 언어에 대한 Lib..

National Instruments/기타.. 2015. 4. 10. 20:55
[DAQmx] C언어에서 이더넷 DAQ 장비 예약하기

DAQmx 드라이버는 기본적으로 소프트웨어 적으로 이더넷 DAQ 장비를 설정하는 함수를 제공하고 있습니다. 이에 대한 함수는 DAQmxAddNetworkDevice, DAQmxReserveNetworkDevice 함수입니다. 이에 대한 사용법의 예는 아래와 같습니다. 과정을 설명드리면, 1) 장비를 추가합니다. 2) 추가한 장비를 예약합니다. 3) 예약에 대한 시간이 걸리기 때문에 바로 Start Task를 하시면 에러가 발생할 수 있으니 얼마간의 Sleep을 지정합니다. C언어를 이용하시는 분이니 아래의 코드를 보시면 충분히 이해가 갈 것이라 생각을 합니다. 각 함수에 대해서 간략히 설명을 드리자면, 1) 네트워크 장비 추가 함수 네트워크 장비 추가함수는 장비의 IP 주소와 MAX에서의 장비 이름을 이..

National Instruments/DAQmx 2015. 4. 10. 20:51
[에러해결] 'const char'에서 'LPCWSTR'(으)로 변환할 수 없습니다.

MFC를 쓰다보면 'const char'에서 'LPCWSTR'(으)로 변환할 수 없습니다 라는 에러가 종종 뜹니다. 이 부분은 프로젝트의 설정 부분이 제대로 되어 있지 않기 때문에 발생하는 경우인데요. 이를 해결하기 위해서는 프로젝트의 속성을 변경해 주면 됩니다. 프로젝트 속성에 Character Set이 Multi Byte가 아닌 Uni-Code로 설정이되어 있기 때문인데요. 이를 변경하는 방법을 알아보도록 하겠습니다. 아주 간단해요~! 1. 프로젝트의 속성 창을 엽니다. 2. 일반(General)에서 문자열 셋(Character Set)을 찾습니다.기본값이 유니코드로 되어 있는것을 확인할 수 있습니다. 3. Multi-Byte로 변경을 합니다. 4. 에러가 해결이 됩니다. 이 글이 도움이 되셨나용?

프로그래밍 팁s/기타 2015. 3. 31. 12:10
[LabVIEW] LV에서 .NET 함수 호출시 1172(단일 스레드) 에러 발생 해결

LV에서 .NET 함수를 호출할 때 에러가 발생하는 경우가 있습니다. .NET 어셈블리의 함수를 호출할 때 제대로 호출이 되지 않는 경우 LV에서는 1172 에러를 발생시킵니다. 따라서 1172 에러가 발생이 되었을 때 에러코드를 보는 것이 아니라, 에러가 어떤 에러가 발생하였는지를 파악해야 합니다. .NET 함수 호출시 대부분의 에러가 1172로 발생하기 때문에 정확한 에러 해결방안을 찾기 위해서는 내역을 파악해야 하는 것입니다. 1172 에러에 대한 창은 아래의 그림과 같습니다. 1172 에러가 발생했지만 아래 내역을 보면 스레드가 단일 스레드가 아니라서 발생하는 에러라고 나옵니다. 그럼 이제부터 단일 쓰레드에 대한 에러를 해결하는 방법을 알아보도록 하겠습니다. LV는 기본적으로 단일 쓰레드 기반이 ..

National Instruments/LabVIEW 2015. 3. 28. 11:21
PID 제어 (Proportional-Integral-Derivative)

PID제어는 비례(Proportional), 비례적분(Integral), 비례미분(Differential) 제어를 조합한 제어방식으로 기존의 제어의 85%이상을 차지하는 유명하면서 많이 쓰이는 제어방식입니다. 흔히 PID 제어라고 하면 아래의 그림을 많이 볼 수 있습니다. Kp, Ki, Kd의 값을 이용해서 특정한 연산을 하고 이에 대한 Output을 낸다고 볼 수 있겠네요. PID 제어는 제어하고자는 대상의 출력값을 측정하여, 이 값을 바탕으로 목표값(SetPoint)와 비교한 뒤 오차를 계산하여 이를 바탕으로 다시 제어값을 결정하는 알고리즘입니다. PID 제어의 공식을 먼저 살펴보겠습니다.공식은 아래와 같습니다. 적분도 있고, 미분도 있네요. 위의 공식은 아래와 같이도 표현이 될 수 있습니다. 왜 P..

National Instruments/기타.. 2015. 3. 20. 13:09
[LabVIEW] 랩뷰에서 비동기적으로 팝업창 띄우기

일반적으로 랩뷰에서 subVI를 팝업 창으로 동기적으로 동작이 됩니다. 동기적으로 동작이 되면 subVI가 종료되기 이전에 subVI를 띄운 Main VI가 Waiting 상태에 빠지게 됩니다. subVI가 종료되야 Main VI의 기능이 동작하게 됩니다. 하지만 대부분 PopUP 창을 띄울때는 MainVI에서는 기능이 제대로 실행되기를 원합니다. 이럴때는 동기적이 아닌 비동기적인 방식으로 subVI를 띄어야합니다. 그럼 지금부터 랩뷰에서 비동기적인 방식으로 subVI를 호출하는 방법에 대해서 알아보도록 하겠습니다. 그럼 MainVI 부터 살펴보도록 하죠. Main VI에서는 특정 이벤트 혹은 버튼이 눌러지는 경우 상태머신을 기반으로 subVI를 호출할 수 있습니다. 1) Main VI 살펴보기 아래의 ..

National Instruments/LabVIEW 2015. 3. 19. 17:57
[엑셀 매크로 사용법 VBA] Excel(엑셀) 프로그램 주요 개체

지금까지 엑셀 매크로를 통해 VBA를 사용하는데 필요한 몇몇 정보를 전달드렸습니다. 이제부터 본격적으로 엑셀을 처리하는 내용을 공부하려고 하는데 엑셀 매크로를 잘 활용하기 위해서는 알아야 할 주요 개체가 4가지가 있습니다. 주요 개체는 Application, Workbook, Worksheet, Range로 구분할 수 있습니다. 각 개체에 대한 간략한 설명을 드리자면, 1) Application : 이는 Excel 프로그램 자체를 나타냅니다. 즉 현재 실행되고 있는 Excel 프로그램이라고 보시면 됩니다. 종료와 같이 엑셀 프로그램에서 실행할 수 있는 모든 기능을 제공하는 개체입니다. 저장, 로드는 Application이 아니라 Application 보다 하위단이 Workbook에서 가능합니다. 예를 한..

프로그래밍 팁s/Excel(Macro, VBA) 2015. 3. 18. 20:42
Callback(콜백 함수)에 대해서

콜백함수는 Callback 함수라는 이름자체 때문에 많은 사람들이 헷갈려 하는 부분이 있습니다. 그래서 이번 글에서는 이러한 헷갈림을 없애기 위해서 콜백함수에 대해서 설명을 드리고자 합니다. 일반적인 개발에는 개발자가 시스템이 필요한 시점에 어떠한 특정 기능을 호출하는 방식으로 많이 사용됩니다. API를 제공받아 이 API를 시점에 맞게 호출하는 것이지요. 이는 일반적인 프로그래밍 개발 방법입니다. 하지만 이러한 함수의 호출을 시스템에 맞겨야 하는 상황이 발생하기도 합니다. 사용자가 호출 시점을 결정하는 것이 아닌 시스템 입장에서 필요한 타이밍에 호출이 필요한 상황인것이죠. 예를 들어보겠습니다. 특정 이벤트가 발생할 때 이를 사용자에게 알려준다고 가정을 해볼께요. 특정 이벤트가 발생하기 전에는 프로그램 ..

프로그래밍 팁s/기타 2015. 3. 17. 13:00
[엑셀 매크로 사용법 VBA] InputBox를 통해서 데이터 받기

이전 글에서 MsgBox를 통해서 엑셀 매크로 내부의 데이터를 표현하는 방법에 대해서 알아보았습니다. 이번 글은 데이터를 입력 받을 수 있는 InputBox를 통해서 엑셀 매크로 사용법에 대해서 알아보도록 할께요. MsgBox에 대해서 아시고 싶으시다면, 아래를 클릭하시면 됩니다. 2014/12/24 - [프로그래밍 팁s/Excel(Macro, VBA)] - [엑셀 매크로 VBA] MsgBox 메시지 박스 창 띄우기 InputBox는 사용자로 부터 데이터를 입력 받을 수 있게 도와주는 윈도우입니다. InputBox를 사용하기 위해서는 InputBox의 원형을 알아야 하겠죠. InputBox의 원형은 아래와 같습니다. Public Function InputBox(Prompt, Title, Default, ..

프로그래밍 팁s/Excel(Macro, VBA) 2015. 3. 16. 13:21
[DIAdem] DataPortal에서 그룹 펼치기/닫기(Collapse/Expand)

디아뎀에서 TDMS 파일을 읽어오면 아래와 같이 Data Portal에 TDMS 파일에 있는 그룹과 채널들이 로드가 됩니다. 하지만 파일을 읽어오면 모든 그룹들에 대한 채널들이 확장되어 있는 모습을 볼 수 있습니다. 아래와 같이 말이죠. 파일 로드시 확장된 부분을 닫아버리게 할 수는 없을까? 라는 고민을 해보고 관련 함수를 찾아보았습니다. 역시 스크립트 함수에는 모든것이 다 있었습니다. Structure 오브젝트 안에 보시면 아래와 같이 Collapse와 Expand 함수가 있습니다. Collapse 함수가 채널을 닫게 만들고, Expand가 확장을 하게 만들어요. 자세한 내용은 Help 파일을 참조하세요. 그럼 구현을 한번 해보겠습니다. Dim index For index = 1 to data.Root..

National Instruments/DIAdem 2015. 3. 10. 12:04
이전 1 ··· 21 22 23 24 25 26 27 ··· 46 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바