직렬 포트를 여는 것은 무엇을합니까?


4

표준 PC 직렬 포트를 열 때 전기적인 관점에서 (즉, 핀의 전압은 어떻게됩니까?)

예를 들어, 장치를 제어하는 ​​고대 VB6 프로그램은 토글을 유지 관리하도록되어 있습니다. .PortOpen 일부 TTL을 제어합니다. 연결은 단지 2 개의 핀만을 사용했기 때문에 (나쁜 솔더가 떨어져 나갔다), 그래서 어떤 핀을 솔더링합니까?

유일 라벨 / 문서는 핀 7과 9를 말하며, 0V와 5V를 괄호 안에 나타내지 만, .PortOpen 정말로 RI와 RTS 사이에 5V를 넣으시겠습니까?

포스트 스크립트로서, 이것은 설정에 관한 가장 이상한 것이 아닙니다. 위에서 언급 한 TTL은 BNC에서 DB9 (!)를 통해 하나의 핀만 사용하여 계측기에 연결됩니다. BNC 차폐가 GND 핀에 연결되어 있지 않기 때문에 공통 접지에 대한 가정이 있었다고 생각하십니까? 연결은 계측기의 '풋 페달 (foot pedal)'핀에 대한 것이고 원격으로 장치를 트리거하는 방법이었습니다.

최신 정보

에 따르면 이 페이지 , DTR 및 RTS 핀 양철통 항구가 열릴 때 높이 가십시오. 그렇게 구성된 경우 포트가 닫히면 나중에 포트가 낮아집니다.

DTR 및 RTS가 활성화되지 않은 경우 포트를 열면 모두 낮게 설정되고 낮게 유지되어야합니다.


TTL? 관통 렌즈? 트랜지스터 - 트랜지스터 - 논리?

후자의. 직렬 포트를 열거 나 닫으면 플립 플롭으로 열고 닫을 수 있습니다.
reve_etrange

@reve_etrange : 직렬 포트가 TTL 레벨이 아니기 때문에 묻습니다. 따라서 직접 연결할 수 없습니다. 네가 뭔가 다른 것을 의미한다고 생각 했어.

@Federico Russo, 내 임베디드 어플리케이션 및 디버깅에서 드라이버없이 TTL 레벨 UARTS를 자주 사용합니다. 모든 사람이이 중 하나를 가지고 있지는 않습니까? ftdichip.com/Products/Cables/USBTTLSerial.htm ?
kenny

@ 켄니 : OP는 그가 PC에 있다고 말했고 직렬 포트는 -12V에서 + 12V로 바뀐다.

답변:


1

나는 @Stevenvh 대답에 동의하지 않는다. 특히 윈도우 용. .NET 또는 MSCOMM OCX에서 말하는 "포트 열기"및 "포트 닫기"API 호출은 DTR 및 RTS 행을 변경하거나 해당 상태를 전기적으로 변경하지 않도록합니다.

포트를 열 때 DTR은 포트를 열기 전에 "true"로 설정된 경우 부울 속성 DTREnable에 해당하는 전기 상태로 설정됩니다. 기본적으로 "false"로 유지됩니다. 사용자가 DTREnable을 설정하지 않으면 "open port"DTR 라인은 포트를 열기 전에 "false"상태를 유지합니다.

행 이름 "RTS"및 특성 "RTSEnable"에 대한 동일한 논리 및 기본값. 케이블의 다른쪽에있는 통신 파티와 관련된 전선의 양 (hadware 핸드 셰이크 대 소프트웨어 핸드 셰이크 대 핸드 셰이크 없음)에 따라 포트를 열기 전에 "RTSEnable"을 선택합니다.

  • 데이터 캐리어 감지 - 입력 됨, 효과 없음
  • 수신 데이터 - 입력 됨, 효과 없음
  • 전송 데이터 - 출력되며 'MARK'대신 'SPACE'상태로 유지됩니다.
  • 데이터 터미널 준비 - "포트 열기"전에 속성이 설정된 경우 "TRUE"로 변경됩니다.
  • 신호 접지 - 변화 없음
  • 데이터 세트 준비 - 입력 됨, 효과 없음
  • 전송 요청 - "포트 열기"전에 RTSEnable 속성이 설정된 경우 "TRUE"로 변경됩니다.
  • 지우기 - 입력, 효과 없음
  • 링 표시기 - 입력 됨, 효과 없음

