WAVECOM Fastrack M1256

Một phần của tài liệu công nghệ SMS và xây dựng hệ thống tra cứu điểm qua mạng điện thoại di động (Trang 36 - 107)

Hình 1.12. Thiết b WAVECOM Fastrack M1256

WAVECOM Fastrack M1256 là modem ngoài 2 băng tần GSM 900/1800 Mhz. Được thiết kế cho các ứng dụng dữ liệu, SMS, fax và thoại.

• Tương thích đầu đủ với các đặc tả của GSM Phase 2+.

• Hỗ trợ SMS định dạng Text, PDU, Point-to-Point (MT/MO) và gửi tin nhắn quảng bá (broadcast), hỗ trợ UCS2, hỗ trợ GPRS.

• Giao diện kết nối tuần tự RS-232.

• Điều khiển từ xa với tập lệnh AT GSM 07.07 và GSM 07.05. • Tốc độ truyền qua cổng tuần tự: 300 đến 115200 bit/s.

Chương II

Nghiên cứu kỹ thuật lập trình giao tiếp với thiết bị di động

II.1. Định dạng PDU và cách gửi nhận tin nhắn:

Có 2 cách để gửi và nhận tin nhắn SMS: tin nhắn dạng Text và dạng PDU. Dạng text (không được hỗ trợ trong một vài điện thoại) chỉ là một trường hợp mã hoá các dòng bit của dạng PDU. Có nhiều bộ ký tự và nhiều cách thức mã hóa được sử dụng khi gửi hoặc nhận tin nhắn. Các tùy chọn thông thường nhất là: "PCCP437", "PCDN", "8859-1", "IRA" và "GSM". Khi đọc thông điệp trong một ứng dụng chạy trên máy tính chúng ta phải dùng câu lệnh AT+CSCS (xem mục II.3 để biết chi tiết về tập lệnh AT) để lựa chọn bộ ký tự thích hợp. Khi đọc thông điệp trên điện thoại, nó sẽ tự lựa chọn cách thức mã hóa thích hợp. Một ứng dụng có khả năng đọc thông điệp SMS có thể dùng dạng Text hoặc dạng PDU. Nếu dạng Text được dùng thì ứng dụng sẽ bị giới hạn bởi tập các tùy chọn mã hóa đã được thiết lập sẵn. Trong một vài trường hợp thì điều đó không đủ để đáp ứng một cách linh hoạt. Nếu dạng PDU được dùng thì bất kỳ cách thức mã hóa nào cũng có thể được dùng.

II.1.1. Nhận tin nhắn dưới dạng PDU:

(Trong phần này chỉ trình bày những phần cơ bản nhất về cách nhận tin nhắn dưới dạng PDU, để tìm hiểu chi tiết xem phụ lục D.1)

Chuỗi PDU không chỉ chứa đựng nội dung tin nhắn mà còn chứa nhiều thông tin kèm theo về người gửi như: trung tâm dịch vụ của người gửi, thời gian gửi, … Tất cả chúng đều ở trong cùng dạng hoặc là các Octet

hexa-decimal (mỗi Octet 8 bit được biểu diễn bằng 2 ký số thập lục phân)

hoặc là các Octet decimal-semi (mỗi Octet 8 bit được biểu diễn bằng 2 ký số thập phân).

Ví dụ chuỗi sau là chuỗi đã nhận được trong điện thoại Nokia 6610 khi gửi một tin nhắn chứa chuỗi “hellohello” từ một điện thoại khác có số “0919037951”:

07917283010010F5040B814819097359F10000993092516195800AE8329BFD4697D9EC37

Dãy các Octet nhận được bao gồm 3 phần: một Octet khởi đầu cho biết chiều dài của phần thông tin về SMSC (“07”), thông tin về SMSC ("917283010010F5") và phần cuối cùng là SMS-DELIVER (phần này đã được đặc tả bởi ETSI trong GSM 03.40).

Octet

ThGiá TrÝ Nghĩa

1 07 Chiều dài phần thông tin về SMSC

là 7 Octet.

2 91 Kiểu địa chỉ (số điện thoại) của

SMSC là kiểu quốc tế. 3 đến

8 72 83 01 00 10 F5

Số điện thoại của SMSC là "+27381000015"

9 04 Octet đầu tiên của PDU SMS-

