시리얼 프로그램에서 write문제

demian의 이미지

안녕하세요...
시리얼 프로그램에서 write부분에 궁금한 것이 있어 질문드립니다.
write가 안되는것이 아니구 잘 되는데요..
문제는 write할 device가 꺼져있거나 연결을 안해놨을때도
write는 성공한 걸로 나와서 문제가 됩니다.
write의 리턴값이 쓴값만큼 리턴이 되더군요.. device랑은
연결조차 안했는데...
device가 연결이 안되어 있으면 write에서 실패하게 하려면
어떻게 해야 하는지 알려주시면 감사하겠습니다.

bugiii의 이미지

시리얼의 경우 다양한 형태로 외부 디바이스와 연결이 되는데 각종 연결 선이나 상대편의 수신 상태 등을 알 수 있는 신호까지 연결이 되어 있다면, 시리얼 제어 함수를 호출해서 상태를 보고 데이터를 보낼 수 있을 것입니다만, 보통은 GND, Tx, Rx 정도만 꼬아서 연결하기 때문에 기기가 연결되어 있는지를 바로 알 수 있는 방법은 없습니다.

결국 그것은 TCP 가 하는 역할과 비슷한 패킷의 에러 유무, ACK, 시간만료 등을 적용하는 상위 전송 라이브러리나 어플리케이션에서 처리해주셔야 합니다.

지리즈의 이미지

디바이스가 응답을 하지 않는 한
시리얼(rs232)만으로는 근본적으로는 알 수 없습니다.

그래서 보통은
디바이스가 응답을 하는 경우는
디바이스의 존재 유무를 확인하는 절차를 반드시 거치죠.

가장 간단한 명령,
이를테면 INFO, *IDN?, STAT과 같이
디바이스의 정보를 질의하는 명령을
사용해서 통신가능여부를 확인합니다.
(디바이스에 따라 달라지겠지만요)

만약 디바이스가 응답을 하지 않는다면,
시리얼만으로는 방법이 없다고 보시면 됩니다.

There is no spoon. Neo from the Matrix 1999.

deathrow의 이미지

사용하시는 시스템 환경은 정확히 모르겠으나...
아마 기본적으로 시리얼 Write를 하면, TX buffer에 저장이 됩니다.
그리고 Serial Driver상에서 TX Interrrupt 발생에 따라서 TX Buffer에서
데이타를 하나씩 보내주는 방식으로 동작합니다.

따라서 사용자는 TX Buffer에 정확히 들어간것만 확인이 가능하죠..

이것을 해결하려면...
(다른 방법이 있는줄은 모르겠지만.)
Serial Driver를 수정하면 됩니다.
Serial Driver에서 TX Buffer의 내용을 모두 보내기 전에는 Return을 하지 않도록 하면 되죠...(그러나...다른 문제점들이 발생가능합니다...효율성도 떨어지구요.)

==============================
= Crazy Fighter : Kill Them All =
==============================

댓글 달기

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