VicoTas
Câu hỏi
Lê Thị Hoa Hồng hoahong
26/04/2013 21:03

Giúp mình viết chương trình điều khiển thiết bị điện thông qua cổng máy in?

Tôi muốn viết chương trình điều khiển thiết bị điện thông qua cổng máy in. Xin cho biết có thể dùng hàm gì trong Visual Basic hoặc Visual C++ để thực hiện việc này?

Danh sách câu trả lời (1)
Xuân Trọng xuantrong 26/04/2013 21:03
Thường để lập trình truy xuất trực tiếp 1 thiết bị I/O (thí dụ card giao tiếp với máy in), bạn cần nắm vững 3 thông tin sau:
o Tất cả các thanh ghi của card giao tiếp mỗi thanh được truy xuất thông qua 1 địa chỉ I/O mà ta thường gọi là cổng I/O (I/O port). Có thể có các loại thanh ghi sau trên 1 card giao tiếp: thanh ghi chứa dữ liệu nhập, thanh ghi chứa dữ liệu xuất, thanh ghi lệnh và thanh ghi trạng thái làm việc. Thường các thanh ghi của LPT1 có địa chỉ từ 0x378 đến 0x37F (số hexadecimal).
o Các đường ngắt (interrupt) được dùng bởi card giao tiếp, mỗi đường ngắt sẽ nhờ CPU chạy 1 thủ tục phục vụ ngắt độc lập. Thường cổng LPT1 dùng đường ngắt số 7 (IRQ7) để giao tiếp máy in.
o Các kênh DMA (Direct Memory Access) được dùng bởi card giao tiếp để phục vụ trao đổi dữ liệu nhanh giữa bộ nhớ RAM và thiết bị I/O. Thường chỉ những card I/O cần đọc/ghi dữ liệu lớn và nhanh mới dùng tới khả năng DMA (card giao tiếp đĩa cứng, CDROM...).

Tuy nhiên trong Windows, việc lập trình I/O trực tiếp nên được viết trong các module đặc biệt (các device driver) thỏa mãn những qui định và cấu trúc do Windows xác lập để đảm bảo tính tin cậy, ổn định, an toàn và giải quyết được việc dùng chung bởi nhiều ứng dụng đồng thời. Chính vì lý do này, các thư viện lập trình ngôn ngữ (ngay cả của ngôn ngữ C) chỉ cung cấp một số hàm nhỏ để truy xuất các thanh ghi của card giao tiếp, thí dụ như hàm _outp(), _intp() và các biến thể của chúng, còn việc khai báo thủ tục ngắt và quản lý kênh DMA thì không được nhắc đến ở cấp ứng dụng. Tóm lại nếu bạn chỉ dừng lại ở mức truy xuất các thanh ghi I/O của card giao tiếp máy in, bạn có thể dùng các hàm _intp() và _outp() của thư viện ngôn ngữ C hay C++. Nếu viết ứng dụng bằng VB, bạn có thể tạo 1 thư viện *.dll chứa các hàm truy xuất bằng ngôn ngữ C để ứng dụng VB gọi vào. Lưu ý rằng cách giải quyết này (gọi hàm _intp() và _outp()) chỉ có thể chạy trên Win9x và WinMe nhưng không chạy được trên WinNT, Win2000 và WinXP. Cách chính quy và triệt để nhất là nghiên cứu bộ DDK (Device Development Kit) của Windows để viết các device driver thích hợp.
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
Chip chip VB 6.0 có thể lập trình điều khiển phần cứng (lập trình hệ thống) được không? Tài liệu có thể tìm ở đâu?

Đăng lúc: 21:03 - 26/04/2013 trong Lập trình

MrTien Có ActiveX Control nào thực hiện nhận diện chữ viết từ ảnh bitmap rồi phát âm ra loa không?

Đăng lúc: 21:03 - 26/04/2013 trong Lập trình

Vinh Các chương trình như Winamp... có các ‘skin’ khác nhau, làm sao tạo được chúng? Có phần mềm nào lập trình các giao diện khác?

Đăng lúc: 21:03 - 26/04/2013 trong Lập trình

NgocUk Xin hỏi muốn sử dụng hình ảnh cho checkbox và Option Button thì phải làm sao?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Củ Chuối Em đang học Visual Basic và muốn viết một chương trình xem ảnh?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

MrTien Khi biên dịch file EXE hoặc Run chương trình được viết bằng Visual Basic 6.0 thì hiện thông báo lỗi: “Run-time error 7. Out of Memory”?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Hương Tôi muốn có chương trình dịch ngược Visual FoxPro 6.0 với mục đích học tập. ? Bạn nào có giúp mình?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Uk Xin cho biết cách lập trình Visual Basic để gởi e-mail?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

lighting Tôi lập trình bằng Access 97 và muốn hiển thị văn bản độ dài từ hai trang trở lên? Phải làm thế nào?

Đăng lúc: 23:33 - 26/06/2013 trong Lập trình

Ngô Minh Tùng Tôi viết 1 chương trình xem ảnh bằng Visual Basic nhưng không biết cách nào để mỗi khi nhấn đúp vào 1 file ảnh trên Windows Explorer?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

nophoto Làm thế nào để nhận biết 1 file là dạng Image, Text hoặc Audio... trong Visual Basic hoặc API?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Phương Có hàm API nào trong Visual Basic cho phép/cấm từng user truy xuất file không ?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Hương Mình đang học lập trình, muốn tìm hiểu chương trình chuyển đổi file *.jpg thành file *.bmp bằng ngôn ngữ Pascal? Cảm ơn nhìu!.

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

nophoto Xin hướng dẫn cách thức lập trình trong Visual Basic để khi di chuyển chuột gần các button hay nhấn vào đó thì chúng đổi màu ?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Hoài Nam (Nam Tước) Nếu có 1 bản đồ dạng bitmap, trên bản đồ có nhiều con đường, làm cách nào để biết đang rê chuột qua con đường nào?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

nophoto Tôi muốn tìm một vài mã nguồn chương trình trò chơi nhỏ viết bằng C, Pascal để nghiên cứu? Bạn nào có cho mình nhé?

Đăng lúc: 21:02 - 26/04/2013 trong Lập trình

Uk Tôi muốn phát triển các ứng dụng theo Java, nhưng hiện nay có quá nhiều lời không hay về Java?

Đăng lúc: 21:01 - 26/04/2013 trong Lập trình

nophoto Trong Visual Basic6.0, làm cách nào để có được dòng chữ tô đậm trong Textbox hay RichTextbox ?

Đăng lúc: 21:01 - 26/04/2013 trong Lập trình

Xuân Trọng Xin hỏi về PowerPoint?

Đăng lúc: 21:01 - 26/04/2013 trong Lập trình

nophoto Xin hỏi cách dùng QT Designer để dịch ứng dụng chỉ có file source (*.cpp) mà không có file project *.pro?

Đăng lúc: 21:01 - 26/04/2013 trong Lập trình

Rao vặt Siêu Vip