10 0B Chiều dài số điện thoại của người gửi là 11.

11 81 Kiểu địa chỉ (số điện thoại) của

người gửi là kiểu không xác định. 12 đến

17 48 19 09 73 59 F1 (adsbygoogle = window.adsbygoogle || []).push({});

Số điện thoại của người gửi là “+84919037951”

18 00 Mã nhận dạng giao thức.

19 00 Lược đồ mã hóa dữ liệu.

20 đến

26 99 30 92 51 61 95 80 Thời gian tin nhắn được phân phối.

27 0A

Chiều dài nội dung tin nhắn. Trong trường hợp này là 10 Septet (10 ký tự).

28 trở

đi E8329BFD4697D9EC37

Nội dung tin nhắn (“hellohello”) đã được chuyển từ các Septet (10 Septet) sang các Octet (9 Octet). (Xem chi tiết cách chuyển trong phụ lục B)

II.1.2. Gửi tin nhắn dưới dạng PDU:

(Trong phần này chỉ trình bày những phần cơ bản nhất về cách gửi tin nhắn dưới dạng PDU, để tìm hiểu chi tiết xem phụ lục D.2)

Ví dụ chuỗi sau là chuỗi sẽ được gửi khi gửi tin nhắn “hellohello” dưới dạng PDU từ một điện thoại Nokia 6610 đến máy khác có số “0919037951”:

0011000B914819097359F10000AA0AE8329BFD4697D9EC37 Có tất cả 23 Octet trong tin nhắn này. Octet đầu tiên (“00”) không được tính, nó chỉ cho biết chiều dài của phần thông tin về SMSC được cung cấp là 0. Chuỗi PDU gửi đi gồm các Octet và ý nghĩa như sau:

Octet

ThGiá TrÝ Nghĩa

1 00

Chiều dài phần thông tin về SMSC. Ở đây chiều dài là 0 có nghĩa là thông tin về SMSC được chứa trong điện thoại sẽ được dùng.

2 11 Octet đầu tiên của PDU SMS-

SUBMIT.

3 00

Tham chiếu tin nhắn (TP-Message- Reference) Ở đây giá trị là 0 có nghĩa là sẽ để điện thoại tự thiết lập số tham chiếu tin nhắn.

4 0B Chiều dài số điện thoại của người

nhận là 11.

5 91 Kiểu địa chỉ của người nhận là kiểu

quốc tế.

11 “+84919037951”.

12 00 Mã nhận dạng giao thức.

13 00 Lược đồ mã hóa dữ liệu.

14 AA Thời gian hiệu lực của tin nhắn là 4 (adsbygoogle = window.adsbygoogle || []).push({});

ngày.

15 0A Chiều dài phần nội dung tin nhắn là

10.

16 trở

đi E8329BFD4697D9EC37

Nội dung tin nhắn: “hellohello”. Các Septet đã được thay thế bằng các Octet. (Xem chi tiết cách chuyển trong phụ lục B)

II.2. Các kỹ thuật lập trình giao tiếp với thiết bị di động:

Giao tiếp giữa PC và thiết bị di động được chia làm 2 cách chính sau: • Giao tiếp dùng tập lệnh AT (xem chi tiết tập lệnh AT trong mục

II.3):

Hình 2.1. Giao tiếp dùng tp lnh AT

Đặc điểm chung của cách giao tiếp này là đều giao tiếp thông qua cổng COM (lúc đó thiết bị di động đóng vai trò như một modem). Nếu giao tiếp không thông qua cổng COM như: giao tiếp cổng USB,

IrDA hoặc Bluetooth thì một cổng COM ảo sẽ được giả lập (để có cổng COM ảo này đòi hỏi phải cài driver hoặc một yêu cầu nào đó tùy từng loại giao tiếp). Lúc này PC có thể thông tin với thiết bị di động dùng cổng COM ảo này giống như khi thông tin với một cổng COM thật. Cách này rất đơn giản và trong suốt vì khi thay đổi loại giao tiếp cổng chương trình vẫn chạy bình thường mà không phải thay đổi mã nguồn chương trình.

• Giao tiếp dùng tập lệnh riêng của từng thiết bị:

Hình 2.2. Giao tiếp dùng tp lnh riêng

Mỗi loại thiết bị (chẳng hạn như Nokia, Samsung, …) có một tập lệnh riêng để giao tiếp. Khi thông tin, dữ liệu được trao đổi trực tiếp bằng loại cổng giao tiếp đang sử dụng mà không phải thông qua cổng COM. Cách này rất phức tạp vì: mỗi thiết bị giao tiếp có một tập lệnh riêng, tập lệnh riêng lại rất phức tạp và việc lập trình trao đổi thông tin giữa PC và thiết bị di động cũng rất khó khăn.

Với cách giao tiếp dùng tập lệnh AT có thể thông qua các giao tiếp cổng sau:

• Thông qua cổng COM: thiết bị di động sẽ được nối với máy tính thông qua cổng COM. Loại cáp thường dùng là FBUS.

Hình 2.3. Giao tiếp vi thiết b di động thông qua cng COM

• Thông qua USB: thiết bị di động sẽ được nối với máy tính thông qua cổng USB. Các loại cáp thường dùng là: DKU-5, DKU-2, USB Cable,…

Hình 2.4. Giao tiếp vi thiết b di động thông qua cng USB

• Thông qua cổng hồng ngoại: thiết bị di động sẽ trao đổi dữ liệu với máy tính thông qua cổng hồng ngoại.

• Thông qua cổng Bluetooth. Thiết bị di động sẽ trao đổi dữ liệu với máy tính thông qua cổng Bluetooth.

Trong phạm vi luận văn này sẽ sử dụng cách giao tiếp dùng tập lệnh AT thông qua cổng COM. Vì vậy chúng ta sẽ đi sâu vào nghiên cứu kỹ thuật lập trình giao tiếp với thiết bị di động thông qua cổng COM. Các kỹ thuật lập trình giao tiếp với thiết bị di động thông qua IrDA (hồng ngoại) và Bluetooth chỉ được nghiên cứu ở mức công nghệ sẽ không đi vào nghiên cứu chi tiếp kỹ thuật lập trình bởi vì chúng rất phức tạp và điều kiện chưa cho phép.

Chúng ta sẽ tìm hiểu qua các loại giao tiếp này trong phần dưới đây.

II.2.1. Giao tiếp cổng tuần tự (COM):

II.2.1.1. Vài nét cơ bản về cổng giao tiếp tuần tự:

Cổng giao tiếp tuần tự RS-232 là giao diện phổ biến rộng rãi nhất. Người dùng máy tính PC còn gọi các cổng này là cổng COM.

Việc truyền dữ liệu qua cổng RS-232 được tiến hành theo cách tuần tự, nghĩa là các bit dữ liệu được gửi đi tuần tự nhau trên một đường dẫn. Cổng liên lạc tuần tự RS-232 cho phép dễ dàng tạo ra liên kết dưới hình thức điểm với điểm giữa 2 thiết bị cần trao đổi thông tin với nhau. Một thành viên thứ 3 không thể tham gia vào cuộc trao đổi thông tin này.

II.2.1.2. Cách truy xuất cổng giao tiếp tuần tự trên Windows 32 bit:

Trên Windows 32-bit các cổng giao tiếp tuần tự được xem như là những file I/O bất đồng bộ nên nó cũng được mở và sử dụng thông qua các hàm như: CreateFile(), ReadFile(), WriteFile(), … Ngoài ra còn có nhiều hàm khác mà ứng dụng phải dùng để thiết lập cổng giao tiếp và điều khiển hoạt (adsbygoogle = window.adsbygoogle || []).push({});

động của cổng. Việc truy xuất cổng COM dùng cách này hơi phức tạp. Tuy nhiên hãng Microsoft đã cung cấp sẵn cho chúng ta một ActiveX control tên là MSCOMM để đơn giản hoá việc lập trình truy xuất trên cổng COM.

Trong phạm vi luận văn này MSComm sẽ được dùng để truy xuất cổng COM. Chúng ta sẽ tìm hiểu sơ lược về ActiveX control này. Để tìm hiểu chi tiết về điều khiển ActiveX này xem phụ lục E.

II.2.1.3.MSComm ActiveX Control:

Điều khiển MSComm cung cấp giao tiếp tuần tự cho các ứng dụng bằng cách cho phép gửi và nhận dữ liệu thông qua cổng nối tiếp.

Mỗi một điều khiển MSComm chỉ được dùng ứng với một cổng nối tiếp. Trong ứng dụng không thể cùng một lúc có hai điều khiển MSComm cùng truy xuất đến một cổng nối tiếp.

