Trang 2 / 2 FirstFirst 12
Hiển thị kết quả từ 11 đến 14 / 14
  1. #11
    Tham gia
    19-06-2003
    Location
    Hanoi
    Bài viết
    21
    Like
    0
    Thanked 0 Times in 0 Posts
    Xin chào PDA,

    Sao cậu chẳng để lại chút gì trong thông tin cá nhân của cậu ngoài cái tên PDA. Tớ mới chỉ biết MS DOS thôi, nay muốn học Linux thì bắt đầu như thế nào?

  2. #12
    Tham gia
    25-07-2003
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    Sau khi đọc kỹ bài của bạn, mình có ý kiến sau( vì bạn sử dụng DOS only).

    Thứ Nhất: - Hàm xử lý ngắt phải tính toán khá nhiều nên dẫn đến bỏ sót dữ liệu hoặc thậm trí treo máy (có lẽ là lại xuất hiện ngắt trong khi vẫn đang chạy chương trình xử lý ngắt).

    ==> Đây là một lỗi cơ bản rất lớn. Hàm xử lý ngắt phải xử lý thật nhanh và trả lại resource lại ngay lập tức.
    ==> Hướng giải quyết: Hàm xử lý ngắt chỉ dùng để cập nhật dữ liệu mới (KHÔNG NÊN CÓ TÍNH TOÁN KHÁ NHIỀU).

    Ví dụ Bạn hãy có những data sau:
    databuffer[1025]: storing data reading from A/D board.
    int buffer_in_Index = 0; //keep track the growing of array databuffer
    int buffer_out_Index = 0;//keep track data bạn đã xử lý.

    //Hàm xử lý ngắt:
    Interrupt()
    {
    //add new data to databuffer
    databuffer[buffer_in_Index++] = new data reading from A/D card;
    if (buffer_in_Index == 1025) buffer_in_Index = 0;
    }

    //Main Program
    void main()
    {
    ....................;
    while (1)//forever loop
    {
    if (buffer_out_Index != buffer_in_Index)//khi có new data in
    {
    DATAXULY =databuffer[buffer_out_Index++];
    if (buffer_out_Index = 1025) buffer_out_Index = 0;

    //Tính toán DATAXULY
    ...................................
    }//end of if
    }//end of while
    }


    Với cách này thì có thể bạn không xử lý the current data(buffer_in_Index) (not realtime), vì bạn xử lý data cũ (buffer_out-Index). Tuy vậy realtime cũng chỉ tương đối thôi, tùy yêu cầu của application của bạn.

    Thứ hai: Sao cậu chẳng để lại chút gì trong thông tin cá nhân của cậu ngoài cái tên PDA. Tớ mới chỉ biết MS DOS thôi, nay muốn học Linux thì bắt đầu như thế nào?

    Mình hiện sống tại Mỹ. Lâu nay muốn tìm các diễn đàn tại VN để trao đổi thông tin. Mình biết được diễn đàn này là qua vnoczone.com. Có điều là diễn đàn đó không có lịch sự cho lắm, hình như không phải là dân kỹ thuật (phần lớn là mới học 12 hoặc đang học đại học thôi) nên ăn nói bất lịch sự.

    Mình mới đăng ký diendantinhoc, thấy bên này có nhiều dân kỹ thuật, ăn nói có học hơn.

    Bạn biết DOS nên học Linux sẽ không khó. Tôi biết có quyển sách rất hay cho người mới học Linux + Programming in Linux. Đó là quyển "Begin Linux Programming" Tác giả là NEIL MATTHEW & RICHARD STONES của nhà xuất bản WROX PRESS. Không biết có ai đã dịch sang tiếng Viet chưa.
    ==> Nó sẽ giải quết được câu hỏi của bạn là: "Vì tớ không thông thạo lắm nên muốn hỏi có cách nào để hàm xử lý ngắt(Interupt routine) gọi 1 hàm khác, truyền 1 số biến cho hàm này, rổi tự nó kết thúc trong khi hàm kia vẫn thực hiện chức năng của nó."
    ==> Bạn đọc chapter 10: "Processes and Signals". Mà function quan trọng là fork() để tạo ra new process.
    ==> DOS không thể giải quyết được yêu cầu này ==> DOS đang giẫy chết (???)

  3. #13
    Tham gia
    19-06-2003
    Location
    Hanoi
    Bài viết
    21
    Like
    0
    Thanked 0 Times in 0 Posts
    PDA,

    Nếu tớ muốn học hỏi thêm ở cậu thì có được không? Cậu có thể cho tớ 1 email để nếu có thể tớ sẽ nhờ cậu giúp đỡ.

    Cám ơn cậu.

  4. #14
    Tham gia
    25-07-2003
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts
    Tuancdc,
    bạn có thể email cho mình tại bngo@cse.unl.edu

    Mong là mình cũng sẽ học được từ bạn.

Trang 2 / 2 FirstFirst 12

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •