Thông báo

Collapse
No announcement yet.

Thảo luận về Embedded Web Sever ...

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Thảo luận về Embedded Web Sever ...

    Chào các bạn,

    Hiện tại do yêu cầu công việc nên mình phải thực hiện một project gọi nôm na là "điều khiển ngoại vi thông qua web trên board ARM9". Tuy nhiên mình đang gặp phải một số khó khăn khi thực hiện nên rất mong những bạn nào quan tâm cho mình biết ý kiến nhé. Đây là tóm tắt công việc của mình:
    - Board nhúng: ARM9 (chip AT91SAM9260), hệ điều hành Debian, web server là apache2, ngoại vi có sẵn Ethernet, USB, UART,...
    - Máy tính PC dùng để truy cập vào Board ARM
    - Yêu cầu: từ PC điều khiển đèn LED của board ARM đóng/ tắt thông qua 1 trang web. PC và target board kết nối với nhau thông qua mạng LAN.
    Mình đã tiến hành cài đặt thành công web server, và đã test được trang web trên board từ máy tính PC. Nhưng đến bước viết chương trình điều khiển đóng/ tắt LED thì đành chịu. Vậy nhờ các bạn tư vấn:
    1. Làm thế nào để từ web HTML có thể điều khiển được ngoại vi của board ? Có phải là ta sẽ phải viết hàm xử lý cho phương thức GET và POST HTML ko ? và CGI-BIN có nhiệm vụ nhận và xử lý các hàm này ?
    2. Trong linux nói chung, Debian nói riêng thì viết chương trình điều khiển ngoại vi như thế nào ? hàm điều khiển này có sẵn hay ta phải tự tạo ?
    3. Sử dụng ngôn ngữ nào (C, Java,...) là tốt nhất trong trường hợp này ?
    4. Có web server nào nhỏ, gọn hơn apache mà vẫn đáp ứng được yêu cầu trên ko ?

    Cám ơn các bạn và mong được giúp đỡ !

    P.S: Mình viết hơi dài dòng, nhưng cái project của mình thì khá giống với hướng dẫn của ông này: http://www.lvr.com/devicecontroller.htm

  • #2
    Bạn có thể giải quyết vấn đề theo nhiều cách
    1. HTML ko thể xử lý Request GET/POST cũng như tương tác với hệ thống, do đó bạn cần CGI hoặc Java Servlet để làm việc này.
    2. Để điều khiển ngoại vi yêu cầu bạn phải viết Device Driver cho nó, chương trình(CGI/Servlet) sẽ gởi lệnh điều khiển thông qua driver này.
    3. Tùy Web Server của bạn hỗ trợ CGI hay Java Servlet
    4. Bạn có thể cài đặt thttpd hoặc shttpd, Web Server này rất nhỏ gọn và hỗ trợ CGI.

    Chúc bạn sớm thành công với project.

    Regards,

    Email:
    Phone: 0905.034.086

    Comment


    • #3
      Nguyên văn bởi cskiller Xem bài viết
      Bạn có thể giải quyết vấn đề theo nhiều cách

      2. Để điều khiển ngoại vi yêu cầu bạn phải viết Device Driver cho nó, chương trình(CGI/Servlet) sẽ gởi lệnh điều khiển thông qua driver này.
      Cảm ơn bạn CSKILLER rất nhiều ! Câu trả lời của bạn đã giúp mình hiểu thêm nhiều điều. Tuy nhiên, mình vẫn thắc mắc ở vấn đề số 2. Đó là, cách thức mà CGI/ Servlet điều khiển Device Driver như thế nào ? Thông qua hàm nào trong Linux ? Những hàm này có sẵn hay do mình tự phát triển ? Đây là chỗ mà mình chưa hiểu rõ nhất ! Nếu bạn có tài liệu hay trang web giải thích thêm về khía cạnh này thì cho mình biết với nhé !

      Chân thành cám ơn !

      Comment


      • #4
        Bạn có thể tham khảo làm thế nào để viết và sử dụng Linux Device Driver: http://lwn.net/Kernel/LDD3/

        Regards,

        Email:
        Phone: 0905.034.086

        Comment


        • #5
          Theo mình nghĩ thì apache + PHP có hỗ trợ khả năng điều khiển ngoại vi pc. Bạn nghiên cứu hung này xem. Vừa hôm trước mình tìm thấy một hãng của Mỹ Chuyên về giải pháp loại này và hãng đó có sx chip tích hợp web server nên ứng dụng sẽ rất tiện và nhanh. Bạn thử search giải pháp kiểu này xem.

          Comment


          • #6
            Mình nghĩ bạn thử dùng cái này xem.
            http://www.goahead.com/products/webserver/default.aspx

            Comment


            • #7
              chào bạn!!! mình cũng đang làm đồ án tốt nghiệp về ARM7TDMI để đo nhiệt độ, độ ẩm môi trường và hiển thị lên Web server. hiện tại thì mình cũng chưa hiểu rõ lắm, mình đang tìm tài liệu về CGI nhưng ít quá, bạn có thể send cho mình được không???
              bạn send cho mình qua gmail này nhé thuquynh89@gmail.com . cảm ơn bạn rất nhiều

              Comment


              • #8
                bản chất CGI là 1 chương trình ( viết bằng C hoặc script language( shell,perl, python...) với input là parameter nhận được từ GET hoặc POST và output là html để hiển thị.

                quy trình chạy như sau:
                webclient -> call cgi(get/post) -> cgi process -> html document

                ví dụ cụ thể
                ta có 1 trang web có forrm như sau:
                <form action="http://www.example.com/phepnhan.cgi">
                <div><label>Toán tử 1: <input name="m" size="5"></label></div>
                <div><label>Toán tử 2: <input name="n" size="5"></label></div>
                <div><input type="submit" value="Nhân!"></div>
                </form>

                khi nhập giá trị vào toán tử 1 va toán tử 2 (giả sử là 5 và 2) rồi bấm nút nhân thì nó sẽ gọi vào
                "http://www.example.com/phepnhan.cgi?m=5&n=2"
                thì webserver sẽ gọi vào cgi tên là phepnhan.cgivới phương thức GET parameter là m=5 và n=2

                chương trình CGI đơn giản như sau:

                phepnhan.c
                Code:
                #include <stdio.h>
                #include <stdlib.h>
                int main(void)
                {
                char *data;
                long m,n;
                printf("%s%c%c\n",
                "Content-Type:text/html;charset=iso-8859-1",13,10);
                printf("<TITLE>Ket qua phep nhan</TITLE>\n");
                printf("<H3>Multiplication results</H3>\n");
                data = getenv("QUERY_STRING");  // phan nay se lay du lieu theo phuong thuc GET sau dau ? tu trinh duyet data="m=5&n=2"
                if(data == NULL)
                  printf("<P>Khong the lay du lieu.");
                else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2) // lay gia tri cua m va n
                  printf("<P>Du lieu truyen vao phai la so.");
                else
                  printf("<P>Ket qua cua %ld nhan voi %ld la %ld.",m,n,m*n);// phap nay se in ket qua ra trinh duyet
                return 0;
                }
                dich chương trình bằng gcc -o phepnhan.cgi phepnhan.c
                de file vua dich duoc vao cung thu muc voi trang cua ban tren webserver va chay.

                done!

                Trong truong hop bai toan cua ban thi thay input bang gia tri cua button ON/OFF
                thay phần xử lý phep nhân bằng phần của bạn là được
                ~> quay về lập trình C hoặc scripting đơn giản

                Have fun.

                Comment

                Về tác giả

                Collapse

                cunconvisl Tìm hiểu thêm về cunconvisl

                Bài viết mới nhất

                Collapse

                Đang tải...
                X