Các thuc tính

Mặc dù MSComm có rất nhiều thuộc tính, tuy nhiên có một số thuộc tính quan trọng sau:

Thuc tính Ý nghĩa

CommPort (Integer) Thiết lập hoặc trả về số hiệu của cổng COM

Settings (String)

Thiết lập hoặc trả về các tham số như: tốc độ truyền dữ liệu, độ ưu tiên, số bit dữ liệu và bit dừng

PortOpen (Boolean) Thiết lập hoặc trả về tình trạng của cổng COM Input (String) Trả về và loại bỏ một dòng dữ liệu từ bộ đệm

nhận

Output (String) Gửi một dòng dữ liệu đến bộ đệm gửi InputLen (Integer) Thiết lập hoặc trả về số ký tự mà thuộc tính

Input sẽ đọc từ bộ đệm nhận

InBufferSize (Integer) Thiết lập hoặc trả về kích cỡ của bộ đệm nhận trong byte

InBufferCount (Integer) Trả về số ký tự đang chờ trong bộ đệm nhận InputMode (Integer) Thiết lập hoặc trả về kiểu của dữ liệu nhận bởi

thuộc tính Input OutBufferCount

(Integer) Trả về số ký tự đợi trong bộ đệm gửi

OutBufferSize (Integer) Thiết lập hoặc trả về kích cỡ trong byte của bộ đệm gửi

CommEvent (Integer) Trả về giá trị lỗi hoặc giá trị sự kiện hiện hành

Các s kin

MSComm chỉ có một sự kiện duy nhất:

S kin Ý nghĩa

OnComm() Được gọi bất kỳ khi nào giá trị của thuộc tính CommEvent thay đổi.

Ví dụ sau minh họa cách tạo,cấu hình và sử dụng MSComm để gửi và hận dữ liệu (dùng tập lệnh AT, xem chi tiết tập lệnh AT trong mục II.3):

MSCommClass serialPort = MSCommClass(); serialPort.ComPort = 4; serialPort.Settings = “19200,N,8,1”; serialPort.InBufferSize = 1024; serialPort.OutBufferSize = 512; serialPort.InputLen = 0; serialPort.InputMode = comInputModeText; serialPort.PortOpen = true; serialPort.Output = “AT” + <CR>; System.Threading.Thread.Sleep(100); If(serialPort.InBufferCount > 0) { string str = serialPort.Input.ToString(); MessageBox.Show(str); } serialPort.PortOpen = false;

II.2.2. Giao tiếp hồng ngoại (IrDA):

(Phần này chỉ trình bày sơ lược về giao tiếp IrDA, để tìm hiểu chi tiết xem phụ lục F.1)

IrDA có nghĩa là Infrared Data Association (hiệp hội dữ liệu hồng ngoại), một tổ chức quốc tế sáng lập và phát triển các chuẩn truyền dữ liệu cho các thiết bị hồng ngoại. Nó bao gồm hơn 150 công ty thành viên. Chuẩn IrDA chứa đựng tất cả các đặc tả cơ sở cho thông tin dữ liệu không dây thông qua hồng ngoại. Do đó đảm bảo sự tương thích giữa các thiết bị khác nhau của các nhà sản xuất khác nhau. (adsbygoogle = window.adsbygoogle || []).push({});

IrDA bao gồm một bộ giao thức hỗ trợ cho công nghệ truyền thông hồng ngoại với tốc độ từ 9.6 kilobits/giây (Kb/s) đến 4 Mb/s

IrDA được giới thiệu vào năm 1993 như một kỹ thuật mới thay thế cho cáp dùng tia hồng ngoại.

1997 IrDA giới thiệu phiên bản đầu tiên của giao thức OBEX(Object Exchange), cho phép các thiết bị có khả năng hồng ngoại trao đổi thông tin không dây với nhau. Một năm sau 3COM’s Palm III thực hiện cuộc cách mạng trong thế giới PDA bằng cách cho phép lần đầu tiên người dùng có thể trao đổi ứng dụng và thông tin qua IrDA.

Các thành viên của IrDA đã rất thành công khi phần cứng IrDA đã được cung cấp cho một số lượng lớn các thiết bị. Một trong những nguyên nhân là tính đơn giản và giá rẻ của phần cứng IrDA.

