2011-04-07 4 views
0

VB에서. NET을 사용하여 SMS 프로젝트를하고 직렬 포트를 통해 내 GSM 모뎀에 연결합니다. 모든 연결과 모든 것이 훌륭하게 작동했으며 SMS를 보내고받을 수 있습니다. 그러면 문제가 생깁니다. 160 자 이상의 긴 SMS를 보내야합니다. 나는 약간의 연구를 읽고 수행했고 나는 pdu와 udh를 사용할 필요가 있음을 안다. 나는 pdu 패킷을 약간 이해할 수 있었지만 여전히 그 부분에 대해서는 혼란 스럽다.VB에서. NET을 사용하여 SMS 프로젝트에 도움이 필요

누구든지 간단히 concatented sms (긴 SMS)를 수행하는 정확한 방법을 설명 할 수 있습니까?

또 다른 문제는 어떻게 pdu gsm 7 비트 데이터로 데이터를 인코딩하기 위해 VB를 사용할 수 있습니까? 내장 된 함수가 있습니까? 아니면 직접 작성해야합니까?

답변

1

이것은 연결된 SMS 및 GSM 인코딩에 도움이 될 수 있지만 GSM 모뎀을 사용 해 본 적이 없으므로 다른 사람이 갭을 메울 수 있기를 바랍니다.

. NET 문자열을 GSM 인코딩 문자열로 변환하려면 도움이 될 on Github 오픈 소스 라이브러리를 작성했습니다. 그러나 필요한 7 비트 패킹을 수행하지 않습니다.

긴 메시지를 지원하려면 각 메시지가 시작할 때 사용자 데이터 헤더를 추가해야합니다.

먼저 153 개의 GSM (7 비트) 바이트 길이의 여러 부분으로 메시지를 분할합니다. {2 바이트 걸리는 확장 문자는 전체 목록을 보려면 GSM character set을 참조하십시오.

그런 다음 연결을 허용하는 UDH 바이트를 처음에 추가하십시오. 두 부분으로 된 메시지를 위해 아래 예를 넣었습니다.

First SMS: 05 00 03 A6 02 01 .. bytes that make up the first part text.. 
Second SMS: 05 00 03 A6 02 02 .. bytes that make up the second part text.. 

Bytes Description 
05  (UDHL) Length of the UDH. So the following five bytes are UDH 
00  (IEI) This identifier says this is a concatenated message 
03  (IEDL) It says that next 3 bytes are the data for this IE. 
A6  Reference number of this concatenated message. 
02  There are two parts to this concatenated message. 
01or02 This indicates whether the SMS is the first or second part. 

UHDL = 유저 데이터 헤더 길이

IEI = 정보 요소 식별자

IEDL = 정보 요소 데이터 길이

(A 연결된 메시지 헤더 길이는 항상 3) (00 연접 메시지이다)

참조 번호의 경우 가장 쉬운 방법은 0-255 범위의 임의 숫자를 지정하는 것입니다. 메시지의 각 부분마다 동일한 참조 번호가 있어야합니다.