HMI 스크립트는 HMI에서 구동되는 스크립트로 파워씬 스튜디오를 이용해 작성할 수 있습니다.

 캔버스, 그래픽 개체, 위젯에서 스크립트를 정의할 수 있습니다.



 캔버스 스크립트 작성


캔버스 이벤트 발생시 스크립트가 실행되도록 정의할 수 있습니다.

  • 이벤트 종류에서 캔버스 로딩 중/캔버스 종료 중/캔버스 활성화 중 에서 하나를 선택하여 실행시점을 설정할 수 있습니다.
    • 캔버스 로딩 중 : 캔버스 로딩 할 때 스크립트가 실행됩니다.
    • 캔버스 종료 중 : 캔버스 종료 중 스크립트가 실행됩니다.
    • 캔버스 활성화 중 : 캔버스가 활성화 될 때마다 스크립트가 실행됩니다.


 예) 캔버스 로딩 중에 사용자를 데이터베이스에서 조회하여 텍스트 테이블에 표시합니다.

  


dbm.cmd2('CREATE TABLE IF NOT EXISTS [USER_LIST] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,[companyname] TEXT,[department] TEXT,[field] TEXT,[manager] TEXT,[phone] TEXT );')


def updateUserList(tableObj) :

    tableObj.clearGridData()

    lstUserList = dbm.cmd2('SELECT * FROM USER_LIST')

    dataRow = 1

    rowIndexPerPage = 1

    allData = list()

    for userInfo in lstUserList :

        userId = userInfo.value('id')

        companyName = userInfo.value('companyname')

        department = userInfo.value('department')

        field = userInfo.value('field')

        manager = userInfo.value('manager')

        phone = userInfo.value('phone')


        page = (dataRow / tableObj.rowCount()) + 1


        data = list()

        data.append(companyName)

        data.append(department)

        data.append(field)

        data.append(manager)

        data.append(phone)

        allData.append(data)


        if tableObj.rowCount()-1 == rowIndexPerPage :

            rowIndexPerPage = 0


        dataRow += 1

        rowIndexPerPage += 1


    tableObj.setGridData(1, 0, tableObj.rowCount()-1, 5, allData)

    pageInfo = canvas.getObject('rectTotalPage')

    pageInfo.setProperty('FaceText', str(tableObj.currentPage()) + ' / ' + str(tableObj.totalPage()))


updateUserList(canvas.getObject('TextTable_1'))


 




 그래픽 개체(위젯) 스크립트 작성


그래픽 개체(위젯)에 이벤트가 발생했을 때 스크립트가 실행되도록 정의할 수 있습니다.

  • 이벤트 종류에서 마우스 누름/마우스 누름 해제/마우스 더블 클릭 등에서 하나를 선택하여 실행시점을 설정할 수 있습니다.
    • 마우스 누름 : 개체를 마우스로 눌렀을 때 실행됩니다.
    • 마우스 누름 해제 : 개체를 마우스로 누름 해제 되었을 때 실행됩니다.
    • 마우스 더블 클릭 : 개체를 마우스로 더블 클릭 했을 때 실행됩니다.
    • 마우스 진입 : 마우스가 개체의 영역에 진입 했을 때 실행됩니다.
    • 마우스 벋어남 : 마우스가 개체의 영역에서 벋어났을 때 실행됩니다.
    • 마우스 오른쪽 버튼 누름 : 개체를 마우스 오른쪽 버튼으로 눌렀을 때 실행됩니다.
    • 로딩중 : 개체를 로딩 할 때 실행됩니다.


 예) 그래픽 개체를 클릭 해제 되었을 때 포인트값을 변경하고 사운드 파일을 재생합니다.

 


app.playSound('Windows Ding.wav')

remote.setValue('종축.지령수동STEP', 0)