[질문] RS-232 통신에 관한 질문입니다.
목화
소프트웨어개발과를 이번년도에 졸업하면서 바로 시스템 프로그램쪽으로 취직이 되서 통신 프로그래을 짜다가 처음부터 막혀서
이렇게 사이트에 가입을 하고 질문을 올리게 되었습니다.
사회 초년병이고, 완전 프로그램도 학교에서 그냥 예제 프로그램만 짜다가 사회에 나온지라 아는것도 없고, 답답할 뿐입니다.
많이 가르켜 주십시요.참고로 프로그램은 데브피아에 올라온 프로그램을 가지고 응용해서 짜고 있는데,
데브피아에 질문을 올려도, 그 프로그램이 1년전에 올라온 것이라 그런지..답변이 없더군요..
첨부파일로 데브피아에 올라온 자료를 올렸습니다.
이것을 이용하여 파워서플라이(com1)와 통신을 해서 파워서플라이를 제어하는 프로그램을 짜야 됩니다.
질문내용은..
여기 소스 중에받은 데이터를8비트씩 써주게 되어 있더라고요.. 근데 8비트씩 끊어 써준다는 코딩이 안되어 있어요.
저는 파워서플라이 idn이랑 버젼 같은거 받아올 때 한번에 써줘야 되는데, 그 부분을 모르겠더라고요..
소스는 요 부분에서 써주는 부분 입니다.
long cserialcomdlg::oncommunication(wparam wparam, lparam lparam)
{
updatedata(true);//받는 데이터 타입을 알기 위해
cstring str = ;
cstring result;
cstring change;
char size[128];
byte abyte; //데이터를 저장할 변수
int isize = (m_comuport.m_queueread).getsize(); //포트로 들어온 데이터 갯수
//setcommstate에 설정된 내용 때문에 거의 8개씩 들어옴
m_isize = isize;//받은 데이터의 총 갯수를 설정창에 보여주기 위해
wsprintf(size, receive %d characters\r\n,m_isize);
if(isize != 0)//받은 갯수가 0이 아니면 화면에 들어온 갯수를 설정창에 출력
{
change.format(receive data : %d \r\n,isize);
m_editcontrol.setsel(-1,0);
m_editcontrol.replacesel(change);
}
for(int i = 0 ; i isize; i++)//들어온 갯수 만큼 데이터를 읽어 와 화면에 보여줌
{
(m_comuport.m_queueread).getbyte(&abyte);//큐에서 데이터 한개를 읽어옴
str.format(%c, abyte);
result+= str;
break;
}
m_editreceive.setsel(-1,0);
m_editreceive.replacesel(result);//화면에 받은 데이터 보여줌
str=a123a;
m_idn.replacesel(str);
return 1;
}그리고, operation 이라는 부분에 받은 캐릭터를 표시해 주는데...받은 데이터를 누적해서 표시해 주고,
버퍼가 꽉차면 더 이상 못 받게 되어 있는데.. 그 부분도 못 찾겠어요.혹시 rs-232통신의 경험이 있으신 분은 불쌍한 사회 초년생 구해주신다 생각하시고, 꼭 답변 해주세요.
제가 잘 몰라서 그런지..질문에서 표현이 많이 부족한거 같은데.. 양해해 주세요.
-
딥자두
데브피아에 보면.. 돈을 걸고. 질문하는게 있더라구요. 정급하시면.. 그거 한번 해보세요. 님이 올린거는 직접 디버깅하면서.. 쫓아가면서 해결해야 하는데.. 솔직히.. 누가 자신 시간 쪼개서. 일일히 확인해보겠어요.. ^^;