[제품종류] IEC1000
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============안녕하세요, 아이젠텍 입니다.
GPIO 입력의 Event OnPortDatasChange 방식에서 예시와 같이 적용하였을 때
SmartX.SmartGPIO.PORTPIN iBit = m_smartGPI.PortDetection(SmartX.SmartGPIO.PORTID.PORTB, SmartX.SmartGPIO.TRIGGERMODE.LevelChange, port_data)
PORT B 의 특정 PIN 만 Level 이 변화하였는지 확인이 가능한지요?
저는 PORT B 에 PIN3 만 상태를 확인하고 싶습니다.
Trigger 를 원하는 것은 아닙니다.
원할 때 GPIO 입력을 확인하여 특정 PIN 의 값이 Low 인지 High 인지 확인하고자 합니다.
PORT B PIN3 만 level 이 변화를 하였으나 디버거로 보았을 때에는 port_data 의 값 0,1,2 에 해당하는 모든 값이 변하는 것으로 보입니다.
(첨부파일 캡쳐 내용 확인을 부탁드립니다)
PortDetection 내부 구조를 잘 몰라 문의 드립니다.
이상입니다.
=============== 답 변 ===============
안녕하세요...
아래의 코드를 참고하시기 바랍니다.
private void StartButton_Click(object sender, EventArgs e)
{
smartGPIO1.PortSelect = SmartX.SmartGPIO.PORTID.PORTB;
smartGPIO1.DirPin3 = SmartX.SmartGPIO.PINDIR.INPUT;
smartGPIO1.PortDetection_Initialize();
smartGPIO1.PortWatchStart();
}
private void smartGPIO1_OnPortDatasChange(int iPortDatas)
{
// 입력 신호가 변경된 핀을 체크(HIGH -> LOW, LOW -> HIGH)
SmartX.SmartGPIO.PORTPIN iBit = smartGPIO1.PortDetection(SmartX.SmartGPIO.PORTID.PORTB, SmartX.SmartGPIO.TRIGGERMODE.LevelChange, iPortDatas);
if (iBit == SmartX.SmartGPIO.PORTPIN.PIN3)
{
if ((iPortDatas & 0x08) == 0x08)
{
// Port-B-Pin3 High
}
else
{
// Port-B-Pin3 Low
}
}
}
-감사합니다.