2009-06-15 2 views
3

몇 가지 이유로 Windows Mobile 스마트 폰 (WM 버전 6.1이 설치된 HTC s740)의 내부 모뎀에 액세스 할 수 있어야합니다. 필자가 원하는 것은 AT 명령을주기 위해 직렬 포트처럼 액세스 할 수 있어야한다는 것입니다.Windows Mobile에서 모뎀에 직접 액세스

TAPI Line 인터페이스와 lineGetID()를 사용하여 ReadFile()/WriteFile()을 수행 할 수있는 "핸들"을 얻는 코드가 있습니다. 슬프게도 나는 그것을 작동시키지 못했다.

는 내가 현재 할 것은 : lineInitializeEx와

  1. 초기화 TAPI() lineOpen (와

  2. 를 열고 선) 가능한 각 장치를 통해

  3. 반복 처리와 정보 입수. 현재 "UNIMODEM"/ "Hayes compatible on COM1"장치를 선택하고 있습니다. 하지만 아마도 "TAPI 셀룰러 서비스"/ "셀룰러 회선"을 대신 선택해야합니까? 나는 동일한 결과를 가진 "셀룰러 라인"장치를 시도했다.

  4. 선택한 장치에서 lineGetID()를 사용하여 핸들을 가져옵니다.

  5. WriteFile ("AT \ r")을 수행 한 다음 ReadFile()을 직접 수행하면 실제로 액세스 한 모뎀 인 경우 다시 "확인"할 수 있습니다.

  6. 은 ... 작동하고 짜증하지 않는

을 실현하지만 이것은 지금까지 더 - 이동 없었다.

누구나 어떻게 할 수 있습니까?

Windows Mobile 6 SDK의 기본 WIN32 C++에서이 작업을 수행하고 있습니다.

업데이트 : 지금까지 RIL을 사용하여 두 대의 전화 사이에서 데이터 연결을 관리 했으므로 직렬 포트 핸들을 통해 읽고 쓸 수 있습니다. 하지만 AT 명령을 보내려면 모뎀과 직접 상호 작용할 수 있기를 원합니다. 그래서, 내가 시작하는 현상금은 AT 명령을주기 위해 모뎀에 직접 액세스하는 것에 대한 우려 만합니다. 필자가 조사한 바에 따르면, 이전 버전의 Windows Mobile (COM2 및/또는 COM9를 열고 RIL을 죽이는 등)에서 가능했지만 아직 WM6에서 작동하는 코드는 보지 못했습니다.

답변

0

lineGetID의 핸들을 WriteFile/ReadFile 기능과 함께 사용할 수 있는지 잘 모르겠습니다. 이들은 (아마) TAPI와 함께 사용할 수없는 저수준 함수입니다.

CreateFile으로 COM 포트를 열려고 할 때 핸들을 얻은 다음 WriteFileReadFile 기능을 사용하십시오. 이 기술을 설명하는 MSDN (Serial Communications in Win32)의 오래된 고전 문서가 있습니다.

그러나 Windows Mobile 프로그래밍에 익숙하지 않아 잘 작동하는지 확신 할 수 없습니다.

+0

lineGetID()는 핸들을 반환합니다. 읽고 쓰지 않으면 어떻게해야합니까? CreateFile을 사용하면 멋지 겠지만, 전 세계의 모든 Windows Mobile 장치가 모뎀에 동일한 COM 포트를 사용하는지 확인해야합니다. –

+0

lineGetID에 대한 MSDN의 페이지에서 : "lineGetID 함수는 선택된 라인, 주소 또는 호출과 관련된 지정된 장치 클래스의 장치 식별자를 반환합니다". 나를 위해, 그것은 손잡이처럼 보이지 않는다. 모뎀 포트에 대해 말하면 적절한 포트를 찾아야합니다. COM1에서 시작하는 모든 COM 포트에서 CreateFile (OPEN_EXISTING 플래그 포함)을 호출하려고합니다. 열리면 "AT"를 보내고 응답을 기다립니다. 집에 온다면 다음 포트를 시도하지 마세요. 아마도이 링크 (http://forum.sysinternals.com/forum_posts.asp?TID=4544)가 도움이 될 것입니다. – Wacek

+0

여기에 설명 된대로 열려있는 포트에 대한 핸들을 가져올 수 있습니다. http://msdn.microsoft.com/en-us/library/ms734853(VS.85).aspx –

1

아마도 그렇게 할 수 없습니다. 라디오에 대한 인터페이스가 COM 포트 일 필요는 없습니다. AT 명령은 종종 에뮬레이트됩니다. COM 포트를 처리 할 수 ​​있다고해도 내장 된 연결 관리자가 수행하는 활동과 어떻게 동기화 할 것입니까?