Phần điều khiển cổng song song nằm ở Client, Client sẽ nhận tín hiệu từ Server và điều khiển thiết bị thông qua cổng LPT, cổng LPT này sẽ kết nối với 8 thiết bị bên ngoài bóng đèn, quạt
Trang 1PHẦN MỞ ĐẦU
1 Lý do chọn đề tài
Thế kỷ 21 dường như chỉ giành riêng cho sự phát triển của lĩnh vực công nghệ thông tin Hàng loạt phát minh được ra đời và đã cho ra những sản phẩm đáp ứng được mọi kỳ vọng và nhu cầu của con người Đi kèm theo đó là sự phát triển vượt bậc của ngành truyền thông đã góp phần đưa thế giới ngày càng tiến bộ và văn minh hơn Mạng lưới Internet gần như đã phủ sống toàn cầu và
nó đã mang lại làn gió mới cho nhân loại nói chung và Việt Nam nói riêng, cộng với quyết tâm đưa xã hội Việt Nam trở thành một nước có ngành công nghệ thông tin phát triển của chính phủ, tận dụng những yếu tố này, chúng tôi
đã chọn đề tài hệ thống điều khiển hệ thiết bị qua mạng TCP/IP Với mong muốn ứng dụng những gì chúng tôi đã học ở trường và nghiên cứu thêm để có thể đưa ra những sản phẩm ứng dụng vào thực tế
Đề tài này có thể giúp mọi người quản lý tốt các thiết bị trong nhà, trong công ty từ xa một cách dễ dàng Điểm mạnh của đề tài này là điều khiển được thiết bị qua mạng TCP/IP Không bị giới hạn về khoảng cách, chỉ cần máy Server và Client kết nối Internet là có thể điều khiển được thiết bị
Về phần chức năng, thì chương trình gồm 2 chức năng chính:
- Điều khiển thiết bị từ xa
- Cho phép kiểm tra trạng thái thiết bị
Khi một máy tính được xuất xưởng hoặc bày bán ở cửa hàng thì
cả nhà sản xuất, người bán cũng như người tiêu dùng đều ngầm hiểu đây chưa phải là một hệ thống hoàn chỉnh, càng không phải là một hệ thống khép kín Tùy theo yêu cầu sử dụng, người dùng có thể nâng cấp, mở rộng cấu hình bằng cách ghép nối thêm các Card mở rộng hoặc các thiết
bị ngoại vi như modem, máy in… Các nhà sản xuất đã dự trữ sẵn các rãnh cắm mở rộng trên bản mạch chính, các cổng ghép nối : song song (LPT), nối tiếp (COM), cổng USB Đây chính là những vị trí mà kỹ thuật
Trang 2ghép nối máy tính có thể tác động vào Để ghép nối với máy tính ta có nhiều khả năng để lựa chọn, dưới đây là các lựa chọn phổ biến nhất :
- Ghép nối qua cổng máy in hay còn gọi là cổng song song
- Ghép nối qua cổng mở rộng trên bản mạch chính
- Ghép nối qua cổng nối tiếp
- Ghép qua cổng USB
Mỗi cổng đều có một ưu nhược điểm riêng biệt vẫn tồn tại cho đến ngày nay, tuỳ theo hoàn cảnh mà ta chọn cổng nào cho thích hợp, trong đề tài này chúng tôi nghiên cứu nhiều về cổng song song, và hướng phát triển lên cổng USB vì cổng này phổ biến hơn tuy nhiên do các hạn chế về mặt thời gian và kiến thức về điện tử, lập trình vi điều khiển nên chưa phát triển được
Phần điều khiển cổng song song nằm ở Client, Client sẽ nhận tín hiệu từ Server và điều khiển thiết bị thông qua cổng LPT, cổng LPT này
sẽ kết nối với 8 thiết bị bên ngoài (bóng đèn, quạt máy, nồi cơm điện, hoặc các thiết bị điện khác …)
Khi Server truyền tín hiệu bật hay tắt xuống Client, thì Client sẽ tiếp tục gởi tín hiệu này đến các thiết bị trên, trong đề tài này chúng tôi
mô phỏng các thiết bị trên bằng 8 bóng đèn LED
Chức năng này cho phép Client thu được tín hiệu của các thiết bị trên thông qua cổng LPT, về cách thức hoạt động của chức năng này có thể tóm tắt như sau: từ Server ta gởi tín hiệu yêu cầu Client lấy trạng thái của các thiết bị, sau đó Client bắt đầu thu thập trạng thái của các thiết bị
và trả ngược về Server, sau đó Server sẽ hiển thị lên cho người xem biết được thiết bị đó đang bật hay đang tắt
2 Lịch sử nghiên cứu
Trên thế có rất nhiều nhà nghiên cứu về việc điều khiển thiết bị qua mạng và đã cho ra nhiều siêu phẩm Điển hình nhất là ngôi nhà thông minh của
Trang 3Bill Gate Đó là một sản phẩm mang đầy tính “ công nghệ thông tin” Một sự kết hợp hoàn hảo giữa hai lĩnh vực công nghệ thông tin và điện tử Tất cả các thiết bị trong nhà được điều khiển tự động Các thiết bị được kết nối với máy tính, được điều khiển tự động thông qua thiết bị cầm tay hay máy tính Đó là một sản phẩm quá xa xỉ đối với chúng ta nhưng không phải là chúng ta không dám nghĩ tới Thiết nghĩ bạn đi làm ở công ty mà bạn có thể điều khiển tất cả các thiết bị ở nhà như bật bật tắt bóng đèn, máy lạnh… bạn sẽ cảm thấy như thế nào Như vậy cũng là quá tuyệt vời rồi phải không?
3 Mục tiêu nghiên cứu
Ở đề tài này nhóm chúng tôi nghiên cứu về việc điều khiển thiết bị thông qua mạng TCP/IP Client kết nối với mạch điện thông qua 2 cổng: cổng LPT và cổng USB Trên mạch điện ta gắn các thiết bị Các thiết bị ở đây được tượng trưng là đèn Led Trên Client ta thiết kế giao diện điều khiển cho phép Client kết nối và login vào Server Trên Server ta có giao diện quản lý các Client và trên mỗi Client ta quản lý bật tắt được từng thiết bị Như vậy cũng còn nhiều mặt hạn chế như: người điều khiển phải ngồi trực tiếp trên Server mới điều khiển được thiết bị trên Client Để khắc phục được chuyện đó nhóm chúng tôi làm thêm chức năng Remote Nghĩa là máy Client có chức năng truy cập vào Server và điều khiển bật tắt các thiết bị trên một Client khác kết nối với thiết bị bằng cổng LPT
Như vậy người dùng có thể điều khiển được các thiết bị, chỉ cần Server
và Client kết nối mạng với nhau
- Giao diện thân thiện với người dùng
- Có khả năng quản lý User tốt
4 Đối tƣợng nghiên cứu và phạm vi nghiên cứu
Trong đề tài này chủ yếu nghiên cứu về cổng LPT và cổng USB và cách thức truyền tín hiệu qua mạng TCP/IP
Phạm vi nghiên cứu là hệ thống mạng LAN, WAN
Trang 45 Phương pháp nghiên cứu
Tìm hiểu và nghiên cứu các tài liệu về cổng LPT, cổng USB, về lập trình socket, tìm hiểu về ngôn ngữ JAVA
Tìm hiểu sơ lược về các kiến thức điện tử như đèn LED, điện trở, và cách làm mạch điện giao tiếp
Xây dựng chương trình có giao diện đơn giản, phù hợp với người dùng, người dùng có thể điều khiển thiết bị một cách dễ dàng
6 Những đóng góp mới của đề tài - những vấn đề mà đề tài chưa thực hiện được
Xây dụng được chương trình điều khiển từ xa thông qua mạng TCP/IP, giúp người dùng dễ dàng quản lý được các thiết bị của họ, chương trình có khả năng kiểm tra được trạng thái của thiết bị và hiển thị lên cho người dùng, lợi điểm của chương trình là do sử dụng mạng nên có thể điều khiển thiết bị ở mọi nơi chỉ cần kết nối Internet, không bị giới hạn về khoảng cách Có thể điều khiển qua mạng không dây, hướng phát triển có thể tích hợp vào các thiết bị di động hoặc các thiết bị cầm tay khác
Tuy nhiên chương trình chỉ mới điều khiển được các thiết bị mô phỏng (ở đây là bật tắt 8 bóng đèn LED) chưa thử nghiệm điều khiển trên các thiết bị thật như: bóng đèn nhà, máy lạnh, máy giặt, tủ lạnh….Nếu có điều kiện nghiên cứu thêm nhóm chúng tôi sẽ không dừng lại ở việc bật tắt các đèn Led mà phát triển lên các thiết bị thật như các thiết bị gia đình, các máy móc trong công ty xí nghiệp…
Do thời gian và kiến thức có hạn nên chúng tôi làm được phần điều khiển thiết bị qua TCP/IP thông qua cổng LPT còn cổng USB đang trong giai đoạn nghiên cứu và thử nghiệm Do điều khiển thiết bị qua cổng USB rất phức tạp đòi hỏi kiến thức rất nhiều về điện tử và lập trình vi điều khiển
7 Kết cấu của đề tài
Luận văn này được trình bày thành ba phần chính: Phần mở đầu, phần nội dung và phần kết luận
Trang 5Phần mở đầu:
Giới thiệu sơ lược về lý do chọn đề tài, lịch sử nghiên cứu, mục tiêu nghiên cứu, đối tượng và phạm vi nghiên cứu, phương pháp nghiên cứu, những đóng góp và những vấn đề tồn tại của đề tài để từ đó đem lại cho mọi người một cái nhìn tổng quan nhất về đề tài
Phần nội dung:
Nội dung báo cáo được chia làm 3 chương:
Chương 1: Giới thiệu về cổng LPT, cổng USB và lập trình Socket Chương 2: Điều khiển thiết bị qua mạng
Trình bày cách thực hiện về lập trình Socket và điều khiển thiết bị thông qua cổng LPT
Chương 3: Chương trình điều khiển thiết bị qua mạng TCP/IP
Giới thiệu về chương trình và cách thức điều khiển thiết bị
Phần kết luận:
Kết luận chung về toàn bộ đề tài
Hướng phát triển nghiên cứu tiếp theo
Trang 6CHƯƠNG 1: GIỚI THIỆU VỀ CỔNG LPT, CỔNG USB VÀ LẬP TRÌNH
SOCKET 1.1 Giới thiệu tổng quan về điều khiển thiết bị
1.1.1 Điều khiển từ xa bằng tia hồng ngoại (IR)
Ngày nay, đây là loại điều khiển từ xa có vai trò “thống trị” trong
hầu hết các thiết bị gia đình Một chiếc điều khiển IR sẽ gồm các bộ phận cơ bản nằm trong một hộp nối cáp kỹ thuật số như sau: Các nút bấm, một bảng mạch tích hợp, các núm tiếp điểm, đi- ốt phát quang (đèn LED)
Nguyên lý cơ bản của loại điều khiển từ xa này là sử dụng ánh sáng hồng ngoại của quang phổ điện từ mà mắt thường không thấy được
để chuyển tín hiệu đến thiết bị cần điều khiển Nó đóng vai trò như một
bộ phát tín hiệu, sẽ phát ra các xung ánh sáng hồng ngoại mang một mã
số nhị phân cụ thể Khi ta ấn một nút phía bên ngoài thì sẽ vận hành một chuỗi các hoạt động khiến các thiết bị cần điều khiển sẽ thực hiện lệnh của nút bấm đó
Quy trình này cụ thể như sau: Đầu tiên, khi ta nhấn vào một nút
như “Tăng âm lượng” chẳng hạn, nó sẽ chạm vào núm tiếp điểm bên
dưới và nối kín một mạch tăng âm lượng trên bản mạch Các mạch tích hợp có thể tự dò tìm ra từng mạch cụ thể cho từng nút bấm Tiếp đó các mạch này sẽ gửi tín hiệu đến đèn LED nằm phía trước Từ đây, đèn LED
sẽ phát ra một chuỗi các xung ánh sáng chứa các mã nhị phân (gồm
những dãy số 1 và 0) tương ứng với lệnh “tăng âm lượng” Mã lệnh này
gồm nhiều mã con như khởi động, tăng âm lượng, mã địa chỉ thiết bị và ngừng lại khi ta thả nút ra
Trang 7Hình 1.1: Sơ đồ bộ điều khiển từ xa
Về phía bộ phận cần điều khiển, nó sẽ gồm một bộ thu tín hiệu hồng ngoại nằm ở mặt trước để có thể dễ dàng nhận được tín hiệu từ điều khiển từ xa Sau khi đã xác minh mã địa chỉ này xuất phát đúng từ chiếc điều khiển của mình, chúng sẽ giải mã các xung ánh sáng thành các dữ liệu nhị phân để bộ vi xử lý của thiết bị có thể hiểu được và thực hiện các lệnh tương ứng
Hiện nay, ta sử dụng thiết bị điều khiển IR cho hầu hết các vật dụng trong nhà như tivi, máy stereo, điều hòa nhiệt độ… Chúng rất bền, tuy nhiên lại có hạn chế liên quan đến bản chất chỉ truyền theo đường thẳng của ánh sáng Do đó, loại điều khiển IR có tầm hoạt động chỉ có khoảng 10 mét và cũng không thể truyền qua các bức tường hoặc vòng qua các góc Chúng chỉ hoạt động tốt khi ta trỏ thẳng hay gần vị trí bộ thu của vật dụng cần điều khiển
Ngoài ra, nguồn ánh sáng hồng ngoại có ở khắp nơi như ánh sáng mặt trời, bóng đèn huỳnh quang, từ cơ thể con người… nên có thể làm cho điều khiển IR bị nhiễu sóng Để tránh hiện tượng này, người ta phải cài đặt cho bộ lọc của các bộ phận thu chỉ thu nhận những bước sóng đặc
Trang 8biệt hoặc tần số riêng biệt của ánh sáng hồng ngoại phù hợp với nó và chặn ánh sáng ở bước sóng khác để hạn chế sự nhiễu sóng một cách tối
đa
1.1.2 Điều khiển từ xa bằng tần số vô tuyến (RF)
Là loại điều khiển từ xa xuất hiện đầu tiên và đến nay vẫn giữ một vai trò quan trọng và phổ biến trong đời sống Nếu điều khiển IR chỉ dùng trong nhà thì điều khiển RF lại dùng cho nhiều vật dụng bên ngoài như các thiết bị mở cửa gara xe, hệ thống báo hiệu cho xem các loại đồ chơi điện tử từ xa thậm chí kiểm soát vệ tinh và các hệ thống máy tính xách tay và điện thoại thông minh…
Hình 1.2: Một số điều khiển từ xa
Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như điều khiển bằng tia hồng ngoại nhưng thay vì gửi đi các tín hiệu ánh sáng, nó lại truyền sóng vô tuyến tương ứng với các lệnh nhị phân Bộ phận thu sóng vô tuyến trên thiết bị được điều khiển nhận tín hiệu và giải
mã nó So với loại điều khiển IR, lợi thế lớn nhất của nó chính là phạm
Trang 9vi truyền tải rộng, có thể sử dụng cách thiết bị cần điều khiển đến hơn 30 mét đồng thời có thể điều khiển xuyên tường, kính…
Tuy nhiên, nó cũng có hạn chế đó là tín hiệu vô tuyến cũng có mặt khắp nơi trong không gian do hàng trăm loại máy móc thiết bị dùng các tín hiệu vô tuyến tại các tần số khác nhau Do đó, người ta tránh nhiễu sóng bằng cách truyền ở các tần số đặc biệt và nhúng mã kỹ thuật
số địa chỉ của thiết bị nhận trong các tín hiệu vô tuyến Điều này giúp bộ thu vô tuyến trên thiết bị hồi đáp tín hiệu tương ứng một cách chính xác
1.1.3 Điều khiển bằng máy tính
Công ty Centronics, từng nổi tiếng thế giới với vị trí hàng đầu trong số nhà sản xuất máy in kiểu ma trận, đã thiết kế ra cổng song song (LPT) nhằm mục đích nối máy tính PC với máy in Về sau, cổng song song đã phát triển thành một tiêu chuẩn không chính thức Tên gọi của cổng song song bắt nguồn từ kiểu dữ liệu truyền qua cổng này: các bit
dữ liệu được truyền song song hay nói cụ thể hơn là Byte nối tiếp còn Bit song song
Hình 1.3: Cổng LPT trên máy tính
Việc điều khiển thiết bị thông qua cổng này cũng được phát triển rất nhiều nhưng chủ yếu là điều khiển thông qua một con IC
Trang 10Ngoài ra trong nước ta cũng có rất nhiều đề tài điều khiển thiết bị nhưng chủ yếu thông qua cổng COM sử dụng IC của tác giả Cao Văn Hưởng đến từ Long Hải, email: caovanhuong@webdien.com, em xin giới thiệu về chương trình này:
Phần mềm dùng điều khiển các thiết bị điện bằng máy tính Nó có thể điều khiển tối đa 20 thiết bị điện qua chuẩn giao tiếp RS232 (giao tiếp qua cổng COM), có thể sử dụng cáp chuyển USB sang cổng COM
Hình 1.4: Giao diện chương trình điều khiển qua cổng COM
Đây là mạch ngoại vi của nó, hình chỉ vẽ phần giao tiếp công suất chỉ có 1 role Nếu bạn muốn sử dụng bao nhiêu đèn thì vẽ thêm vào chừng
đó cái role, đèn số 1 nối với RB0, đèn số 2 nối với RB1 cứ thế thì nó lần lượt cho đến RD
Trang 11Hình 1.5: Mạch ngoại vi
Trang 12Kết luận: Qua những sản phẩm trên thì ta thấy nhu cầu điều
khiển thiết bị từ xa là cực kì cần thiết cho con người, các loại điều khiển
từ xa sử dụng hồng ngoại và vô tuyển có nhược điểm riêng của nó dẫn đến không được linh hoạt khi sử dụng, ví dụ như ở trên lầu mà muốn điều khiển một thiết bị dưới nhà thì rất khó khăn, và nó cũng không kiểm tra được trạng thái của thiết bị, giải quyết các vấn đề trên thì chúng tôi sử dụng mạng Internet điều khiển vì lợi thế mạng Internet rất dễ lắp đặt và
sử dụng, đặc biệt là Wireless hoặc 3G
Tên gọi là cổng song song được bắt nguồn từ cách truyền dữ liệu của cổng này: 8 bit dữ liệu được truyền song song (ra 8 chân trên LPT) cùng một lúc hay nói cách khác là cổng LPT truyền byte nối tiếp, còn truyền bit thì song song
Vì đây là cổng được thiết kế chuyên để điều khiển, nên khi sử dụng cổng này để điều khiển các thiết bị thì có được nhiều thuận lợi hơn
so với sử dụng các cổng khác
Khoảng cách cực đại giữa cổng song song trên máy tính và các thiết bị ngoại vi bị hạn chế vì điện dung kí sinh và hiện tượng cảm ứng giữa các đường dẫn có thể là biến dạng tín hiệu truyền đi, dẫn đến tín hiệu bị sai lệch không còn chính xác nữa Khoảng cách giới hạn tối đa là 8m, nhưng thông thường chỉ khoảng từ 1,5m – 2m Khi khoảng cách ghép nối trên 3m thì nên xoắn các đường dây dẫn tín hiệu với đường nối
Trang 13đất theo kiểu cặp dây xoắn hoặc dùng loại cáp dẹt nhiều sợi trong đó mỗi đường dẫn dữ liệu nằm giữa hai đường nối mass
Tốc độ truyền dữ liệu qua cổng song song phụ thuộc rất nhiều vào linh kiện phần cứng được sử dụng Trên lý thuyết tốc độ truyền đạt dữ liệu có giá trị khoảng 1Mbit/s, nhưng với khoảng cách truyền bị hạn chế trong phạm vi 1m, ngoài khoảng cách này thì tốc độ truyền bị giảm đáng
kể, với nhiều mục đích sử dụng thì khoảng cách này hoàn toàn thoả đáng, do đó một điểm cần lưu ý là: việc tăng khoảng cách truyền dữ liệu qua cổng song song không chỉ làm tăng khả năng gây lỗi đối với đường
dữ liệu được truyền mà còn làm tăng chi phí của đường dẫn
1.2.2 Cấu trúc cổng LPT:
Cổng song song có 2 loại:
- Cổng song song có 36 chân
- Cổng song song có 25 chân
Ngày nay, loại cổng song song có 36 chân đã không còn được sử dụng, hầu như chỉ sử dụng cổng song song 25 chân, nên ta chỉ cần quan tâm đến loại này
Trang 14- Strobe (1): Với một mức logic thấp ở chân này, máy tính thông
báo cho máy in biết có một byte đang sẵn sàng trên các đường dẫn tín hiệu để được truyền
- D0 đến D7: Các đường dẫn dữ liệu, 8 bit dữ liệu được truyền
song song ra tám chân này (mức điện áp 0-5V)
- Acknowledge: với một mức logic thấp ở chân này, máy in thông
báo cho máy tính biết là đã nhận được kí tự vừa gửi và có thể tiếp tục nhận
- Busy (bận – 11): máy in gửi đến chân này mức logic cao trong khi
đang đón nhận hoặc in ra dữ liệu để thông báo cho máy tính biết
là các bộ đệm trong máy tính biết là đã bị đầy hoặc máy in trong trạng thái Off-line
Trang 15- Paper empty (hết giấy – 12): Mức cao ở chân này có nghĩa là giấy
đã dùng hết
- Select (13): Một mức cao ở chân này, có nghĩa là máy in đang
trong trạng thái kích hoạt (On-line)
- Auto Linefeed (tự nạp dòng): Có khi còn gọi là Auto Feed Bằng
một mức thấp ở chân này máy tính PC nhắc máy in tự động nạp một dòng mới mỗi khi kết thúc một dòng
- Error (báo lỗi): Bằng một mức thấp ở chân này, máy in thông báo
cho máy tính là đã xuất hiện một lỗi, chẳng hạn kẹt giấy hoặc máy
in đang trong trạng thái Off-Line
- Reset (đặt lại): Bằng một mức thấp ở chân này, máy in được đặt
lại trạng thái được xác định lúc ban đầu
- Select Input: bằng một mức thấp ở chân này, máy in được lựa
chọn bởi máy tính
Như vậy cáp nối giữa máy in và máy tính bao gồm 25 sợi, nhưng không phải tất cả điều được sử dụng mà trên thực tế chỉ có 18 sợi được nối với các chân cụ thể Còn lại là nhửng đường dây mass có thể dùng chung
Qua cách mô tả như trên thì ta có thể thấy các chân trên cổng song song có thể chia thành 3 nhóm:
- Các đường truyền dữ liệu (8 đường) dùng để truyển các kí tự riêng lẻ ra máy in
- Các đường điều khiển dùng để xuất tín hiệu điều khiển từ PC ra máy in
- Các đường trạng thái dùng để PC lấy tín hiệu cập nhật trạng thái
từ máy in
Từ cách mô tả các tín hiệu và mức tín hiệu ta có thể nhận thấy là: các tín hiệu Acknowledge, Auto Linefeed, Error, Reset và Select Input
Trang 16kích hoạt ở mức thấp Thông qua chức năng của các chân này ta cũng hình dung được cách điều khiển cổng song song
Để có thể ghép nối các thiết bị ngoại vi, các mạch điện ứng dụng trong điều khiển với cổng song song ta phải tìm hiểu cách trao đổi với các thanh ghi thông qua cách sắp xếp và địa chỉ các thanh ghi cũng như phần mềm
Các đường dẫn của cổng song song được nối với ba thanh ghi 8 bit khác nhau:
- Thanh ghi dữ liệu (data)
- Thanh ghi trạng thái (status)
- Thanh ghi điều khiển (control)
Hình 1.7: Thanh ghi dữ liệu
Hình 1.8: Thanh ghi điều khiển
Trang 17Hình 1.9: Thanh ghi trạng thái
Như sơ đồ trên đã trình bày 8 đường dữ liệu dẫn tới thanh ghi dữ liệu
còn 4 đường dẫn điều khiển Strobe, Auto Linefeed, Reset, Select Input dẫn
tới thanh ghi điều khiển
Năm đường dẫn trạng thái Acknowledge, Busy, Paper Empty, Select,
Error tới thanh ghi trạng thái
Thanh ghi dữ liệu hay 8 đường dẫn dữ liệu không phải là đường dẫn 2 hướng trong tất cả các loại máy tính nên dữ liệu chỉ có thể được xuất ra qua các đường dẫn này cụ thể từ D0 đến D7
Thanh ghi điều khiển hai hướng, hay nói chính xác hơn: Bốn bit có giá trị thấp được sắp xếp ở các chân 1, 14, 16, 17 Thanh ghi trạng thái chỉ có thể được đọc và vì vậy được gọi là một hướng
Ta có thể trao đổi với 3 thanh ghi này như thế nào? Hệ điều hành DOS
dự tính đến bốn cổng song song và đặt tên là: LPT1, LPT2, LPT3 và LPT4 Tuy vậy, hầu hết các máy tính PC đều chỉ có nhiều nhất hai cổng song song và cho đến nay với lí do giảm giá thành, cổng song song chỉ còn lại một
Về mặt phần cứng, các nhà sản xuất đã dự tính bốn nhóm, mỗi nhóm 3 địa chỉ, để trao đổi với từng ô nhớ trên thanh ghi của mỗi giao diện Ta có thể nhận thấy các địa chỉ thanh ghi nằm kế tiếp nhau Khi bật máy tính, BIOS kiểm tra kế tiếp nhau các địa chỉ được ghi trong bảng và khẳng định xem trên máy có trang bị mấy cổng song song
Trang 18Các cổng song song được BIOS tìm thấy sẽ được sắp xếp theo các tên
mà DOS đã chỉ định là: LPT1, LPT2… Điều này giải thích vì sao trong các tài liệu khác nhau các địa chỉ được ấn định cho LPT1, LPT2… lại khác nhau Phần lớn trong các phiên bản của BIOS chạy trong giai đoạn khởi động (boot phase) của máy tính, trong đó phần cứng của máy tính được kiểm tra và cấu hình của máy tính, cụ thể ở đây địa chỉ các giao diện song song, đang tồn tại được xuất
ra màn hình (trong một khung hình chữ nhật) Ta có thể làm dừng quá trình khới động máy tính bằng phím <Pause> để quan sát kỹ các thông số được liệt
3BDh 379b 279b 2BDh
3BEh 37Ah 27Ah 2BEh
Bảng 2: Địa chỉ tham khảo của các thanh ghi trên cổng LPT (tuỳ theo máy tính
các địa chỉ này có thể khác nhau)
Ngoài ra địa chỉ của cổng LPT còn có thể tính theo cách trình bày dưới đây:
Data register (Base Address + 0) 0x378 0x278
Status register (Base Address + 1) 0x379 0x279
Control register (Base Address + 2) 0x37a 0x27a
Bảng 3: Cách tính địa chỉ
1.3 Cơ bản về cổng USB
Hiện nay khi chúng ta mua máy vi tính bao giờ cũng có kết nối USB (Universal Serial Bus ) ở đằng trước và mặt sau của máy tính Những kết nối USB này cho phép chúng ta gắn mọi thiết bị từ chuột, bàn phím, máy in một
Trang 19cách dễ dàng và nhanh chóng Hệ điều hành cũng hỗ trợ rất tốt cổng USB, do
đó cài đặt Driver của thiết bị cũng rất nhanh chóng và dễ dàng Khi so sánh những cách khác để kết nối với máy tính như: cổng song song, cổng nối tiếp và những Card riêng biệt khác mà chúng ta cắm bên trong máy vi tinh thì thiết bị USB đơn giản đến rất nhiều
1.3.1 Giới thiệu
Máy in được nối với máy tính qua cổng song song trong khi hầu hết các máy tính chỉ được trang bị một cổng này Sẽ rất khó khăn nếu sử dụng thêm ổ Zip, luôn đòi hỏi tốc độ kết nối cao với máy tính và cần thiết phải dùng cổng song song
Modem được nối với máy tính qua cổng nối tiếp giống như một vài dạng thiết bị khác như Digital Camera, Palm Pilots trong khi mỗi máy tính thường chỉ có hai cổng nối tiếp và chúng rất chậm
Các thiết bị đòi hỏi các kết nối nhanh hơn như các Card đặc biệt được cắm trực tiếp vào khe cắm (Slot) trên bo mạch Thực tế số lượng các khe cắm (Slot) là có hạn và cần phải cài đặt các phần mềm cho thiết
bị này
Mục đích của USB là giải quyết các vấn đề của người sử dụng khi các cổng kết nối trên không hiệu quả USB cung cấp cho người sử dụng khả năng kết nối chuẩn, dễ dàng với 127 thiết bị trên cùng một máy tính Mọi thiết bị ngoại vi hiện nay đều có thể kết nối trên cùng một phiên bản USB chẳng hạn như: máy in, máy quét ảnh, chuột, Joystick, Digital Camera, Webcam, Modem, loa, điện thoại, Network Connection, thiết bị lưu trữ thông tin (ổ Zip)
1.3.2 Các đặc tính của cổng USB
Các đặc điểm của USB bao gồm:
Máy tính hoạt động như một Host
Có tới 127 thiết bị có thể kết nối vào máy tính bao gồm cả nối trực tiếp hay qua USB Hub
Trang 20 Các cáp USB (USB Cable) của từng thiết bị có thể dài tới 5m hay 30m với Hub
Chuẩn USB 2.0 cho phép truyền dữ liệu trên Bus tới tốc độ 480 Mbps
Chuẩn USB 3.0 có tốc độ truyền nhanh gấp 10 lần so với chuẩn USB 2.0 Tốc độ có thể đạt 5Gbps
Một cáp USB có hai dây cung cấp điện và một đôi dây xoắn truyền
dữ liệu
Trên dây cung cấp điện năng, điện áp có thể lên tới 500mA - 5V
Các thiết bị sử dụng ít điện năng được cung cấp điện năng trực tiếp từ Bus Các Hub có thể cung cấp điện năng cho các thiết bị nối với nó
từ nguồn điện riêng của chúng
Các thiết bị USB có khả năng hoán đổi nhanh, có thể cắm vào hay rút
ra khỏi Bus bất kỳ lúc nào
Các thiết bị USB có thể đặt ở chế độ “ngủ” (Sleep Mode) khi máy tính chuyển sang chế độ Power-Saving
Các thiết bị nối với cổng USB dùng cáp USB để truyền tải dòng điện hay dữ liệu Khi máy tính hoạt động, nó truy vấn tới tất cả các thiết bị nối vào Bus và gán cho mỗi thiết bị một địa chỉ Quá trình này được gọi là liệt kê các thiết bị Máy tính cũng sẽ tìm ra cách truyền dữ liệu của từng thiết bị:
Interrupt: Các thiết bị như bàn phím gửi lượng dữ liệu rất nhỏ và ngắt đoạn sẽ được chọn kiểu Interrupt Mode
Bulk: Các thiết bị như máy in thường nhận những gói dữ liệu lớn, dùng kiểu Bulk Transfer Mode Từng đoạn dữ liệu (64 Byte) được gửi tới máy in và được kiểm tra tính chính xác
Isochronous: Các thiết bị truyền dữ liệu theo dạng Stream như loa sẽ dùng Isochronous Mode Dữ liệu tức thời được truyền giữa thiết bị và máy tính và không có cơ chế sửa lỗi
Trang 21Máy tính cũng có thể gửi đi các lệnh hay truy vấn các thông số với các gói Control Packet Khi một thiết bị được máy tính liệt kê, máy tính sẽ giành tới 90% băng thông (Bandwidth) phục vụ các yêu cầu của các thiết bị kiểu Interrupt và Isochronous Sau khi dùng 90% của 480 Mbps băng thông, máy tính sẽ từ chối các truy nhập của bất kỳ thiết bị kiểu Interrupt hay Isochronous nào khác Các Control Packet và thiết bị kiểu Bulk Transfer sẽ sử dụng khoảng 10% băng thông còn lại
USB phân chia băng thông thành các Frame và máy tính sẽ điều khiển các Frame này Mỗi Frame chứa 1.500 Byte và Frame mới được sinh ra sau mỗi mili giây Trong một Frame, các thiết bị kiểu Isochronous và Interrupt phân chia thành các khe nên chúng đảm bảo được băng thông cần thiết trong khi các thiết bị Bulk Transfer và Control Packet sử dụng phần băng thông còn lại
1.3.3 Các chuẩn USB
Trong lịch sử phát triển của mình, USB có 4 loại chuẩn đã được nghiên cứu và phát triển là: USB 1.0 năm 1996, USB 1.1 năm 1998, USB 2.0 năm 2000 và USB 3.0 năm 2008 Hai chuẩn đầu tiên không còn được sử dụng nữa trong khi đó USB 2.0 đang được sử dụng khá rộng rãi hiện nay USB 3.0 còn rất mới mẻ nên chưa phổ biến Mặc dù vậy, loại chuẩn này hứa hẹn sẽ được sử dụng rộng rãi trong tương lai
Hình 1.10: Sơ đồ chân của USB
Hình 1.11: USB 2.0
Trang 22Hình 1.12: USB 3.0 1.3.4 Các đặc trƣng của cổng USB
USB cho phép trao đổi dữ liệu giữa máy tính và thiết bị một cách nhanh chóng Thiết bị có cổng USB tiêu tốn rất ít điện năng USB được
áp dụng chủ yếu cho các thiết bị lưu trữ di động như ổ cứng ngoài, USB Flash và chúng đều rất linh động USB dùng chuẩn Plug-and-play nên không phải khởi động lại máy tính mỗi lần cắm thiết bị USB (điều rất dễ
gặp khi sử dụng các thiết bị ngoại vi theo cổng PS/2)
Hình 1.13: Card USB 1.4 Lập trình Socket:
1.4.1 Giới thiệu:
Khái niệm Socket xuất hiện lần đầu tiên vào khoảng năm 1980 tại trường đại học Berkeley Mỹ Là một chương trình được thiết kế để giúp
Trang 23máy tính nối mạng ở khắp mọi nơi có thể trao đổi thông tin với nhau Sự
ra đời của Socket gắn liền với nhu cầu truyền thông của máy tính
Socket là một giao diện lập trình ứng dụng (API-Application Programming Interface) Nó được giới thiệu lần đầu tiên trong ấn bản UNIX – BSD 4.2 dưới dạng các hàm hệ thống theo cú pháp ngôn ngữ C (socket(), bind(), connect(), send(), receive(), read(), write(), close(), …) Ngày nay, socket được hỗ trợ hầu hết trong các hệ điều hành như MS Window, Linux và được sử dụng trong nhiều ngôn ngữ lập trình khác nhau như: C, C++, Java, Visual Basic, Visual C++ …
Trong phần này chúng ta sẽ tìm hiểu về sự phát triển các ứng dụng mạng Ta đã biết lõi (core) của một ứng dụng mạng bao gồm một cặp chương trình – một chương trình máy khách (Client program) và một chương trình máy chủ (Server program) Khi cả hai chương trình được thi hành, tiến trình (process) máy khách và máy chủ được tạo ra, và hai tiến trình này liên lạc với nhau bằng cách đọc từ và ghi đến những socket Khi tạo ra một ứng dụng mạng, nhiệm vụ của chúng ta là viết mã cho cả hai chương trình máy khách (Client) và máy chủ (Server)
Có hai loại ứng dụng Client-Server Một loại là những ứng dụng Client-Server mà nó được hiện thực trên những giao thức chuẩn đã được định nghĩa trong các RFC (Request for Comments) Với những ứng dụng kiểu này thì chương trình máy chủ và máy khách đều phải phù hợp với những quy tắc đã được nêu ra trong RFC Ví dụ, một chương trình máy khách có thể hiện thực một chương trình FTP client, được định nghĩa trong [RFC 959], và chương trình máy chủ thì hiện thực một FTP server, cũng phải được định nghĩa trong [RFC 959]
Loại còn lại của một ứng dụng Client-Server là một ứng dụng Server-Client giữ độc quyền (proprietary) Trong loại ứng dụng này thì chương trình máy khách lẫn máy chủ đều không cần phải phù hợp với bất cứ RFC nào Một nhà phát triển đơn lẻ có thể tạo ra cả hai chương trình Client và Server, và nhà phát triển này hoàn toàn điều khiển tất cả những gì có trong mã lập trình Nhưng bởi vì mã lập trình không được
Trang 24hiện thực trên giao thức chuẩn, nên những nhà phát triển độc lập khác sẽ không thể nào phát triển mã để có thể tương thích với ứng dụng này Khi phát triển một ứng dụng kiểu này, những nhà phát triển phải chú ý để không sử dụng những cổng thông dụng đã được định nghĩa trong các RFC
Trong phần kế tiếp ta sẽ nghiên cứu những điểm mấu chốt để phát triển một ứng dụng Client-Server giữ độc quyền Trong quá trình phát triển, một trong những quyết định quan trọng mà nhà phát triển cần phải làm là ứng dụng sẽ chạy trên TCP hay trên UDP
- TCP là từ viết tắt của "Transmission Control Protocol" tạm dịch
là Cách thức điều khiển truyền TCP phụ trách việc truyền và nhận dữ liệu, giao thức này có định hướng kết nối (connection-oriented) , TCP giúp cho lớp ứng dụng (Application layer) sử dụng lớp IP (Internet Protocol, tạm dịch Giao thức liên mạng) một cách trong suốt Điều này có nghĩa là lớp ứng dụng không cần biết đến phần cứng sẽ làm việc gì, ra sao, mà chỉ cần quan tâm đến việc xử lý dữ liệu của riêng mình
TCP cũng đảm trách việc nhận đúng dữ liệu và gửi dữ liệu
đó đến đúng chương trình cần nhận TCP còn có chức năng kiểm tra và sửa lỗi thông qua việc đồng bộ hoá (synchronize) thông tin 2 đầu truyền dữ liệu và lời nhận biết (acknowledgement) từ phía nhận dữ liệu, do đó dữ liệu truyền trên giao thức này đảm bảo chính xác, nhược điểm của giao thức này là chậm hơn UDP
Hình 1.14: Giao thức TCP/IP
Trang 25- UDP là chữ viết tắt của "User Datagram Protocol" đây là một giao thức không đòi hỏi kết nối trước và gởi đi những gói dữ liệu độc lập từ hệ thống này đến hệ thống kia, mà không hề bảo đảm
dữ liệu có được nhận đầy đủ hay không Ưu điểm của giao thức này là tốc độ truyền nhanh, nhưng dữ liệu thì không được đảm bảo
Thứ hai, những chương trình Client-Server lập trình bằng Java đã gia tăng ngày càng thông dụng, và nó có thể trở thành tiêu chuẩn cho lập trình mạng trong vài năm tới Java
có cơ chể bẫy lỗi rất linh hoạt mà có thể giải quyết hầu hết các lỗi xảy ra trong quá trình xuất/nhập và những hoạt động mạng, và khả năng phân luồng (thread) mạnh cung cấp những phương pháp đơn giản để hiện thực những Server mạnh mẽ
Thứ ba, JAVA là một ngôn ngữ độc lập có thể hỗ trợ và thích hợp trên nhiều hệ điều hành khác nhau
Trang 261.4.2 Lập trình Socket với TCP
Ta đã biết rằng những tiến trình chạy trên những máy khác nhau
có thể liên lạc với nhau bằng cách gởi những thông điệp đến socket Chúng ta có thể nói một cách đơn giản rằng mỗi một tiến trình thì tương
tự như một căn nhà và socket của tiến trình đó thì tương tự như là cánh cửa nhà Có thể nói socket là cánh cửa giữa tiến trình ứng dụng (Application Process) và TCP Những nhà phát triển ứng dụng có thể kiểm soát mọi thứ bên phía lớp Application của Socket
Bây giờ ta hãy xét kĩ hơn sự tương tác giữa chương trình Client
và chương trình Server Máy khách Client phải có nhiệm vụ khởi tạo sự giao tiếp với Server Để Server có thể trả lời lại sự giao tiếp ban đầu này thì Server cũng phải luôn luôn sẳn sàng Điều này bao gồm 2 yếu tố Đầu tiên, chương trình bên Server phải đang hoạt động, nó phải đang chạy như một tiến trình trước khi máy khách tiến hành sự giao tiếp đầu tiên Thứ hai, chương trình bên server phải có sẳn một số cổng (port) để có thể tiếp đón (welcome) những giao tiếp khởi tạo từ bên phía client Sử dụng
sự tương tự như căn nhà/cánh cửa đối với process/socket như đã nói ở trên thì ta có thể xem như sự khởi tạo giao tiếp đầu tiên bên phía Client như là một sự gõ cửa
Khi một tiến trình (process) bên Server đang chạy, một tiến trình bên Client có thể khởi tạo nên một TCP connection Điều này được thực thi bên chương trình máy client bằng cách tạo ra một đối tượng socket (ta gọi nó là clientSocket) Khi một máy khách tạo ra một đối tượng socket thì nó sẽ chỉ đến địa chỉ của tiến trình máy chủ, theo cách gọi tên, thì đó là địa chỉ IP của máy Server Và cùng lúc tạo ra đối tượng clientSocket thì TCP ở client thiết lập kết nối qua Three-way handshake
và thiết lập một TCP connection với server Three-way handshake này thì hoàn toàn ẩn giấu với cả chương trình server lẫn chương trình client
Trong suốt quá trình three-way handshake, tiến trình bên máy khách sẽ “gõ vào cổng” của tiến trình máy chủ Khi Server nhận được sự
gõ cửa này, nó sẽ tạo ra một cánh cửa mới (thật ra là một socket mới) để
Trang 27mà phục vụ cho từng client chuyên biệt Khi một máy khách gõ cửa, chương trình sẽ viện dẫn phương thức accept() của welcomeSocket, phương thức này sẽ tạo ra một socket khác cho client Vào cuối quá trình handshaking này thì một kết nối TCP sẽ được thiết lập giữa socket của client và một socket mới của server Từ đây trở về sau, ta sẽ gọi new socket này bằng tên gọi là “connection socket”
TCP connection đuợc xem như là một ống dẫn ảo giữa client’s socket và server's connection socket Lúc này, tiến trình bên máy khách
có thể gửi những byte tuỳ ý đến socket của nó, TCP bảo đảm rằng tiến trình bên server sẽ nhận (thông qua connection socket) mỗi byte theo trình tự đã gửi Hơn thế nữa, ngược lại tiến trình bên máy khách cũng có thể nhận byte từ socket của nó và tiến trình bên server cũng có thể gửi byte đến connection socket của nó
Bởi vì socket đóng một vai trò quan trọng trong những ứng dụng client-server, cho nên những ứng dụng client-server thường được gọi là socket programming Trước khi đi đến những vấn đề khác, ta sẽ nói về khái niệm luồng (stream) Theo nghĩa đen luồng là một dòng lưu chuyển Theo nghĩa kỹ thuật, một luồng là một lộ trình qua đó dữ liệu di chuyển
đi vào hay đi ra một tiến trình (process) Mỗi một luồng thì có thể là một luồng vào (input stream) hay là một luồng xuất (output stream) cho một tiến trình Nếu một luồng là luồng vào thì nó sẽ đính kèm với những nguồn vào của một tiến trình, ví dụ như là một công cụ nhập chuẩn (keyboard) hoặc một socket mà dữ liệu đi vào nó từ network Nếu một luồng là luồng xuất, thì nó sẽ được đính kèm với một vài nguồn xuất của tiến trình, ví dụ như là một công cụ xuất chuẩn (màn hình) hoặc một socket mà đi ra từ nó dữ liệu sẽ đi vào network
1.5 Tiểu kết
Trên đây chúng ta đã tìm hiểu sơ lược về lập trình socket bằng ngôn ngữ JAVA và cấu trúc cũng như cách điều khiển cổng song song và cổng USB trên máy tính
Trang 28Từ đó chúng ta có được sự hiểu biết về cổng song song, cổng USB và cách thức giao tiếp của các socket với nhau Dựa vào đó chúng ta tiếp tục xây dựng công cụ điều khiển thiết bị từ xa qua mạng TCP/IP
Hình 1.16: Kết nối Server –Client
Trang 29CHƯƠNG 2: ĐIỀU KHIỂN THIẾT BỊ QUA MẠNG TCP/IP
2.1 Điều khiển cổng LPT
2.1.1 Cách thức điều khiển cổng LPT
Sử dụng thư viện jnpout32pkg.dll Đây là một thư viện để giao tiếp với cổng LPT trên máy tính thông qua port của chính nó
Trong thư viện này chứa hai function quan trọng dùng để sử dụng trong công cụ này:
1) Inp32(),hàm dùng để đọc dữ liệu từ cổng LPT 2) Out32(),hàm dùng để ghi dữ liệu ra cổng LPT
*Sơ lược về thư viện này:
Đây là một phiên bản sửa đổi từ phiên bản inpout32.dll, để phù hợp hơn khi sử dụng JNI (Java Native Interface)
Bản thân ngôn ngữ Java không tự gọi được các hàm viết bằng các ngôn ngữ lập trình khác Vì thế, trong Java Platform có cung cấp Java Native Interface (JNI) cho phép tích hợp chương trình viết bằng Java với những services được tạo ra trên nền tảng khác JNI định nghĩa các chuẩn đặt tên và cách thức gọi hàm tích hợp trong JVM
2.1.2 Thiết kế mạch giao tiếp cổng LPT với thiết bị
Bước 1: Chuẩn bị các linh kiện sau:
Trang 30Hình 2.1: Đèn LED
Hình 2.2: Bảng mạch