시리얼프로그램에 대한 질문이있습니다.!!

제갈아찌의 이미지

제가 가상 gps데이타를 수신받아서 간단하게 저장하는 소스를
짜고 있는데요.. (속도 4800bps)

일단 테스트용으로 /dev/ttyS0를 오픈해서 들어오는 데이타를
read 함수로 배열에 저장한뒤 간단하게 출력함수를 이용해서
저장한 값을 찍어봤는데요
실행할때만다 값이 깨졌다가 안깨졌다가 이렇게 나오네요.

minicom에서 출력되는 문자처럼 해당하는 배열에 넣고 싶은데.. 혹시 연속적으로 수신되어지는 데이타를 저장하기 위해서
는 어떤 방식으로 구현하는지 좀 알고싶습니다. 해당하는 소스나
관련 자료가지고 계신분이 있다면 좀 도와주세요..

그럼 좋은하루 되세요

File attachments: 
첨부파일 크기
Package icon GPS.zip2.54 KB
비행소년의 이미지

그 가상 데이터가 NMEA 타입인지 아닌지 모르겠지만

제가 NMEA방식으로 리시버를 만들었을 때에는

귀찮아서 strtok함수만 썼습니다.

높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ

익명 사용자의 이미지

감사합니다. !! 또 질문이
nmea 포맷해서 필요한 부분만 가져다 쓰려고하는데요..
strtok 함수를 사용해서 부분필드는 케치가 되는거 같은데..
실시간으로 계속 들어오는 데이타를 일정하게 어떻게 계속
받을 수 있나요..?

괜찮으시다면 혹시 리시버 받는 부분의 소스를 좀 공개해주실수
있나요 ...
아니면 nmea 부분을 처리하는 방식의 문서라도 좀 알려주시면
감사하겠습니다.
좋은 하루되세요 ~~!

비행소년의 이미지

LONG CGPS_TestDlg::OnReceiveData(UINT, LONG)
{
	char* t_RawData;
	char* t_temp;
	int i = 0;

	t_RawData = new char[255];
	t_temp = new char[255];

	memset(t_RawData, 0, sizeof(char) * 255);
	memset(t_temp, 0, sizeof(char) * 255);

	sprintf(t_RawData,"%s", m_Comm.abIn);
	sprintf(m_RawData,"%s%s",m_RawData,t_RawData);

#if (PRINT_DATA)
	TRACE1("%s", t_RawData);
#endif

	// $찾기
	do{
		if(*(m_RawData + i++) == '$'){
			memcpy( t_RawData , m_RawData , sizeof(char) * strlen(m_RawData) );
			memcpy( m_RawData , t_RawData + (i-1) , sizeof(char) * (strlen(m_RawData) - (i-1)) );
			break;
		}
	}while(i < (int)(strlen(m_RawData)-1));

	// 0x0d 0x0a 찾기
	i=0;
	do{
		if(*(m_RawData + i++) == 0x0d){
			if(*(m_RawData + i++) == 0x0a){
				memset(t_RawData,0,sizeof(char) * 255);
				memcpy(t_RawData , m_RawData, sizeof(char) * (i -2));
				memcpy(t_temp , m_RawData + i, sizeof(char) * i);
				memset(m_RawData,0,sizeof(char) * 255);
				memcpy(m_RawData , t_temp, sizeof(char) * strlen(t_temp));
				// 데이터 넘기기
				m_GPS.PutRawData(t_RawData);
			}
		}
	}while(i < (int)(strlen(m_RawData)-1));

	AppendGPSData();

	delete [] t_RawData;
	delete [] t_temp;

	return 0;
}

이게 Com 포트에서 데이터를 받아 와서 GPS 클래스로 데이터를 넘겨 주는 부분입니다.
아.. VC7에서 컴파일 했던 겁니다. 리눅스에서는 훔.. 약간은 수정을 해야 겠지요.

그리고 NMEA 부분 해석 하는 부분은 제가 필요한 부분 까지만 해서, 뭔가 허전 할겁니다. :wink:

댓글 첨부 파일: 
첨부파일 크기
Package icon 0바이트

높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ

익명 사용자의 이미지

위에 있는 소스가 실시간으로 계속 넘어오는 데이타를 바로바로
처리하는건가요..!!
아니면 데이타를 저장해서 파일로 넘겨주는건가요..!!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.