Ngày nay gần như mọi sản phẩm như: PDA, máy tính sách tay, máy để bàn, handheld, máy in, điện thoại di động, máy nhắn tin, modem, máy quay phim, các thiết bị truy cập mạng LAN, các thiết bị công nghiệp và y tê … đều hỗ trợ IrDA.

Microsoft Windows CE 1.0 là hệ điều hành Windows đầu tiên cung cấp hỗ trợ IrDA. Windows 2000 và Windows 98 cũng hỗ trợ giao diện lập ứng dụng IrDA cho phép các trò chơi và các ứng dụng chia sẻ thông tin.

II.2.3. Giao tiếp Bluetooth:

(Phần này chỉ trình bày sơ lược về giao tiếp Bluetooth, để tìm hiểu chi tiết xem phụ lục F.2)

1994 công ty Ericsson Mobile bắt đầu bước vào nghiên cứu một thiết bị sóng để có thể liên kết các điện thoại di động và các phụ kiện, đặc biệt là tai nghe. Từ đó kỹ thuật kết nối không dây Bluetooth bắt đầu hình thành . Bluetooth là một đặc tả tần số sóng trong phạm vi ngắn, điểm-nhiều điểm cho phép truyền âm thanh và dữ liệu. Bluetooth có thể truyền thông qua chất rắn, phi kim. Phạm vi liên kết của nó từ 10cm đến 10m, nhưng có thể mở rộng đến 100m bằng cách tăng khả năng truyền.

Bluetooth sẽ cho phép người dùng kết nối đến một phạm vi rộng lớn của các thiết bị máy tính và thiết bị viễn thông mà không cần phải dùng cáp. Bluetooth có thể dùng trong nhiều thiết bị tương tự như IrDA như: điện thoại di động, máy nhắn tin, modem, các thiết bị truy cập LAN, tai nghe, máy tính sách tay, máy để bàn, bàn phím, handheld, …

1998: Ericsson, IBM, Intel, Nokia và Toshiba đã thành lập Bluetooth SIG để phát triển các đặc tả cho kiểu kết nối không dây trong phạm vi ngắn này. Từ sau đó, hơn 2000 công ty đã gia nhập Bluetooth SIG bao gồm hầu như tất cả các nhà sản xuất điện thoại di động, máy tính và thiết bị PDA. Lúc này Bluetooth trở thành một kỹ thuật nối kết tốt nhất để thay thế cáp. Mở rộng khả năng kết nối điện thoại di động, PC và các thiết bị khác. Các tai nghe không dây có khả năng Bluetooth bắt đầu nổi lên trong năm 2000, nhưng giá thành lại đắt, dùng nhiều năng lượng. Từ sau đó, giá và việc dùng năng lượng đã được cải thiện, đã tạo cho Bluetooth một đặc điểm giá trị bên trong các thiết bị PDA và điện thoại di động.

II.3. Tập lệnh AT: II.3.1. Giới thiệu:

Để nói chuyện với điện thoại di động bạn phải dùng một vài câu lệnh đặc biệt, được gọi là tập lệnh AT. Bạn phải gửi những câu lệnh này thông qua cổng nối tiếp hoặc cổng IrDA (hồng ngoại) đến điện thoại (xem các giao tiếp COM, IrDA trong mục II.2) và điện thoại sẽ trả lời bạn. Nếu điện thoại hỗ trợ câu lệnh AT vừa nhận, nó sẽ gửi đến bạn một câu trả lời hợp lệ, ngược lại nó sẽ gửi đến bạn một câu trả lời lỗi.

Máy tính dùng tập lệnh AT để giao tiếp với modem. Tuy nhiên phần lớn các ứng dụng truyền thông có một giao diện người dùng thân thiện đã ẩn đi những lệnh AT này đối với người dùng. Các lệnh AT của bạn được đưa ra thông qua ứng dụng truyền thông của bạn. Khi phần mềm trong các máy điện thoại nhận một lệnh AT, nó sẽ gửi kết qủa tương ứng đến bạn.

II.3.2. Cú pháp của tập lệnh AT:

Câu lệnh AT có cấu trúc chung như ví dụ bên dưới :

Một phần của tài liệu công nghệ SMS và xây dựng hệ thống tra cứu điểm qua mạng điện thoại di động (Trang 36 - 107)