시리얼 통신 속도에 관하여..

cdcmp의 이미지

안녕하세요...

시리얼 하우투 문서를 기반으로 시리얼 통신을 하고 있는데요..

책에서 보니까 리눅스 termios 구조체에서는 통신속도가 최대 38400 까지만 나온다는데요...

115200 통신 속도로는 통신을 할수 없는 건가요??

그리고, 질문이 하나 더 있는데요...

com1,과 com2를 두개를 동시에 이용할때 서로 다른 통신속도로 설정을 할수 있는지요??

예를 들면 com1 = 38400, com2 = 115200...

아직까지 초보 신세를 면치 못하네요....ㅜㅜ

그럼 수고하세요...^^

opt의 이미지

아는게 없지만.... 간략히 적어봅니다.

제 기억에 Serial 포트 제어에 사용되는 UART 8250A 컨트롤러는 예전 (80386 때부턴가요?)에 UART 16450, 16550 컨트롤러로 대체된 것으로 압니다.

8250A나 16450 까지는 38,400 이라는 속도 제한이 있지만, 요새 컴퓨터에 장착되는 컨트롤러는 115,200 까지 충분히 나오는 것으로 압니다.

http://www.die.net/doc/linux/man/man3/termios.3.html의 cfsetospeed() 항목에도 나오듯이 Linux termios 구조체는 38,400의 제한이 없습니다.

그리고 시리얼 통신은 그 특성 상 양방향의 속도가 동일해야 합니다. 최근 칩들이 H/W flow control 을 지원하겠지만, 아마 데이터가 유실되서 재전송 해야한다거나 하는 일이 많아 비효율적일 것 같네요.

제가 알고 있는 범위 내에선 그렇습니다.

----
LUX ET VERITAS | Just for Fun!

divetou의 이미지

당연히 COM1과 COM2의 설정을 다르게 하여 사용할 수 있는 것으로 알고 있습니다.

속도는 위의 분들이 말씀 하셨듯이 115200까지 지원하구요.

허접한 답변이지만 도움이 되었기를 빕니다.

열심히 하세요~ ^^

==============================
꿈꾸는소년

divetou의 이미지

아, 질문을 정확하게 파악을 못해서 덧붙입니다.

오해가 생길 것 같아서요..

만약, 같은 컴퓨터에서 COM1과 COM2를 연결해서 통신하는것을 말씀하시는 거라면 두 포트의 속도는 같게 설정을 하여야 합니다. (테스트 말고는 이렇게 사용할 일이 있나요?)

==============================
꿈꾸는소년

cdcmp의 이미지

답변 감사합니다..^^

제가 가지고 있는 센서가 하나는 최대 38400까지고, 또 다른 하나는 115200까지 지원 되는 거라서요...

하나의 컴퓨터에서 작업을 해야 되는데....

그런데 115200 지원되는 센서는 판매 될때부터 115200으로 고정이 되어 있는 센서입니다...

그래서 전송속도를 38400으로 낮출려면 업체에 보내야 된다네요.

시간이 별로 없는데....

에궁...큰일 났네...ㅡㅡ

divetou의 이미지

아뇨..

제 말은 COM1과 COM2를 서로 연결할때, 그러니까 COM1에서 보낸 정보를 COM2에서 받을 경우에는 속도가 같아야 한다는 말이었습니다.

두개의 장치가 있으면 38400장치를 COM1에, 115200장치를 COM2에 연결하고,
각각의 포트의 설정을 각각의 장치에 맞게하여 사용하시면 될 껍니다. ^^

==============================
꿈꾸는소년

cdcmp의 이미지

아...그렇군요..

감사합니다...^^

그런데 각각 통신속도 설정을 어떻게 하는지...ㅡㅡ

아직 하나의 통신속도로 밖에 안해봐서요...

통신속도 설정하는 코드는 다음과 같이 했습니다.

tcgetattr(fd0,&oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag= (CS8+BAUDRATE+CREAD+CLOCAL+HUPCL);
newtio.c_lflag &= ~ICANON;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_oflag = 0;

멀티 통신 포트 설정은 fd0,fd1,fd2....이런 식으로 해서 설정하면 되는데..

통신 속도 설정하는 것은 다음 코드와 같이 고정되어 있는거 같네요....


#define  BAUDRATE B38400

newtio.c_cflag= (CS8+BAUDRATE+CREAD+CLOCAL+HUPCL);

이것때문에 삽질하기를 수십번.....ㅡㅡ

ydongyol의 이미지


com1은

newtio.c_cflag= (CS8+B38600+CREAD+CLOCAL+HUPCL); 

로 open

com2는

newtio.c_cflag= (CS8+B115200+CREAD+CLOCAL+HUPCL); 

으로 open 하면 되는데요..

시리얼쪽 full source를 올려주세요..
원하시는게 뭔지는 알겠는데 cdcmp님께서 어디까지 하셨는지는 모르겠습니다.

--
Linux강국 KOREA
http://ydongyol.tistory.com/

댓글 달기

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