[급]시리얼 통신하는데 송신이 안되네요?
리눅스에서 장비와 통신을 하기위해 시리얼 통신 프로그램을 만들어야해서
여기저기 자료와 샘플을 구해서 실행하는데 수신은 되도 송신을 게속 안되네요.
아시는 분들은 꼭 좀 해결 방법을 알려주시면 정말 감사하겠습니다.
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#define BAUDRATE B9600
#define DEVICE "/dev/ttyS0"
int fd,res,i;
struct termios oldtio, newtio;
char buf[15]={0};
int main(void)
{
fd=open(DEVICE,O_RDWR | O_NOCTTY );
if(fd<0)
{
printf("Comm Port Open failed!\n");
exit(-1);
}
tcgetattr(fd,&oldtio);
bzero(&newtio,sizeof(newtio));
newtio.c_oflag = OPOST | OCRNL;
newtio.c_lflag = 0;
//newtio.c_iflag = ICRNL | IGNPAR;
newtio.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
tcsetattr(fd,TCSANOW,&newtio);
send_command[0]=0x92;
send_command[1]=0x10;
res=write(fd,"test\n",4);
res=read(fd,buf,11);
buf[res]=0;
if(res>0)
{
printf("RECV: ");
}
close(fd);
printf("Close\n");
return 0;
}
[code:1] bzero(&newtio,sizeof&
저라면 이거 보다는 oldtio를 카피해서 쓰겠습니다.
그리고 장비와 통신을 하실 생각이시라면 man을 보셔서 이놈을 한번 써보시길 권합니다.
canonical 모드로 테스트하실 생각이시라면
4를 5로 하셔야 할 것 같고요.
이미 보셨을 수도 있지만,
http://wiki.kldp.org/wiki.php/LinuxdocSgml/Serial-Programming-HOWTO
이 문서를 한번 보실것도 권해 드립니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
역시 안되는군요
답변 감사합니다.
말씀하신 몇가지 부분을 수정하고 했지만 여전히 송신이 안되는군요.
혹시 샘플 소스를 가지고 있으신분 게시면 좀 주실 수 없는지요.
솔직히 급해서요.
감사합니다.
차카게 살자!!!
[code:1] open_flags = O_RDWR | O_NO
예전에 짠 코드에 보니까 초기화 부분이 이렇게 돼 있군요.
그리고, 장비로의 송신 여부를 먼저 확인해 보시는게 필요할 것 같은데요.
쉘에 익숙하지 않으시다면 아래와 같이 해보시면
원하시는 테스트를 수행하실 수 있습니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
감사합니다. (_ _)
감사합니다.
알려주신대로 소스도 수정했구요.
그리고 PC에 약간의 문제도 있었습니다.
다시 한번 감사 드립니다.
차카게 살자!!!
댓글 달기