나는 SerialPort를 통해 SMS 메시지를 보내는 작은 프로그램을 가지고있다. 7-8 일 동안 계속 작동하여 하루에 수백 개의 메시지를 보냅니다. 그러나 때로는 메시지를 보낼 때 중단되며 하드웨어 리셋만으로 해결할 수 있습니다.직렬 포트에서 SMS를 보내면 하드웨어가 멈추는 경우가 있습니까?
모뎀이 메시지 ("> "
문자열 표시)를 기다리고 메시지를 보냈을 때 문제가 발생합니다. 모뎀이 CTRL+Z (ASCII#26)
문자를 수신하면 "OK"
을 다시 보내야합니다. 하지만 나는이 응답을 결코 받아들이지 않습니다. 그때부터 모든 쓰기 시도는 System.TimeoutException: The write timed out
으로 끝납니다. 예외.
나는 예외를 잡을 수 있지만 하드웨어 리셋을 제외하고는 아무 것도 할 수 없다. 첫 번째 타임 아웃 예외에서 직렬 포트가 작동하지 않습니다. 하이퍼 터미널의 경우에도 작동하지 않습니다. 나는 2 개의 다른 모뎀을 시도 할 기회를 가졌지 만, 둘 다 똑같은 함정을 내놓았다. (다른 모뎀이지만 같은 컴퓨터입니다.) 다른 컴퓨터에서 환경 같은 환경에서 10 일 동안 테스트 할 수있는 방법이 없습니다.
직렬 모니터 소프트웨어를 사용했고 직렬 포트 (또는 모뎀)가 쓰기 타임 아웃 오류를 다시 전송했음을 나타 냈습니다. 직렬 포트를 초기화 할 때 WriteTimeout 속성을 100 (ms)으로 설정합니다. 모뎀 제조업체에 따라 하드웨어 핸드 셰이 킹을 사용해야합니다.
간단한 텍스트 메시지 만 전송합니다 (PDU는없고 문자는 160 자 이하).
이미 this 스레드가 발견되어 쓰기 제한 시간 및 하드웨어 핸드 셰이 킹에 대해 이야기합니다. 쓰기 타임 아웃 값을 높일 수는 있지만이 문제가 종종 발생하는 이유를 알고 싶습니다. 그리고 이것이 내 문제인지 전혀 알고 싶습니다 ...
나는 C# 4.0을 사용하고 있으며 프로그램은 Windows 2008 64 비트 서버에서 실행됩니다.
아이디어가 있으십니까? 데니스에서 힌트에 따라
는UPDATE , 우리는 해결책을 발견했다. 워치 독 부분은 시간 초과 예외를 감지하는 자체 소프트웨어입니다. 이 경우 프로그램은 특수한 하드웨어에 명령을 보내 모뎀의 전원을 전환합니다. 처음에는 특수 하드웨어가 릴레이 카드 였지만 RS-232 또는 USB 또는 이더넷을 통해 제어 할 수있는 특수 연장 코드를 발견했습니다. (플러그를 켰다 껐다.)
아무거나 연결하면 임의성이 발생할 수 있습니다. 응용 프로그램이 고정되지 않는 스레드에 통신을 넣으십시오. – BugFinder
@BugFinder 이미 오류가 발생하여 내 앱이 멈추지 않습니다. 그것은 SMS 메시지를 보내 요청을 받고 멋지게 저장합니다. 그러나 SerialPort 또는 모뎀이 동결되어 전송할 수 없습니다. – AntiTalent
이 질문이 어떻게 주제와 관련이 있는지 모르겠습니다. 프로그램에 문제가있어서 소프트웨어 솔루션을 찾았습니다. 하드웨어를 사용하여 사용할 수있는 방법이 하나도 없었습니다. 어디서 이런 질문을해야합니까? – AntiTalent