[제품종류] IEC1000
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============안녕하세요.
IEC1000, WIN10, MSVC2008, USB 연결하여 개발중입니다.
MSVC2008 과 Windows Mobile Device Center 를 이용하여
USB 로 IEC1000 과 디바이스 연결하여 개발하고 있었습니다.
개발 환경 그대로 변함없이 사용중인데...
특정 버튼만 누르면 바로 "응용 프로그램 오류" 가 발생하며 디버깅 연결이 종료됩니다. (첨부 이미지 참고)
이 버튼은 누르면 팝업 메시지가 뜨고 YES / NO 선택 후, 시리얼 통신을 오픈합니다.
이 기능은 2달 전에 작업한 기능이고 디버깅 환경이나 일반 런타임 모드도 다 잘 동작했습니다.
그런데 갑자기 디버깅 환경에서 저 기능의 버튼만 누르면 디버깅이 종료됩니다.
디버깅이 아닌 "응용프로그램 런타임 모드" 로 앱을 실행하면 아무 문제없이 다 잘 도작합니다.
MSVC + USB 디버깅 연결하면 저 동작에서 디버깅 연결이 끊어지며 에러가 발생합니다.
저와 비슷한 증상이있나 자주하는 질문이나 Q&A를 찾아보니 똑같은 문제가 예전에도 보입니다.
https://hnsts.co.kr/Community/QnaView/5221
저와 조금 다른점은....
제 프로그램은 팝업 메시지가 뜬 상태이다보니 시리얼 포트 오픈도 안했는데 에러가 뜨면서 종료됩니다.
근데 "런타임 모드"로 실행하면 아무 문제없이 다 잘 동작합니다.
추가 이상 동작으로...
다른 곳에 브레이크 포인트를 걸고 테스트해보면 위와 똑같은 에러가 발생하면서 연결이 종료됩니다. (첨부 이미지 동일)
Windows Mobile Device Center 도 지우고 다시 깔고
프로젝트/솔루션 클린하고 다시 빌드해도 이 문제가 해결되지 않습니다.
관련하여 어떤 방법이 있는지 검토 부탁드립니다.
감사합니다.
=============== 답 변 ===============
안녕하세요.
문의주신 문제의 경우 Form에 많은 UI 컴포넌트가 추가되어 있는 상태에서 코드의 복잡도가 높으면 발생하게 되는 문제입니다.
권장 UI 컴포넌트 개수와 문제가 발생하는 UI 컴포넌트 개수 등에 대한 테스트 결과 및 내용은 공지사항 100번 게시글에서 확인
해보실 수 있습니다. (※ 해당 문제는 SmartX Framework의 문제가 아닌 Visual Studio 2008의 문제)
[링크] : https://www.hnsts.co.kr/Community/NoticeView/100
공지사항 내용을 확인해보신 뒤 아래 2가지 방식의 디버깅 로그를 확인할 수 있는 대체 방법 예시 코드를 확인하셔서 원하시는 방법
으로 디버깅 트레이스를 진행해주시기 바랍니다.
[디버깅 로그를 File로 저장하는 예시 코드]
private int m_iCount = 0;
private void Form1_Load(object sender, EventArgs e)
{
System.Diagnostics.Debug.Listeners.Add(new TextWriterTraceListener("SD Card\\Log.txt"));
}
private void button1_Click(object sender, EventArgs e)
{
Debug.WriteLine("[Debug Message]");
Debug.WriteLine(m_iCount);
m_iCount = 100;
Debug.WriteLine(m_iCount);
}
[SerialPort를 이용한 PC에서의 디버깅 로그를 확인하는 예시 코드]
※ 다만 해당 방법의 경우 PC측 SerialPort 프로그램은 직접 제작하셔야 합니다.
private void Form1_Load(object sender, EventArgs e)
{
System.IO.Ports.SerialPort port = new System.IO.Ports.SerialPort("COM2");
port.BaudRate = 9600;
port.Open();
System.Diagnostics.Debug.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(port.BaseStrea
m));
}
private void button1_Click(object sender, EventArgs e)
{
int iNum = 50;
System.Diagnostics.Debug.WriteLine(iNum + "-Test");
}
[추가 전달사항]
QnA 문의글을 작성하실 때는 작성자에 반드시 업체명을 기재해주시기 바랍니다.
문의글에 업체정보가 기재되어 있지 않아 몇가지 요청드립니다.
1. 업체명 :
2. 담당자명 :
3. 전화번호 :
요청드린 정보들은 개인정보가 포함되어 있기 때문에 app@smartx.co.kr로 메일을 보내주실 때 함께 보내주시면 감사하겠습니다.
감사합니다.