본문 바로가기
반응형

전체 글165

[MELSOFT] GX Works2 1.605F 업데이트 다운로드 및 패치노트 (영문판) ※ 최신 버전이 출시되어 본 포스팅은 휴지통으로 이동되었습니다. 최신버전은 아래 링크를 참조하여 주세요. 2022.01.22 - [PLC 소프트웨어/PLC 래더 로직] - [MELSOFT] GX Works2 1.610L 업데이트 다운로드 및 패치노트 (영문판) Mitsubishi PLC 시퀀서 엔지니어링 소프트웨어 GX Works2 Version1 (영문판) (SW1DNC-GXW2-E/SW1DND-GXW2-E) (프로그래밍, 시뮬레이션, 인텔리전트 기능 유닛 컨피그레이션 기능을 통합) 의 업데이트판입니다. ※ 본 버전으로 업데이트를 위해서는 설치판을 통해 프로그램이 설치되어있어야 합니다. 설치판 프로그램은 유료판매용입니다. 관련 문의는 미쓰비시전기오토메이션 대리점이나 본사 (http://kr.mitsub.. 2021. 9. 21.
[lua] 루아에서 윈도우 앱을 실행하는 방법 os.execute() 루아에서 특정 앱을 실행하려면 os.execute() 함수를 사용합니다. os.execute('start "" "실행파일경로"') 함수의 인수에 'start "" ' 커맨드 코드 이후 실행하려는 윈도우 앱의 경로나 이름을 기입하면 실행이 됩니다. -- 그림판을 실행하는 예시 app_path = '"mspaint"' os.execute('start "" '..app_path) -- 메모장을 실행하는 예시 app_path = '"notepad"' os.execute('start "" '..app_path) -- 계산기을 실행하는 예시 app_path = '"calc"' os.execute('start "" '..app_path) 윈도우의 기본앱들은 위의 예시처럼 앱의 이름만으로도 실행이 가능합니다. 마치 실.. 2021. 9. 20.
[JavaScript] Hello, World! " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스  텍스트 윈도우 박스 생성Hello World! 버튼" data-ke-type="html">HTML 삽입미리보기할 수 없는 소스   텍스트 변경 버튼아래 버튼을 누르세요Text Change 버튼" data-ke-type="html">HTML 삽입미리보기할 수 없는 소스   시간정보 불러오기현재 날짜와 시간 표시하기!date" data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 2021. 8. 28.
[키보드매핑] KeyTweak v2.30 네이버 자료실 서비스 종료로 인한 유틸리티 백업 키보드 매핑에 도움됩니다. 2021. 8. 10.
[lua] 함수 정의시 인수의 기본값 지정하는 방법 lua로 스크립트 코딩을 하면서 함수의 정의는 필수적으로 하게됩니다. 그런데 함수를 사용할때 꼭 인수를 지정하지 않더라도 기본값을 바인딩하여 자동으로 실행되게 하고 싶은 경우가 있습니다. # 파이썬의 경우 def hello(name, greeting = 'nice to meet you'): print(name, greeting) # 샘플 hello('gildong') # >> gildong, nice to meet you. hello('youngmi', 'how old are you?') # >> youngmi, how old are you? 파이썬의 경우 함수의 인수를 정의할때 기본값을 정의해두면 됩니다. 하지만 루아에서는 파이썬과 같이 해버리면 즉시 컴파일 오류가 발생하게 됩니다. 루아에서는 두가지 .. 2021. 8. 3.
[이미지맥스] 마우스를 클릭한 상태를 유지 하는 방법 MouseDown(), MouseUp() 이미지맥스를 이용하여 자동화 툴을 제작하며 마우스 클릭을 누른체 유지해야 하는 경우가 있습니다. 이경우 lua 스크립트의 내부함수 Mouse() 의 DOWN, UP 인수를 활용하여 해당 동작을 꾸밀수 있습니다. -- 마우스 좌버튼 누름 함수 function mouseDown(ix, iy, rx, ry, ms) local rx = rx or 0 local ry = ry or 0 local rx = math.random(-rx, rx) local ry = math.random(-ry, ry) local ix = ix + rx local iy = iy + ry local ms = ms or 0 Mouse(LBUTTON, DOWN, ix, iy) if ms > 0 then Sleep(ms) Mouse(LBUTT.. 2021. 8. 2.
[pyqt] pyinstaller .ui 포일 포함시키기 # PySide 를 사용하는 경우 import os import sys from PySide6.QtWidgets import * from PySide6.QtCore import Qt from PySide6 import QtUiTools # pyinstaller .ui 파일 포함 def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__))) return os.path.join(base_path, relative_path) form = r.. 2021. 7. 30.
[PDF 합치기 툴] Arduo PDF Merger 네이버 자료실 서비스 종료로 인한 유틸리티 자료 백업 2021. 7. 28.
[win32api] WM_MESSAGE CONSTANCE # Generated by h2py from commdlg.h (plus modifications 4jan98) WINVER = 1280 WM_USER = 1024 PY_0U = 0 OFN_READONLY = 1 OFN_OVERWRITEPROMPT = 2 OFN_HIDEREADONLY = 4 OFN_NOCHANGEDIR = 8 OFN_SHOWHELP = 16 OFN_ENABLEHOOK = 32 OFN_ENABLETEMPLATE = 64 OFN_ENABLETEMPLATEHANDLE = 128 OFN_NOVALIDATE = 256 OFN_ALLOWMULTISELECT = 512 OFN_EXTENSIONDIFFERENT = 1024 OFN_PATHMUSTEXIST = 2048 OFN_FILEMUSTEXIST .. 2021. 7. 20.
[이미지맥스] 테이블로 나열한 여러 이미지를 서치 혹은 클릭하는 함수 isTable(), clickTable() 2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기 2021.07.18 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] 여러 이미지검색 결과를 boolean 값으로 받기 (isImage()함수mk.2) 2021.05.04 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] 루아 내부함수를 응용해보자! -4- (clickImage()함수) 계속해서 이미지의 검색 결과를 boolean 값으로 리턴 받는 방법에 대해 연구하고있습니다. 이번에도 동일하게 MultiImage() 함수를 활용하여 테이블 형태로 검색할 이미지를 나열하여 일괄적으로 찾을수 있는 방법에 대해 연.. 2021. 7. 18.
[이미지맥스] MultiImage() 결과값을 boolean 값으로 받기 isImage() 2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기 이전 글에서 ImageSearch() 함수를 이용하여 이미지 검색 결과를 0 혹은 1이 아닌 참(true) 혹은 거짓(false) 으로 리턴받아 if조건문에서 보다 간결하게 사용할수 있는 방법을 알아보았었습니다. 그러나 이러게 해도 여러개의 이미지를 AND 혹은 OR 조건으로 검색시 마찮가지로 함수를 여러번 사용하여 논리회로를 구성해야하기 때문에 코드가 길어지는 결과를 낳게 됩니다. 이렇게 이미지를 여러개 동시에 검색해야 하는 경우 가장 알맞는 기능을 이미지맥스에서는 이미 제공하고있습니다. 바로 MultiImage() 멀티이미지검색 함수입니다. 과거에 .. 2021. 7. 18.
[lua] file --file open -- r : Read only -- w : overwrite or create a new file -- a : Append or create a new file -- r+ : Read & Write existing file -- w+ : Overwrite read or create a file -- a+ : Append read or create file file = assert(io.open("test.txt", "w")) file:write("Hello World") file:close() -- http://lua-users.org/wiki/FileInputOutput -- see if the file exists function file_exists(file) local f =.. 2021. 7. 13.
[lua] hello, world! function hello() print('Hello, World!') end hello() -- 'hello, world!' 2021. 7. 12.
[lua] 랜덤 시간 예약 설정 함수 setTime() -- 랜덤 시간 설정 (현재 시간 ~ 23시 59분 59초 중 랜덤한 시간 반환) function setTime() math.randomseed(os.time() + math.random(0, 65535)) local date = os.date('*t') local set_time = {hour = math.random(date.hour, 23), min = math.random(date.min, 59), sec = math.random(date.sec, 59)} print('set Time : [ '..set_time.hour..'h', set_time.min..'m', set_time.sec..'s ]') return set_time end -- > 리턴값 : {hour, min, sec} key를 .. 2021. 7. 12.
[이미지맥스] 인식 화면의 정지 여부 (앱동작정지) 를 검출하는 방법 -- 시스템 클럭을 이용한 딜레이 설정 함수 function setClock() return os.clock() end function getClock(_clock) if _clock ~= nil then return os.clock() - _clock else print('getClock() ERROR : _clock is null') end end -- print('========================================') -- print('화면 정지 비교 프로그램 ver.220509') -- print('========================================') -- 앱 동작 정지 감시 유사도, 판단 시간, 검사 간격 설정 STOP_JUDGE_ACC = 98 --.. 2021. 7. 10.
[이미지맥스] 앱플레이어 hwnd 윈도우핸들 취득 방법 FindWindow(), FindWindowEx(), PostMessage(), SendMessage(), WM_MESSAGE -- 블루스택5 윈도우 핸들 취득 hwnd1 = FindWindow('Qt5154QWindowOwnDCIcon', 'BlueStacks') hwnd2 = FindWindowEx(hwnd1, '', 'plrNativeInputWindowClass', 'plrNativeInputWindow') hwnd3 = FindWindowEx(hwnd2, '', 'BlueStacksApp', '_ctl.Window') -- LD앱플레이어 윈도우 핸들 취득 hwnd1 = FindWindow('LDPlayerMainFrame', caption) hwnd2 = FindWindowEx(hwnd1, '', 'RenderWindow', 'TheRender') hwnd3 = FindWindowEx(hwnd2, '', 'subWin'.. 2021. 7. 10.
[lua] 시간 설정 및 경과 확인 함수 getClock() setClock() 2021.05.10 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 sleep() 함수를 구현하기 지난 시간에 sleep()를 만들어 보았습니다. sleep() 함수의 단점이라면 시간지연을 하는 동안 다른 동작을 할수가 없이 무조건 모든 동작이 멈춘상태로 시간을 보내야 한다는 점인데요. 여기서 sleep() 과는 다른 방법으로 동작을 지연시킬 방법을 생각해 보았습니다. 실행할 시간을 지정해서 현재 시간과 비교하여 원하는 시간이 지나면 동작하게 꾸미는것이 바로 그것이죠. 시간을 설정하기 때문에 sleep() 과는 달리 설정한 시간이 되기 전까지는 다른 동작도 동작하게 할수 있는 장점이 있습니다. 구현 방안은 현재 시점에 시간을 설정하고, 시간이 흐른뒤 설정한 시간과 비교하여 차값를 구해 얼마.. 2021. 5. 12.
PLC 래더 프로그램의 기본 -2- [ AND 와 OR 회로 ] PLC는 프로그래머블 로직 콘트롤러(Programmable Logic Controller)의 약자로, 논리회로를 소프트웨어로 프로그래밍 할수 있는 자동제어장치 입니다. 그러면 여기서 말하는 논리 회로란 무엇인가? 불리언(boolean)값인 참(true)과 거짓(false) 혹은 흔히 말하는 1과 0, 혹은 접점의 open, close 를 조합하여 AND 회로와 OR 회로를 이용하여 조건의 경우의 수를 따져 원하는 출력을 내보내게끔 꾸미는 것을 말합니다. PLC의 경우 대부분의 경우 실제 기계를 움직이기 때문에 다음과 같은 경우의 조건들을 로직화 하여 동작하게끔 프로그램을 설계합니다. [ 다양한 구동 조건들의 예시 ] 1. 승강축 실린더가 상승인 경우에만 주행축 로봇의 서보모터를 정방향 혹은 역방향으로 구.. 2021. 5. 12.
PLC 래더 프로그램의 기본 -1- [ 자기유지와 인터락 회로 ] PLC의 래더로직(Ladder Logic) 프로그램은 전기회로를 사다리 모양으로 도식화 하여 표현한 것입니다.마치 그 모양이 사다리 모양과 비슷하여 래더도, 래더프로그램이라고 통상 부릅니다. PLC의 메이커별로 어드레스형식, 태그방식, 레이블방식 혹은 IEC61131-3 표준에 규정된 프로그램 방식에 따라 여러 형태로 프로그램이 가능하지만 자료형의 선언방식의 차이일뿐 래더 프로그램 이라는 근간은 변하지 않습니다. 위 사진에 첨부한 프로그램이 바로 래더 프로그램의 형식으로 좌측 세로줄과 우측 세로줄 사이에 선과 도형들이 모여 논리회로 프로그램을 이루고 있는 것이죠. 래더 프로그램을 구성하는 요소는 기본적으로 A접점(open contact), B접점(close contact), 코일(coil), 함수명령(f.. 2021. 5. 10.
[lua] 루아에서 sleep() 함수를 구현하기 다른 언어에서 통상적으로 지원하는 시간지연딜레이 함수인 sleep() 을 루아에서는 직접 함수를 만들어 구현해야합니다. os라이브러리의 프로그램 구동시간을 리턴해주는 os.clock() 함수를 이용하여 쉽게 구현할수 있습니다. os.clock() 함수는 프로그램의 구동시간을 초단위로 실수값 형태로 반환을 해줍니다. 가령 프로그램이 동작한지 10초가 지났다면 10.000 으로 반환 값이 돌아옵니다. 이를 통해 sleep() 함수를 실행했을때의 클럭과 지정한 시간이 경과한 후 클럭의 차를 구하면 경과한 시간을 알수 있게되어 while 반복문을 이용하거나 until 반복문 이용하면 딜레이 동작을 구현할수 있습니다. 1. 시간지연을 초(sec) 단위로 설정하여 슬립 동작을 구현하는 경우 -- 초단위 Sleep .. 2021. 5. 10.
[콘넥터] RJ-45 랜케이블 크로스 케이블과 다이렉트 케이블 Ethernet 통신 관련으로 많이 사용되는 랜케이블은 RJ-45 단자와 랜툴이라는 공구를 통해 손쉽게 제작이 가능합니다. 하지만 사용하려는 목적에 따라 다이렉트 케이블(T568B 규격)과 크로스 케이블(T568A 규격)로 구분하여 제작을 해야합니다. 다이렉트 배열의 랜케이블은 PC나 콘트롤러와 공유기 HUB를 통해 통신을 할 경우 사용되며 크로스 배열의 랜케이블은 PC-PC, PC-콘트롤러 등과 같이 공유기 HUB를 통하지 않고 직접 통신할때 사용되니 상황에 따라 배열을 선정할 필요가 있습니다. 최근에는 콘트롤러에서 자체적으로 다이렉트, 크로스 케이블 구분 없이 다이렉트를 꼽아도 알아서 크로스 배열로 인식시켜 동작하는 경우도 있지만, HUB를 미사용하고 다이렉트 케이블로 연결시 통신이 동작하지 않는다면.. 2021. 5. 8.
[이미지맥스] 이미지를 서치하여 클릭하는 함수 clickImage() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 4.
[이미지맥스] 지정영역을 랜덤하게 클릭하는 함수 clickArea() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 3.
[python] hello, world! def hello(): print('hello, world!') if __name__ == '__main__': hello() # 'hello, world!' 2021. 5. 2.
[이미지맥스] ImageSearch()결과를 활용하여 클릭하는 함수 clickResult() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 2.
[이미지맥스] 마우스 클릭을 조금만 더 간편하게! click() 이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다. 내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다. 저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요. 더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다. 그래서.. 2021. 5. 2.
[이미지맥스] 에서 루아를 다룰때 참고할만한 레퍼런스 매뉴얼 이미지맥스는 이미지검색 기반으로 자동화 매크로를 제작할수 있는 편리한 툴입니다. 특히 '루아(lua)' 언어를 내부 스크립트 언어로 채용하여 더더욱 편리하게 각종 기능들을 구현할수 있습니다. 이미지맥스에 탑재된 루아는 버전 5.4로 스크립트에 출력함수를 이용하여 루아의 버전을 확인해볼 수 있습니다. print(_VERSION) -- > Lua 5.4 루아는 현재 최신버전이 5.4.4 버전 까지 나와있습니다. 이미지맥스에 탑재된 루아는 5.4버전으로 버전마다 지원하는 기능과 내부 라이브러리가 차이점이 발생할수 있습니다. 사용하는 버전에 맞는 기술자료를 참고 하는게 가장 좋겠죠. 루아의 공식홈페이지(www.lua.org) 에서 제공하는 레퍼런스 매뉴얼(www.lua.org/manual/5.4) 을 참조하면 .. 2021. 5. 1.
[lua] 랜덤한 문자열 생성하기 -2- (함수화) 2021.04.24 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 랜덤한 문자열을 생성하기 앞서 랜덤한 문자열을 정해진 규칙에 따라 생성해보았습니다. 가령 문자 10자 + 숫자 3자 같은 방법으로 말이죠. 이에 문자열 자동 생성을 보다 더 랜덤한 규칙으로 생성하고 싶어졌습니다. 대문자, 소문자, 숫자 캐릭터를 생성하는 부분을 각각 함수화 하고 이 함수를 랜덤으로 실행하는 방법을 통해 랜덤한 문자가 포함된 테이블을 생성합니다. 이렇게 생성한 테이블에 저장된 문자(캐릭터)들을 조합하여 문자열(스트링)으로 만들어주면 완료입니다! -- Make Random String -- 대문자 생성 function.. 2021. 4. 26.
[lua] 랜덤한 문자열 생성하기 -1- (기본편) 2021.04.26 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 랜덤한 문자열 생성하기 -2- (함수화) 1. 루아에서 문자열 합치기 루아에서는 문자열과 문자열 사이에 .. 를 넣어주면 문자열이 합쳐집니다. 다음과 같이 테이블에 'a', 'b', 'c', 'd' 라는 문자열이 있다고 가정하고 이를 합쳐보겠습니다. chars = {'a', 'b', 'c', 'd'} new_string = chars[1]..chars[2]..chars[3]..chars[4] print(new_string) -- > 'abcd' 테이블의 1, 2, 3, 4번 인덱스 문자을 불러와 문자열로 합친것입니다. 각각 문자들이 합쳐져 abcd 가 리턴되는 것을 알 수 있습니다. 2. 테이블의 문자열을 합치기 그럼 테이.. 2021. 4. 24.
[lua] 날짜와 시간 함수 os.date() [lua] Time Function 루아에서는 시스템OS 시간 관련 정보를 취득할수있는 함수가 크게 3가지가 있습니다. 시스템의 날짜와 시간을 알 수 있는 함수 os.date() UTC+0, 1970년 1월 1일 기준으로 경과한 시간을 알 수 있는 os.time() 프로그램이 첫 실행후 경과한 시간을 알 수 있는 os.clock() 1. 날짜와 시간 함수 os.date() os.date() 함수는 현재 시스템의 날짜와 시간을 스트링형태의 리턴값을 얻을 수 있는 함수입니다. local date = os.date() print('os.date : '..date) --> os.date : 2022-03-26 17:31:58 인수에 스트링 '*t' 를 입력해줌으로 년, 월, 일, 시, 분, 초, 요일, 섬머타임.. 2021. 4. 17.
반응형