반대로, 포트가 닫혀있을 때. DTR 및 RTS 핀은 "FALSE"상태로 변경되거나 개방시 속성을 통해 설정되지 않은 경우 "FALSE"상태를 유지합니다.


DTR과 RTS 이외의 다른 핀은 어떨까요?
reve_etrange

PC의 출력 데이터 핀은 "MARK"상태가 아닌 "SPACE"상태를 유지합니다. 다른 핀은 입력 핀이므로 변경되지 않습니다 (링 표시기, 반송파 감지, Clear To Send, 데이터 입력).

굉장해, 고마워! "stay"SPACE / MARK를 사용하면 포트가 닫히면 장치 종속적 인 정의되지 않은 상태로 되돌아갑니다.
reve_etrange

예. 그러나 SPACE / MARK는 "정의 된"것으로 취급 될 수 있습니다. 예측 가능한 전압을 의미합니다. Sya는 TTL "SPACE"가 "FALSE", 0 볼트 또는 MARK가 "TRUE"인 경우 +5 Volts입니다. 그러나 RS-232에서 SPACE는 + 12V이고 MARK는 -12V입니다.

" 전송 데이터 - 출력되며 'MARK'대신 'SPACE'상태로 유지됩니다. "- 유휴 RS-232 데이터 라인은 마킹 음의 전압에서.
sawdust

8

포트를 여는 것은 전기적인 측면에서 일을하지 않습니다. 포트에서 그 순간부터 응용 프로그램에 할당된다는 것을 OS에 알려주는 것입니다. OS는 사용자가 포트를 열어 놓은 상태에서 다른 앱이 포트에 액세스하는 것을 거부하고 앱이 액세스하도록 허용합니다.


그건 의미가 있습니다. 직렬 통신과 Windows 프로그래밍 측면 모두 내 전문 지식 밖에 있습니다.
reve_etrange

그리고 일부 OS에서는 여전히 공유 할 수 있지만 프로그래머의 의도에 따라 결정이 잘못되었을 수도 있습니다.
kenny

포트가 열렸을 때 다른 일이 일어날 수 있다는 것이 확실하기 때문에 나는 대답을 표시하지 않았다. 롤러 코스터 죄송합니다.
reve_etrange

이것이 비 Windows 운영 체제에서의 동작입니까?
reve_etrange

6

직렬 포트를 열면 모든 핀이 정의 된 상태가됩니다 (어떤 핸드 셰이크 라인이 기본적으로 표시 또는 간격을 지정했는지는 기억이 나지 않지만 표준입니다). 직렬 포트가 열릴 때까지 선의 상태는 정의되지 않을 수 있습니다. Microsoft가 사물을 변경하지 않는 한, 직렬 포트를 닫으면 라인이 닫히기 전의 상태로 남을 것입니다. 따라서 마지막으로 사용한 프로그램이 이상한 상태로 남겨두면 다음에 열 때까지 그 상태로 남아있게됩니다. 또한 Windows에서이 문제가 여전히 문제인지 여부는 알 수 없지만 DOS에서는 전원을 켤 때 직렬 포트를 구피 상태로 설정하는 PC가있었습니다. 적어도 한 브랜드의 PC는 직렬 포트를 설정하여 달리 지시 될 때까지 계속 긴 휴식 시간을 전송합니다. 이것은 공급 업체의 소프트웨어가 시작되기 전에 특정 임베디드 컨트롤러에 혼란을 가져 오기 때문에 기억에 남습니다.


구성에 따라 RTS 및 DTR을 낮게 / 높게 설정하는 것 외에 다른 작업을 수행합니까? 나. 모든 핀을 열 때 낮게 설정하고, 일부는 계속해서 전송합니까?
reve_etrange
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.