라즈베리? UART(TX/RX) < - > TCP(TX/RX) 프로그램 구조 문의

letpump의 이미지

순수 마이콤 엔지니어라서 이번 리눅스 쪽은 처음 접하여 구조 설계 문의드립니다.

interface : UART <-> TCP 구조입니다.

기능 내용

- TCP 연결을 하고 서버 단과 데이터를 송수신

UART(일정주기 수신) -> TCP 클라이언트 모드 send 데이터 후 연결 해제

TCP 서버(데이터 요청, 변경) -> UART(전송)

문의 1)
TCP 클라이언트 모드로 서버에 데이터 전송 후 연결을 해제 하고 대기하는데

TCP서버가 클라이언트에 데이터를 요청 할 수가 있는가?

제 생각) TCP 클라이언트 모드에서 데이터를 send하고 연결을 해제 하고 서버 모드 소켓 실행 send시 소켓off
- 같은 포트를 이용해야 하므로 서로 번갈아 가면서 실행.

문의 2)
프로그램 구조문의 드립니다.

1. UART rev thread
2. TCP client thread
3. TCP server thread

이렇게 3개의 쓰레드를 만들어서 한 프로그램 안에 구현.. 현재 지식으로 이정도가 최선으로 보입니다.

다른 방법으로는
1. uart 데몬
2. tcp client 데몬
3. tcp server 데몬

이렇게 3개의 프로그램을 별도 개발해서 데몬 on/off 하면서 하면될것 같은데

데몬과 데몬간 데이터를 전달해야하는데 어떤식으로 전달 하면 될것인지 키워드 부탁드립니다.

선배님 분들 답변 감사합니다.

라스코니의 이미지

이런 구조는 중간에 ring (circular) buffer를 두면 잘 되더라구요.

Anti-Lock의 이미지

왜 TCP커넥션을 연결하고/닫고를 반복해야하는지 모르겠지만요...

클라이언트는 UART를 일정시간 수신한 뒤, 서버에 접속하면,
서버는 클라이언트에게 넘겨줄 데이터가 있다고 알려주고 데이터를 전송합니다. 없으면 없다고 알려주고요.
클라이언트는 '서버가 알려주는' 것을 확인하고 확인된만큼 실제 데이터를 읽습니다.
이제 클라이언트는 데이터를 send하고 소켓을 닫습니다.

이 시나리오에서는 서버가 데이터가 있음을 클라이언트에게 미리 알려줄 수 없고, 일정시간 이후 클라이언트가 서버에 접속할때까지 기다려야 합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.