User Tag List

+ Trả lời chủ đề
Trang 1/3 123 CuốiCuối
Hiện kết quả từ 1 tới 10 của 23

Chủ đề: Lập trình VB

  1. #1
    hoangminh
    Guest
    Tôi đang cần viết một chương trình đọc dữ liệu từ cổng parallel trong Visual Basic ma không biết lệnh gì để đọc cổng.
    Có ai biết tí gì thì giúp tôi với :lol:

    Tôi xin cảm ơn lắm lắm :lol:

  2. #2
    thedeath
    Guest

    Mặc định

    Xem Assembly va coi co nhu/ng vao VB duoc khong?

  3. #3
    spinx
    Guest

    Mặc định

    Nhúng assembly vào vb cũng được nhưng ko cần tới mức ấy đâu. Có thể viết 1 dll nhỏ bằng C rồi gọi từ vb. Tôi có 1 dll để đọc/ghi cổng parallel có thể gọi được từ vb. Nếu thích tôi sẽ gửi cho. Còn nếu muốn nhúng assembly tôi chỉ có thể giúp về cách nhúng thôi.



    <!--EDIT|spinx|Nov 2 2002, 12:15 PM-->

  4. #4
    thedeath
    Guest

    Mặc định

    Chỉ đọc thôi thì chưa đủ. Viết dll bằng C, dùng 2 lệnh inportb và outportb để thực hiện xuất nhập dữ liệu. Dữ liệu xuất có thể là data hoặc op code (mã lệnh). parallel port có 3 chế độ hoạt động và 3 cổng vào ra, nhưng nếu tự viết phần giao tiếp bằng Frame thì xài mode 0 được rồi. Để biết cách viết mã lệnh, có thể xem tài liệu về vi xử lý của chip 8255.

    Nếu OS không cho phép truy cập tài nguyên trực tiếp thì 2 lệnh này dùng không đươc. Tốt nhất xem MSDN để xem VB có hộ trợ lệnh nào tương tự khộng Nếu không phải dùng API của OS và gọi từ VB. Chắc chắn API phải hộ trợ 2 hàm tương tư. Mình không thể chỉ chi tiết hơn được vì mình không dùng API





    <!--EDIT|thedeath|Nov 2 2002, 116 AM-->

  5. #5
    spinx
    Guest

    Mặc định

    Đúng như thedeath nói đấy, làm ddocj/ghi cổng parallel không khó nhưng khó ở chỗ OS không cho làm. Win95/98 vẫn dùng được nhưng WinNT không chấp nhận nữa. Tôi không tin trong thư viện API có thể có hàm tương đương đâu.

  6. #6
    thedeath
    Guest
    API có vài nghìn hàm, ai rảnh đâu mà chứng minh. Bác nào đề ra bài này thì cứ tiến hành thử.

  7. #7
    spinx
    Guest

    Mặc định

    Originally posted by thedeath@Nov 6 2002, 10:08 PM
    API có vài nghìn hàm, ai rảnh đâu mà chứng minh. Bác nào đề ra bài này thì cứ tiến hành thử.
    Ờ, tôi cũng chẳng biết mà cũng chẳng định nhờ bác chứng minh (mò trong đống API làm gì cho khổ) nhưng ko tin vì theo suy luận thì microsoft chặn thao tác ghi trực tiếp còn nhằm ả mục đích security nữa mà, vì vậy nếu họ lại tạo một thao tác tương tự bằng API thì cũng hơi kỳ. Bác nào đề ra bài này muốn thì cứ thử thôi

  8. #8
    thedeath
    Guest
    Còn theo suy luận của tui thì phải có. Truy xuất trực tiếp với gọi API rất khác nhau.

    Khi ta gọi API, OS "biết" ta đang dùng tài nguyên. Việc biết này rất quan trọng vì các OS sau này hộ trợ multitasking và đôi khi cả prallel processing. Do đó nó cần biết để phân chia hợp lý tài nguyên (giải quyết tranh chấp). Cứ thử nghĩ nếu có 2 thread (hiểu là process, task cũng được) chạy concurrent hoặc prallel mà cùng truy xuất parallel port xem, lúc này thằng tới sau bị OS bắt chờ vì thằng khác đang xài. Nếu ta cho truy xuất trực tiếp, cả 2 thằng cùng xuất dữ liệu ra prallel port thì tiêu rồi còn gì. Ví dụ minh họa: ta in liên tục 2 văn bản bằng word chẳng hạn

    Trong các OS lọai này, luôn có ít nhất 2 process hay thread cùng chạy (có thể là switch qua lại hoặc prallel): 1 là phần quản trị tài nguyên và các process của OS, và cái kia là ứng dụng của ta. Phần quản trị làm việc phân chia thời gian chạy, tài nguyên và chuyển đổi qua lại giữa các process con (bao gồm cả các ứng dụng).

    DOS cho phép truy xuất trực tiếp vì nó là single task. Chương trình ta đang chạy là duy nhất. Khi thóat thì có lệnh máy RET để thức OS dậy. Do đó OS chả cần biết ta dùng tài nguyên ra sao.

    Do đó các lệnh truy xuất thiết bị ngọai vi nếu có trong các ngôn ngữ lập trình trong môi trường WINDOW thực chất cũng là gọi các API này, ví dụ như VC++,VB.

    Riêng WIN95/98 vẫn cho truy xuất trực tiếp là do lỗi bảo mật, chính lỗi này làm ta bị treo máy dù cho ta có end task trong task manager(nhấn Ctrl-Alt-Del). Lỗi này đã được sửa trong các thế hệ sau như win2000, winNT, winXP và mỗi process thực sự chỉ được sử dụng tài nguyên trong phạm vi của nó, do đó ta chỉ cần end task các process bị treo và phục hồi họat động cho hệ thống.

  9. #9
    spinx
    Guest

    Mặc định

    Có thể bác đúng nhưng tui vẫn chưa tin đâu.

    Hầu hết các lệnh API đều chỉ cung cấp các thao tác truy xuất để điều khiển các thiết bị đã xác định. Ví dụ thao tác ra cổng parallel thì ta chỉ được cung cấp các lệnh đặt cho các thiết bị nối với cổng parallel như máy in, ổ đĩa ngoài... Còn thao tác tới cổng trực tiếp thì không có trong API mà thuộc mức thấp hơn do các driver thiết bị của hệ điều hành đảm nhiệm. Vì vậy theo logic, để viết một chương trình có thể đọc một thiết bị mới (của riêng mình) ta sẽ phải viết theo khuôn dạng driver (sys) cài đặt và khai báo với OS "tôi là driver" để OS có cách đối xử riêng. Vì driver có nhiều khả năng thao tác hệ thống hơn nên khi một driver viết lỗi vẫn có thể dễ dàng làm dump OS kể cả WinNT, Win2K hay WinXP.

    Tất cả các thao tác truy nhập trực tiếp "chưa xin phép" đều không hợp lệ. Việc này đúng là được thực hiện tốt hơn ở NT, Win2k, và XP. Chính vì vậy tôi vẫn không tin ở mức API các bác có thể tìm thấy các thao tác trực tiếp tới parallel port. Mà cũng chính vì hạn chế không cho phép truy xuất trực tiếp tới thiết bị nên nảy sinh yêu cầu cần truy nhập nhanh đồ họa/âm thanh cho các game (thực hiện dễ dàng trên DOS) nên mới có directX đấy

  10. #10
    hoangminh
    Guest

    Thôi xin 2 bac
    Ham API tôi đã xem rồi, không có cái nào hỗ trợ đọc trwcj tiếp parallel đâu
    Chi có độ hơn tá hàm đọc dữ liệu từ máy in thôi mà tôi thì không cần bọn
    nó.
    Tui muốn đọc trực tiếp dữ liệ từ một phần cứng của tôi nên API không giúp gì được.
    :puppy_dog)

+ Trả lời chủ đề
Trang 1/3 123 CuốiCuối

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube